1) 安装好ansible并在中控机器上进行控制
2) 中控机器上的/etc/hosts文件尾部添加如下内容
k8smaster 192.168.10.104 123456
k8sworker1 192.168.10.189 123456
k8sworker2 192.168.10.190 123456
k8sworker3 192.168.10.191 123456
k8sworker4 192.168.10.192 123456
k8sworker5 192.168.10.193 123456
3)中控机器hosts文件更改以后,拷贝到其他的机器,并参考 免密登陆 完成免密登陆
免密脚本
#!/bin/bash
echo "StrictHostKeyChecking no" >>/etc/ssh/ssh_config
echo -e 'y\n' | ssh-keygen -q -f ~/.ssh/id_rsa -t rsa -N ''
cat anhosts | while read host ip pwd ; do
echo $host $ip $pwd
if sshpass -p $pwd ssh-copy-id -f $ip 2>/dev/null >&2 ; then
ssh -nq $ip "hostnamectl set-hostname $host 2>/dev/null "
echo "$ip $host " >> /etc/hosts
echo "copy-id to $ip successed"
else
echo "copy-id to $ip failed"
fi
done
#sed -i '$d' /etc/ssh/ssh_config
4)执行以下剧本准备安装k8s
- hosts: k8s
become: yes
become_user: root
tasks:
- name: changefirewalld
service:
name: firewalld
enabled: no
- name: swapoff
shell: swapoff -a
- name: stopfirewalld
service:
name: firewalld
state: stopped
- name: SELINUX=disabled
selinux: state=disabled
- name: Copy file with owner and permissions
copy:
src: /etc/hosts
dest: /etc/hosts
owner: root
group: root
mode: '0644'
- name: remove-old-docker
yum:
pkg: docker
state: removed
- name: install-alirepo
shell: |
rm -rfv /etc/yum.repos.d/*;
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo;
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- name: install-k8s-packges
yum:
pkg: bash-completion,device-mapper-persistent-data,lvm2,docker-ce
state: installed
- name: copy-prepare-shell
copy:
src: ./prepare.sh
dest: /root/
mode: '755'
- name: run-prepare-sh
shell: /root/prepare.sh
- name: install-kubetools
yum:
pkg: kubectl,kubelet,kubeadm
state: installed
- name: enable-kubelet
service:
name: kubelet
enabled: yes
- name: enable-docker
service:
name: docker
enabled: yes
5)初始化master节点
- hosts: 192.168.10.104
become: yes
become_user: root
tasks:
- name: run-k8s-master
shell: |
kubeadm init --kubernetes-version=1.20.0 \
--apiserver-advertise-address=192.168.10.104 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16;
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
6) node节点加入
- hosts: k8sworkers
become: yes
become_user: root
tasks:
- name: run-k8s-workers
shell: |
kubeadm join 192.168.10.104:6443 --token hl5790.2xyp403rc9r0jjka \
--discovery-token-ca-cert-hash sha256:cbcef55c3b05d7c25ac29d49874661dd4eaad0baab73fb656453094893b17070
7)安装完成