# k8s-ansible **Repository Path**: istower/k8s-ansible ## Basic Information - **Project Name**: k8s-ansible - **Description**: ansible部署二进制k8s集群 - **Primary Language**: YAML - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2022-07-26 - **Last Updated**: 2024-07-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ansible playbook部署二进制的kubernetes集群 ## 部署集群 ### 节点连接 在inventory目录下的k8s文件中设置连接集群节点的密码 ```shell [all:vars] ansible_ssh_pass="123456" ``` ### 设置变量信息 变量文件为`vars/main.yaml`,修改相关信息,配置集群运行模式 ### 设置Inventory信息 ```ini # 集群所有主机 [all] 192.168.1.10 192.168.1.1[3:5] # 表示1.13,1.14,1.15三台主机 # etcd集群 [etcd] 192.168.1.1[3:5] # 高可用apiserver [apiserver] 192.168.1.10 192.168.1.13 ``` > etcd必须设置奇数个,高可用至少需要两个apiserver,如果在变量中设置`run_pod_on_master: true`,控制平面节点也会安装`kubelet`和`kube-proxy` ### 执行playbook ```shell ansible-playbook -i inventory/k8s -e '@vars/main.yaml' k8s.yaml ``` >默认会自动下载kubernetes,etcd的程序文件,可以提前下载好相关文件,防止下载失败导致的问题。下载的文件满足要求如下: > >使用vars/main.yaml中配置的地址进行下载 > >kubernetes_url: https://dl.k8s.io/v1.27.4/kubernetes-server-linux-amd64.tar.gz > >文件为`kubernetes-server-linux-amd64.tar.gz`,放在**ansible控制器**的/tmp目录下 > >etcd_url: https://github.com/etcd-io/etcd/releases/download/v3.4.27/etcd-v3.4.27-linux-amd64.tar.gz > >文件为`etcd-v3.4.27-linux-amd64.tar.gz`,放在**ansible控制器**的/tmp目录下 > ## 向集群中添加node节点 ### 更改Inventory配置信息 - 更改集群所有主机信息 ```ini # 集群所有主机 [all] 192.168.1.10 192.168.1.13 192.168.1.14 192.168.1.15 192.168.1.17 # 新增这一台主机 ``` > 如果是不连续主机,则分行单独写完整ip地址,这里面主机192.168.1.17就是新增加的节点主机 ### 执行ansible playbook ```shell ansible-playbook -i inventory/k8s -e '@vars/main.yaml' k8s.yaml --tags initiate --tags cri --tags node ``` > --tags initiate 用来初始化节点的配置,包括内核参数,防火墙,selinux,时间同步,swap等 > > --tags cri 用来安装docker和cri-docker > > --tags node 用来在节点部署kubelet和kube-proxy ### 查看结果 ```shell > # kubectl get nodes NAME STATUS ROLES AGE VERSION k1 Ready 153m v1.27.4 k2 Ready 153m v1.27.4 k3 Ready 153m v1.27.4 k4 Ready 153m v1.27.4 k5 Ready 5m39s v1.27.4 ``` ## 更新证书 ### kubelet证书更新 ```shell ansible-playbook -i inventory/k8s -e '@vars/main.yaml' k8s.yaml --tags cert-kubelet --tags kubelet-kubeconfig --tags node-change ``` > cert-kubelet 重新签发kubelet证书 > > kubelet-kubeconfig 生成kubelet配置文件,使用新的证书 > > node-change 拷贝配置文件到worker节点并重启kubelet服务 > > 其他组件的证书更新类似,更改`tags`即可