Kubernetes v1.22/v1.23 企业级高可用集群Ansible自动部署教程
目录
环境准备
操作系统要求:CentOS7.x_x64或者CentOS8.x_x64
规划:
IP | 主机名 | 角色 |
10.8.8.1 | k8s-master1 | K8S集群主节点1,Master和etcd |
10.8.8.2 | k8s-master2 | K8S集群主节点2,Master和etcd |
10.8.8.3 | k8s-node1 | K8S集群工作节点1,etcd |
10.8.8.5 | k8s-node2 | K8S集群工作节点2 |
10.8.8.6 | / | HA VIP VIP,在k8s-master1和k8s-master2主机实现 |
配置时间同步
#更换yum(centos8官方源已下线,知识兔建议切换centos-vault源,)rm -rvf /etc/yum.repos.d/*#下载新的wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo#生成缓存yum makecache# 时间同步 wget -O ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm https://yun.ittel.cn:1443/f/c912e39829f841f4852a/?dl=1yum localinstall ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm -yntpdate ntp3.aliyun.com
找一台服务器安装Ansible
yum install epel-release -y#下载ansible依赖,默认源没有以下包,已经下载好,直接镜像获取就行wget -O python38-resolvelib-0.5.4-5.el8.noarch.rpm https://yun.ittel.cn:1443/f/b2bae499d95f48069e3e/?dl=1wget -O ansible-core-2.12.7-1.el8.x86_64.rpm https://yun.ittel.cn:1443/f/bc254a69e3cf4f119c87/?dl=1wget -O sshpass-1.09-4.el8.x86_64.rpm https://yun.ittel.cn:1443/f/cabab3975d4d4326a5d0/?dl=1#安装ansiblewget -O ansible-5.4.0-3.el8.noarch.rpm https://yun.ittel.cn:1443/f/8982f8ca86bd4892b251/?dl=1yum install -y python38-resolvelib-0.5.4-5.el8.noarch.rpmyum install -y sshpass-1.09-4.el8.x86_64.rpm yum install -y ansible-core-2.12.7-1.el8.x86_64.rpmyum install -y ansible
下载所需二进制文件和Ansible脚本
下载Ansible部署文件:
wget -O ansible-install-k8s.zip https://yun.ittel.cn:1443/f/c95c2b00e2594293a8e5/?dl=1 && unzip ansible-install-k8s.zip#切换到脚本目录cd ansible-install-k8s-maste
下载准备好软件包(包含所有涉及文件和镜像,比较大),并解压到/root目录:
cd /root/ && wget -O binary_pkg.tar.gz https://yun.ittel.cn:1443/f/c786ba9fc2cf4880b3c6/?dl=1 && tar zxvf binary_pkg.tar.gz
修改Ansible文件
修改hosts文件,知识兔根据规划修改对应IP和名称。
#切换到脚本目录cd /root/ansible-install-k8s-master/vi hosts
修改group_vars/all.yml文件,修改软件包目录和证书可信任IP。
vi group_vars/all.yml
#所有IP对应修改vi ./roles/tls/templates/k8s/server-csr.json.j2
vi ./roles/addons/files/calico.yaml
vi ./roles/addons/files/coredns.yaml
一键部署K8S
架构图
多Master架构
部署命令
Centos 8.X 执行,Centos 8使用的keeplived和nginx版本和Centos7不一致,适配配置文件
#centos 7不需要做wget -O ./roles/ha/tasks/main.yml https://yun.ittel.cn:1443/f/bf09dd07aadd41868987/?dl=1wget -O ./roles/ha/templates/nginx.conf.j2 https://yun.ittel.cn:1443/f/008d926a9682492a88db/?dl=1
单Master版:
cd ansible-install-k8s-master/ansible-playbook -i hosts single-master-deploy.yml -uroot -k
多Master版:
cd ansible-install-k8s-master/ansible-playbook -i hosts multi-master-deploy.yml -uroot -k
耐心等待,最后会提示kubernetes的dashboard访问地址和访问令牌。
后面就可以登录dashboard进行管理K8S
安装到此结束,哎就很棒
查看集群节点
[root@k8s-master1 ansible-install-k8s-master]# kubectl get nodesNAME STATUS ROLES AGE VERSIONk8s-master1 Ready 4m23s v1.22.4k8s-master2 Ready 4m23s v1.22.4k8s-node1 Ready 4m22s v1.22.4k8s-node2 Ready 4m23s v1.22.4
故障排查
部署控制
如果知识兔安装某个阶段失败,可针对性测试.
例如:只运行部署插件
ansible-playbook -i hosts multi-master-deploy.yml -uroot -k --tags ha
节点扩容
1)修改hosts,添加新节点ip
vi hosts...[newnode]192.168.31.75 node_name=k8s-node3
2)执行部署
ansible-playbook -i hosts add-node.yml -uroot -k
所有HTTPS证书存放路径
部署产生的证书都会存放到目录“ansible-install-k8s-master/ssl”,一定要保存好,后面还会用到~
如果知识兔要续签或者重新签发证书,你可以在里面修改证书,重新用cfssl命令生成。
下载仅供下载体验和测试学习,不得商用和正当使用。