一、环境规划(使用的是VMvare 这里为了节省资源这是ansible和master安装在一块)
代码仓库地址:shuaichao130/kubernetes: ansible自动化部署kubernetes1.20.7 (github.com)
1、主机规划(建议最低2U,3G)
k8s-master | 192.168.252.11 |
k8s-node01 | 192.168.252.12 |
k8s-node02 | 192.168.252.13 |
2、软件规划(注意软件之间的兼容性)
kubernetes 1.20.7版本
docker 19.03版本
3、网段规划
pod网段: 10.96.0.0/16
service网段: 172.16.0.0/16
二、安装Ansible
1、配置SSH免密
[root@k8s-master ~]# ssh-keygen -t rsa
[root@k8s-master ~]# ssh-copy-id root@192.168.252.12
[root@k8s-master ~]# ssh-copy-id root@192.168.252.13
2、在master上安装ansible
[root@k8s-master ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@k8s-master ~]# yum install -y ansible
3、在/etc/ansible/hosts中添加主机
[root@k8s-master ~]# vim /etc/ansible/hosts
[all]
192.168.252.11
192.168.252.12
192.168.252.13
[master]
192.168.252.11
三、编写k8s所需要的基础配置和参数脚本
1、编写ansible-playbook拉取github上k8s脚本(如果报错,使用yum install -y wget安装wget),由于国内连接github可能会失败,这里选择直接克隆仓库
[root@k8s-master ~]# cat k8s.yaml
- hosts: all
user: root
gather_facts: false
tasks:
- name: wget all.sh
shell: wget https://gitee.com/shuaichao0306/ansible-kubernetes/raw/main/all.sh
- name: chmod all.sh
file: path=/root/all.sh mode=0777
- name: bash all.sh
script: ./all.sh
2、执行yaml文件
ansible-playbook k8s.yaml
3、重启所有机器,让配置生效
reboot
4、安装docker,kubectl,kubeadm,kubelet,并添加初始化集群添加calico
[root@k8s-master ~]# cat docker-kubeadm.yaml
- hosts: all
user: root
gather_facts: false
tasks:
- name: yum docker
yum: name=docker-ce-19.03* state=present
- name: start docker
service:
name: docker
state: started
enabled: yes
- name: systemctl daemon-reload
shell: systemctl daemon-reload
- name: yum kubeadm kubelet kubectl
shell: yum install -y --disableexcludes=main kubeadm-1.20.7 kubelet-1.20.7 kubectl-1.20.7
- name: xg config
shell: sed -i 's/^KUBELET_EXTRA_ARGS=.*/KUBELET_EXTRA_ARGS="--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com\/google_containers\/pause-amd64:3.2"/' /etc/sysconfig/kubelet
- name: systemctl start kubelet
service:
name: kubelet
state: started
enabled: yes
[root@k8s-master ~]# cat master.yaml
- hosts: master
user: root
gather_facts: false
tasks:
- name: wget calico
shell: wget https://gitee.com/shuaichao0306/ansible-kubernetes/raw/main/calico-etcd.yaml
- name: wget master.sh
shell: wget https://gitee.com/shuaichao0306/ansible-kubernetes/raw/main/master.sh
- name: chmod master.sh
file: path=/root/master.sh mode=0777
- name: bash master.sh
script: ./master.sh
5、生成加入工作节点的token
kubeadm token create --print-join-command
6、在node节点执行token
[root@node02 ~]# kubeadm join 192.168.252.11:6443 --token 85virb.krkzp1vmsmkzbp2g \
> --discovery-token-ca-cert-hash sha256:0b70f0112c8a7ccfe2901324734386a1d41843a8b3217a61baa6d29fc97a953c
7、重启所有机器
reboot
8、查看节点状态和pod运行状态
kubectl get nodes
kubectl get pods -A