K8S的部署安装

1.设置固定IP
   vi /etc/sysconfig/network-scripts/xxxx
       BOOTPROTO="static"
       IPADDR="192.168.18.128"
       GATEWAY="192.168.18.2"
       DNS1="8.8.8.8"
       DNS2="8.8.4.4"

2. 替换yum 仓库  /etc/yum.repos.d/
   使用附件中的CentOS-Base.repo 替换
   加入docker-ce.repo和kubernetes.repo
   
   执行下列命令
   yum clean all
   yum makecache
  
3.设置时区并同步时间
    timedatectl set-timezone Asia/Shanghai
    ntpdate time.windows.com


4.设置hostname
    hostnamectl set-hostname k8s-master
    hostnamectl set-hostname k8s-node1
    hostnamectl set-hostname k8s-node2
    
    
5.修改hosts    vi /etc/hosts
   192.168.18.128   k8s-master
   192.168.18.129   k8s-node1
   192.168.18.130   k8s-node2
   
   

6.关闭防火墙
   systemctl stop firewalld
   systemctl enable firewalld
   

7. 禁用SELinux和关闭swap
   setenforce 0
   sed -i 's/enforcing/disabled/' /etc/selinux/config 
   #sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
   
   
   swapoff -a
   free
   sed -ri 's/.*swap.*/#&/' /etc/fstab
   
 
 
 8. 将桥接的IPv4流量传递到iptables的链,直接可以用附件文件替换
    cat > /etc/sysctl.d/k8s.conf << EOF
        net.bridge.bridge-nf-call-ip6tables = 1
        net.bridge.bridge-nf-call-iptables = 1
        net.ipv4.ip_forward = 1
        vm.swappiness = 0
        EOF
        
        
9. 加载br_netfilter模块(开启透明代理)
     modprobe br_netfilter
     
     #查看是否加载成功
    lsmod | grep br_netfilter
     
     sysctl --system  
     
    

10.开启ipvs
    #安装ipset和ipvsadm
    yum -y install ipset ipvsadm
    
    #执行脚本,直接可以用附件文件替换
        cat > /etc/sysconfig/modules/ipvs.modules <<EOF
        #!/bin/bash
        modprobe -- ip_vs
        modprobe -- ip_vs_rr
        modprobe -- ip_vs_wrr
        modprobe -- ip_vs_sh
        modprobe -- nf_conntrack_ipv4
        EOF
        
    #授权、运行、检查是否加载
    chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

    #检查是否加载
    lsmod | grep -e ipvs -e nf_conntrack_ipv4
    
    
    
11.安装container(老版本安装docker)

   # 安装containerd
    yum install -y containerd.io
    # 创建默认配置文件
    containerd config default > /etc/containerd/config.toml
    # 设置aliyun地址,不设置会连接不上
    sed -i "s#registry.k8s.io/pause#registry.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml
    # 设置驱动为systemd
    sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
    # 设置dicker地址为aliyun镜像地址
    vi /etc/containerd/config.toml
    # 文件内容为
    [plugins."io.containerd.grpc.v1.cri".registry]
     [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
       [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
         endpoint = ["https://8aj710su.mirror.aliyuncs.com" ,"https://registry-1.docker.io"]

    # 重启服务
    systemctl daemon-reload
    systemctl enable --now containerd
    systemctl restart containerd
    
    
    
12.安装kubelet kubeadm kubectl 和crictl工具
    # 安装crictl工具
    yum install -y cri-tools
    
    # 生成配置文件
    crictl config runtime-endpoint
    # 编辑配置文件
    cat << EOF | tee /etc/crictl.yaml
    runtime-endpoint: "unix:///run/containerd/containerd.sock"
    image-endpoint: "unix:///run/containerd/containerd.sock"
    timeout: 10
    debug: false
    pull-image-on-create: false
    disable-pull-on-run: false
    EOF
    
    yum install -y kubelet-1.25.7 kubectl-1.25.7 kubeadm-1.25.7
    
    #启动kubelet
    systemctl enable kubelet && systemctl start kubelet
    
    #查看kubelet状态
    systemctl status kubelet
    
    
13.在master执行初始化(只在master上执行)
   kubeadm init --apiserver-advertise-address=192.168.18.128 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.26.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 
   
   


14.主节点上执行
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

15. 子节点上执行
    kubeadm join 192.168.18.128:6443 --token g5xt36.o3k393yzue1pe0sk --discovery-token-ca-cert-hash sha256:ec778e1f9cb4227ad4fcbde953de13aa58787dacc6abcc1fe6b2d90c9ffb524a
    


16.在master配置CNI
   kubectl apply -f ./kube-flannel.yml
   
   执行完后,可能安装得等4-5分钟,可在master节点查看所有pod的安装进度
   kubectl get pods -n kube-system
   
   #如果等待了很久都还是有pods 没有全部running,可以查看日志
    tail -200f  /var/log/messages 
   
   
17.测试
    kubectl get node
    kubectl get pods -n kube-system
    
    
    kubectl create deployment nginx --image=nginx
    kubectl expose deployment nginx --port=80 --type=NodePort
    kubectl get pod,svc

<think>我们被要求安装两个工具:Goldilocks 和 k8stools。Goldilocks 是一个用于 Kubernetes 资源请求和限制建议的工具,而 k8stools 可能是一个工具集合(需要进一步确认具体内容)。由于问题中提到了Goldilocks,并且引用[3]中提到了Goldilocks的使用,我们将重点放在Goldilocks的安装上。同时,k8stools可能指的是一个通用的工具集合,我们可以通过安装一些常用的Kubernetes工具来满足。 ### 安装Goldilocks Goldilocks通常通过Helm chart安装。以下是安装步骤: 1. 添加Goldilocks Helm仓库: ```bash helm repo add fairwinds-stable https://fairwindsops.github.io/charts helm repo update ``` 2. 安装Goldilocks: ```bash helm install goldilocks fairwinds-stable/goldilocks -n goldilocks --create-namespace ``` 3. 为需要监控的命名空间添加标签: ```bash kubectl label ns <your-namespace> goldilocks.fairwinds.com/enabled=true ``` 4. 访问Goldilocks Dashboard(可选): 默认情况下,Goldilocks会部署一个Dashboard服务。你可以通过端口转发访问: ```bash kubectl -n goldilocks port-forward svc/goldilocks-dashboard 8080:80 ``` 然后在浏览器中打开 http://localhost:8080。 ### 安装k8stoolsk8stools”并不是一个特定的工具,而可能是一组工具。根据常见的Kubernetes工具集,我们可以安装以下常用工具(根据需求选择): #### 通过kubectl插件管理器krew安装 1. 安装krew(kubectl插件管理器): ```bash ( set -x; cd "$(mktemp -d)" && OS="$(uname | tr '[:upper:]' '[:lower:]')" && ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && KREW="krew-${OS}_${ARCH}" && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" && tar zxvf "${KREW}.tar.gz" && ./"${KREW}" install krew ) ``` 2. 将krew添加到PATH(根据你的shell配置,例如在~/.bashrc或~/.zshrc中添加): ```bash export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH" ``` 3. 安装常用插件: ```bash kubectl krew install view-utilization # 查看资源利用率 kubectl krew install resource-capacity # 查看节点资源容量 kubectl krew install stern # 多Pod日志追踪 kubectl krew install ctx # 切换上下文 kubectl krew install ns # 切换命名空间 ``` #### 单独安装其他工具 - **k9s**(终端UI管理工具): ```bash # 使用brew(macOS) brew install k9s # 或使用二进制(Linux/macOS) curl -sS https://webinstall.dev/k9s | bash ``` - **popeye**(集群健康检查): ```bash brew install derailed/popeye/popeye ``` - **kubectx + kubens**(上下文和命名空间切换): ```bash brew install kubectx ``` ### 验证安装 - 验证Goldilocks: ```bash kubectl get pods -n goldilocks ``` 应该看到类似`goldilocks-controller-xxx`和`goldilocks-dashboard-xxx`的Pod。 - 验证k8stools(以krew为例): ```bash kubectl view-utilization ``` ### 注意事项 1. **权限问题**:确保你的kubeconfig有足够的权限在集群中创建资源。 2. **网络问题**:如果无法访问Helm仓库,请检查网络或使用代理。 3. **版本兼容性**:Goldilocks需要Kubernetes 1.16+。 ### 最佳实践 - 定期更新Helm仓库以获取最新版本:`helm repo update`。 - 使用命名空间隔离工具,如将Goldilocks安装在`goldilocks`命名空间。 - 对于生产环境,考虑使用更安全的配置(如TLS、认证)。 ### 相关问题 1. 如何配置Goldilocks监控多个命名空间? 2. 如何卸载Goldilocks? 3. k8stools中哪些工具对日常运维最有用? 4. 如何升级通过krew安装的插件? > 引用说明:在安装过程中,我们参考了Goldilocks官方文档的安装方式[^3],以及krew的安装说明(虽然未直接引用,但属于常见实践)。同时,在安装工具时,我们遵循了Kubernetes最佳实践,如使用命名空间隔离[^1]。 ### 卸载 - 卸载Goldilocks: ```bash helm uninstall goldilocks -n goldilocks kubectl delete ns goldilocks ``` - 卸载krew插件: ```bash kubectl krew uninstall <plugin-name> ``` ### 补充说明 如果“k8stools”指的是特定的工具集,请提供更多信息以便给出更精确的安装步骤。否则,上述步骤将安装一组常用的Kubernetes工具,满足大多数需求。</think>### 在 Kubernetes部署 Goldilocks 和 k8stools 工具集 #### 一、部署 Goldilocks Goldilocks 是 Kubernetes 资源优化工具,通过分析 Pod 历史使用数据提供资源请求/限制建议[^3]。 **安装步骤:** ```bash # 1. 添加 Helm 仓库 helm repo add fairwinds-stable https://fairwindsops.github.io/charts helm repo update # 2. 创建命名空间 kubectl create namespace goldilocks # 3. 安装 Goldilocks helm install goldilocks fairwinds-stable/goldilocks \ --namespace goldilocks \ --set dashboard.enabled=true \ --set dashboard.service.type=LoadBalancer # 4. 为需要监控的命名空间添加标签 kubectl label ns <your-namespace> goldilocks.fairwinds.com/enabled=true ``` **验证安装:** ```bash # 检查 Pod 状态 kubectl get pods -n goldilocks -l app.kubernetes.io/name=goldilocks # 获取 Dashboard 地址 echo "Dashboard URL: http://$(kubectl get svc -n goldilocks goldilocks-dashboard -o jsonpath='{.status.loadBalancer.ingress[0].ip}')" ``` **使用示例:** 1. 访问 Dashboard 查看资源建议 2. 根据建议更新 Deployment 资源限制: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: template: spec: containers: - name: my-app-container resources: limits: cpu: "0.8" # Goldilocks 建议值[^3] memory: "512Mi" requests: cpu: "0.6" memory: "400Mi" ``` #### 二、部署 k8stools 工具集 k8stoolsKubernetes 运维工具集合,包含常用 CLI 工具。 **安装方法(使用 krew 插件管理器):** ```bash # 1. 安装 krew (kubectl 插件管理器) ( set -x; cd "$(mktemp -d)" && OS="$(uname | tr '[:upper:]' '[:lower:]')" && ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && KREW="krew-${OS}_${ARCH}" && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" && tar zxvf "${KREW}.tar.gz" && ./"${KREW}" install krew ) # 2. 添加 krew 到 PATH export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH" # 3. 安装常用工具 kubectl krew install view-utilization # 资源利用率查看 kubectl krew install resource-capacity # 节点资源容量 kubectl krew install stern # 多 Pod 日志追踪 kubectl krew install access-matrix # RBAC 权限分析 ``` **核心工具功能:** | 工具名称 | 功能描述 | 使用示例 | |---------|---------|---------| | `view-utilization` | 集群资源利用率分析 | `kubectl view-utilization` | | `resource-capacity` | 节点资源分配情况 | `kubectl resource-capacity` | | `stern` | 多 Pod 日志聚合 | `kubectl stern -l app=nginx` | | `access-matrix` | RBAC 权限矩阵 | `kubectl access-matrix` | #### 三、集成监控与优化 1. **配置 Prometheus 监控** ```yaml # Goldilocks 监控配置示例 scrape_configs: - job_name: 'goldilocks' kubernetes_sd_configs: - role: service relabel_configs: - source_labels: [__meta_kubernetes_service_name] action: keep regex: goldilocks-dashboard ``` 2. **设置自动资源调整(结合 VPA)** ```bash # 安装 Vertical Pod Autoscaler helm install vpa \ stable/vertical-pod-autoscaler \ --namespace kube-system ``` #### 四、安全最佳实践 1. 限制 Goldilocks 权限 ```yaml # RBAC 配置 (values.yaml) rbac: create: true rules: - apiGroups: ["metrics.k8s.io"] resources: ["pods"] verbs: ["get", "list", "watch"] ``` 2. 启用网络策略隔离 ```yaml apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: goldilocks-policy spec: podSelector: matchLabels: app: goldilocks policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: goldilocks.fairwinds.com/enabled: "true" ``` #### 五、验证与维护 ```bash # 检查工具运行状态 kubectl get pods -n goldilocks # 测试资源建议功能 kubectl get vpa-recommendation -n <target-namespace> # 定期更新工具 helm upgrade goldilocks fairwinds-stable/goldilocks -n goldilocks kubectl krew upgrade ``` > **重要提示**:在生产环境部署前,应在测试集群验证配置,避免安全漏洞或生产中断[^1]。 ### 相关问题 1. 如何将 Goldilocks 的建议集成到 CI/CD 流程中? 2. 在 AKS/EKS/GKE 上部署 Goldilocks 有哪些特殊配置? 3. 如何为 k8stools 添加自定义插件? 4. Goldilocks 的资源建议如何与 HPA 协同工作? 5. 如何监控 Goldilocks 自身的资源使用情况?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值