Kubernetes 1.18 三master高可用集羣部署實施記錄

四臺虛擬機,角色分別爲master0~2,node0
操作系統:centos71804
配置:4核cpu,6G內存,兩塊60G硬盤
192.168.20.196 —— master0
192.168.20.197 —— master1
192.168.20.198 —— master2
192.168.20.199 —— node0
192.168.20.200 —— VIP
【本次部署是演示性部署,沒有配置靜態IP;進行測試實驗時建議爲4臺虛擬機配置靜態IP】
配置4臺虛擬機的yum源、docker源和kubernetes源,建議個人使用網易的源,如果網絡條件較好可以使用阿里的源
配置4臺虛擬機的主機環境:防火牆、SELinux、NTP、crontab、SWAP、透明網橋、hostname、/etc/hosts文件、SSH免密互登
在4臺虛擬機上安裝和配置docker
在4臺虛擬機上安裝kubeadm,kubelet和kubectl
在master0~2上安裝keepalived+lvs,並適當修改配置文件/etc/keepalived/keepalived.conf
依次在master0~2上以非搶佔模式啓動keepalived
在master0上執行kubeadm init並通過"--image-repository"指定自己常用的鏡像倉庫地址
記下kubeadm join192.168.20.200:6443 --token 信息,或者在添加節點時用 kubeadm token list查看--token內容
網絡方案採用支持Network Policy的Canal,執行https://docs.projectcalico.org/manifests/canal.yaml安裝部署網絡插件Canal【如果是在支持BGP的大型網絡環境中建議直接使用網絡插件calico】,執行kubectl get --namespace=kube-system pod -o wide|grep canal查看Canal的部署結果
【注意:Canal這個項目本身已經停止維護了,Canal其實就是Flannel和Calico的組合,在https://docs.projectcalico.org/getting-started/kubernetes/flannel/flannel上還有它的manifests】
等待一會兒,在master0上執行kubectl get nodes和kubectl get pods -n kube-system
把master0節點的證書拷貝到master1和master2上,在master1和master2上創建證書存放路徑:cd /root && mkdir -p /etc/kubernetes/pki/etcd &&mkdir -p ~/.kube/
在master0上執行:
scp /etc/kubernetes/pki/ca.crt master1:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/ca.key master1:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/sa.key master1:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/sa.pub master1:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/front-proxy-ca.crt master1:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/front-proxy-ca.key master1:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/etcd/ca.crt master1:/etc/kubernetes/pki/etcd/
scp /etc/kubernetes/pki/etcd/ca.key master1:/etc/kubernetes/pki/etcd/
scp /etc/kubernetes/pki/ca.crt master2:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/ca.key master2:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/sa.key master2:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/sa.pub master2:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/front-proxy-ca.crt master2:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/front-proxy-ca.key master2:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/etcd/ca.crt master2:/etc/kubernetes/pki/etcd/
scp /etc/kubernetes/pki/etcd/ca.key master2:/etc/kubernete/pki/etcd/
將master1和master2加入集羣,在master1和master2上執行:
kubeadm join192.168.20.200:6443 --token 7de7h55rnwluq.x6nypjrhl
--discovery-token-ca-cert-hash sha256:fa75619ab50a9dbda9aa6c89828c2c0bb627312634650299fe1647ab510a7e6c --control-plane
在master1和master2上執行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g)$HOME/.kube/config
執行kubectl get nodes查看節點角色及狀態
把node0加入到集羣,在node0上執行:kubeadm join 192.168.20.200:6443 --token 7de7h55rnwluq.x6nypjrhl --discovery-token-ca-cert-hash sha256:fa75619ab50a9dbda9aa6c89828c2c0bb627312634650299fe1647ab510a7e6c
在master0上執行kubectl get nodes查看集羣節點狀態
安裝helm,使用helm部署反向代理/負載均衡工具traefik
使用helm部署GUI管理工具kubernetes-dashboard
使用Helm部署集羣監控Prometheus Operator
【注意:如果是大型測試環境或者生產環境,建議配置容器健康監測Liveness和Readiness】

孟伯,20200522

交流聯繫:微信 1807479153 ,QQ 1807479153

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章