介绍
涉及到的文件如下
[root@k81 an]# ls k8s_kubeadm -l total 28 -rw-r--r-- 1 root root 20249 Apr 25 09:42 ansible.cfg -rw-r--r-- 1 root root 85 Apr 24 11:03 hosts -rw-r--r-- 1 root root 269 Apr 25 00:25 kubeadm.yaml drwxr-xr-x 7 root root 89 Apr 23 14:48 roles [root@k81 an]# ls k8s_kubeadm/roles/ -l total 0 drwxr-xr-x 10 root root 154 Apr 19 12:57 chrony drwxr-xr-x 10 root root 154 Apr 23 14:48 container_init drwxr-xr-x 10 root root 154 Apr 23 14:10 containers drwxr-xr-x 10 root root 154 Apr 19 12:56 initial drwxr-xr-x 10 root root 154 Apr 19 12:58 kernel
其中涉及到5个role
[root@k81 an]# tree k8s_kubeadm/roles/ k8s_kubeadm/roles/ ├── chrony │ ├── defaults │ │ └── main.yml │ ├── files │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── README.md │ ├── tasks │ │ └── main.yml │ ├── templates │ │ ├── client.conf.j2 │ │ └── server.conf.j2 │ ├── tests │ │ ├── inventory │ │ └── test.yml │ └── vars │ └── main.yml ├── container_init │ ├── defaults │ │ └── main.yml │ ├── files │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── README.md │ ├── tasks │ │ └── main.yml │ ├── templates │ │ ├── init.yaml.j2 │ │ └── ssh-pass.sh.j2 │ ├── tests │ │ ├── inventory │ │ └── test.yml │ └── vars │ └── main.yml ├── containers │ ├── defaults │ │ └── main.yml │ ├── files │ │ └── daemon.json.j2 │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── README.md │ ├── tasks │ │ └── main.yml │ ├── templates │ ├── tests │ │ ├── inventory │ │ └── test.yml │ └── vars │ └── main.yml ├── initial │ ├── defaults │ │ └── main.yml │ ├── files │ │ ├── CentOS-Base.repo │ │ ├── docker-ce.repo │ │ ├── epel.repo │ │ ├── kubernetes.repo │ │ └── limits.conf │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── README.md │ ├── tasks │ │ └── main.yml │ ├── templates │ ├── tests │ │ ├── inventory │ │ └── test.yml │ └── vars │ └── main.yml └── kernel ├── defaults │ └── main.yml ├── files │ ├── ipvs.conf │ └── k8s.conf ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── README.md ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml 45 directories, 52 files
具体压缩包如下
k8s_kubeadm.yaml.tgz
playbook结构如下
[root@k81 k8s_kubeadm]# cat kubeadm.yaml --- - hosts: all vars: local_network: 10.100.200.0/24 # 本集群第一个节点作为chrony服务端,其它节点作为chrony客户端,其中服务端的 allowed 写一个网段表示允许客户端同步 Service_CIDR: 172.16.0.0/16 # k8s集群中Service的CIDR范围 Pod_CIDR: 192.168.0.0/16 # k8s集群中Pod的CIDR范围 HA_Domain: myk8s # k8s集群负载均衡域名,解析地址为下面的HA_IP HA_IP: 10.10.21.196 # k8s集群负载均衡IP地址,暂定第一个节点 host_passwd: zs # k8s集群各个节点密码,用来做免密 roles: - initial # 进行一些简单的初始化工作 - chrony # 集群时间同步 - kernel # 加载内核模块,升级内核 - containers # 安装所需要的软件包
说明
本人在CentOS7.9 环境部署无问题,使用CentOS7.9 纯净环境部署即可
本次部署采用的容器运行时为docker,如采用containerd应该可以更简洁一点
使用时候在kubeadm.yaml这个playbook中修改对应变量即可
目前实现了一主多从的1.25.8集群部署,如1主1从、1主2从等;如需要部署多主多从只需要新增负载均衡节点,将HA_IP修改,同时在 container_init 这个role的task中简单加上几个任务即可