通过ansible脚本自动化部署k8s基础集群
https://download.csdn.net/download/qq_44246980/85695007
- 链接是之前的版本,无法更新,请勿下载
- 文章末尾准备了对应的部署包链接
作用 | IP地址 | 操作系统 | 配置 |
---|---|---|---|
k8s-master01 | 192.168.1.21 | CentOS7 | 最低配置2C2G |
k8s-master02 | 192.168.1.22 | CentOS7 | 最低配置2C2G |
k8s-master02 | 192.168.1.23 | CentOS7 | 最低配置2C2G |
k8s-node01 | 192.168.1.24 | CentOS7 | 最低配置2C2G |
ansible | 192.168.1.11 | CentOS7 | 最低配置1C1G |
- node节点可以填写多个,根据实际情况确认,但是不能超出master节点的限制
- master节点至少是三个才是高可用版本,少一个都不是高可用版本
- keepalived需要提前确认好vip
- 建议机器处于同一网段中,或者同一局域网内
#上传部署包(xshell)
cd /opt #目录随意
yum -y install lrzsz
rz install_k8s_kubeadm_20221021.tar.gz
#解压
tar -xvf install_k8s_kubeadm_20221021.tar.gz
#部署机器,初始脚本、安装包镜像
[deploy_server]
192.168.1.11 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="Ansible"
[kubernetes_master]
192.168.1.21 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-master01"
192.168.1.22 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-master02"
192.168.1.23 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-master03"
[kubernetes_node]
#192.168.1.21 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-node01"
#192.168.1.22 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-node02"
#双节点
[haproxy_keepalived]
192.168.1.21 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-master01"
192.168.1.22 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-master02"
#不填写,则不安装镜像仓库
[docker_repositry]
#192.168.1.136 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-node01"
[nodes:children]
kubernetes_master
kubernetes_node
[all:vars]
#脚本解析主机信息,层级默认只能添加3个,即3个master,3个node
Number="3"
master_vip="192.168.1.120"
#布尔值true or false
Basic_enable="true" #安装基础软件包
prometheus_enable="true" #安装Prometheus服务
dashboard_enable="true" #安装dashboard服务
ingress_enable="false" #安装ingress服务
[root@registry]# cd /opt/deploy_install_k8s
[root@registry]# ls
host images init playbook Run.sh yum
[root@ansible install_k8s_kubeadm]# sh Run.sh
1) 初始化环境(ansible))
2) 安装k8s集群[一主多从](1.21.1)
3) 安装k8s集群[多主多从](1.21.1)
4) 添加k8s node节点(1.21.1)
5) 更新k8s certs,续费10年(1.21.1)
----------------------------------------------------------------------------
请输入对应的数字编号:1
请输入部署机的地址(192.168.1.100):
【ansible 2022-10-21 02:24:39】 start install docker
【ansible 2022-10-21 02:25:22】 docker安装成功
{
"registry-mirrors": ["https://geuj9lut.mirror.aliyuncs.com"]
}
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
-----------------------------------------------------------------------------------------
2edcec3590a4: Loading layer [==================================================>] 83.86MB/83.86MB
1a81690c9021: Loading layer [==================================================>] 109.6MB/109.6MB
9ee0b2399822: Loading layer [==================================================>] 3.072kB/3.072kB
eb197da1306a: Loading layer [==================================================>] 4.096kB/4.096kB
dbcac2c2be14: Loading layer [==================================================>] 3.584kB/3.584kB
c3c42edd6aa8: Loading layer [==================================================>] 7.168kB/7.168kB
Loaded image: registry.bcbx.com:38082/bcbx_nginx:v1.0.0
【nginx.tar】 load repository success
69715584ec78: Loading layer [==================================================>] 5.885MB/5.885MB
ad10b481abe7: Loading layer [==================================================>] 818.7kB/818.7kB
aa4330046b37: Loading layer [==================================================>] 20.08MB/20.08MB
f640be0d5aad: Loading layer [==================================================>] 4.096kB/4.096kB
aeccf26589a7: Loading layer [==================================================>] 2.048kB/2.048kB
Loaded image: registry.bcbx.com:38082/bcbx_registry:v1.0.0
【repositry.tar】 load repository success
-----------------------------------------------------------------------------------------
【ansible 2022-10-21 02:25:30】 start the image yum_repo success
-----------------------------------------------------------------------------------------
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
【ansible 2022-10-21 02:25:33】 使用离线安装包,安装ansible,请等待!!!
【ansible 2022-10-21 02:25:33】 Check the offline installation package
【ansible 2022-10-21 02:25:47】 Ansible is installed successfully
【ansible 2022-10-21 02:25:47】 Ansible.cfg配置文件修改成功
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
Error response from daemon: Cannot restart container registry: driver failed programming external connectivity on endpoint registry (33ab68e2ce671900016e9cf1f1d37f1d2c11d7d787826127a59f7e6f9763c161): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 38082 -j DNAT --to-destination 172.17.0.3:5000 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1))
-----------------------------------------------------------------------------------------
#部署机的地址,通过脚本过去的地址,确认无误后直接回车即可
- 安装docker服务
- 安装ansible服务,修改配置
- 准备离线yum仓库
- 准备离线registry仓库,相关挂载点是:/var/images/
[root@k8s-master install_k8s_kubeadm]# sh Run.sh ping
192.168.1.192 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[root@k8s-master install_k8s_kubeadm]#
[root@ansible install_k8s_kubeadm]# sh Run.sh
1) 初始化环境(ansible))
2) 安装k8s集群[一主多从](1.21.1)
3) 安装k8s集群[多主多从](1.21.1)
4) 添加k8s node节点(1.21.1)
5) 更新k8s certs,续费10年(1.21.1)
----------------------------------------------------------------------------
请输入对应的数字编号:2
#host文件需要提前修改
#确认host中用户名、密码、ip正确且网络连接正常后,回车,等待执行脚本结束
浏览器访问Prometheus
http://IP:30090
- 在host文件下的kubernetes_node分组下添加新增的需要新增的节点,并把之前已添加的节点删除
- 修改后执行Run.sh脚本,选择4,添加node节点
- 脚本正常执行完毕后,检查各个节点的/etc/hosts文件,如果确认对应的域名解析,需要手动添加对应的主机关系
#可以通过 kubeadm alpha certs check-expiration 命令查看相关证书是否过期。
#注:该命令仅在 v.15 之后的版本可用
kubeadm alpha certs check-expiration
# k8s v1.21.1
kubeadm certs check-expiration
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '
Kubenetes通过脚本自动更新证书有效期脚本来源
[root@k8s-master install_k8s_kubeadm]# sh Run.sh
1) 初始化环境(ansible))
2) 安装k8s集群[一主多从](1.21.1)
3) 安装k8s集群[多主多从](1.21.1)
4) 添加k8s node节点(1.21.1)
5) 更新k8s certs,续费10年(1.21.1)
----------------------------------------------------------------------------
请输入对应的数字编号:5
链接:https://pan.baidu.com/s/1c20RSSKlZ7CtkqHild2ByQ?pwd=cv0n
- 上述则是当前部署中可运行正常的服务
- 执行Run.sh 输入init,则可以调试脚本,对应的启动文件,修改,则可以进行调试(playbook/tools/test.yaml)