目錄
組件介紹
kubernetes master
節點運行組件如下: kube-apiserver
、kube-scheduler
、kube-controller-manager
、kube-nginx
- kube-apiserver、kube-scheduler、kube-controller-manager均以多實例模式運行
- kube-scheduler和kube-controller-manager會自動選舉一個leader實例,其他實例處於阻塞模式,當leader掛了后,重新選舉產生的leader,從而保證服務可用性
- kube-apiserver是無狀態的,需要通過kube-nginx進行代理訪問,從而保證服務可用性
以下操作都在K8s-01操作
下載kubernetes二進制包,並分發到所有master節點
cd /opt/k8s/work
wget https://dl.k8s.io/v1.15.6/kubernetes-server-linux-amd64.tar.gz
tar -xzvf kubernetes-server-linux-amd64.tar.gz
cd kubernetes
tar -xzvf kubernetes-src.tar.gz
下載解壓的工作如果在 部署前期准備工作 做過,這里就不需要重復操作。
將master所需要的二進制文件拷貝到所有master機器上
cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${MASTER_IPS[@]}
do
echo ">>> ${node_ip}"
scp kubernetes/server/bin/{apiextensions-apiserver,cloud-controller-manager,kube-apiserver,kube-controller-manager,kube-proxy,kube-scheduler,kubeadm,kubectl,kubelet,mounter} root@${node_ip}:/opt/k8s/bin/
ssh root@${node_ip} "chmod +x /opt/k8s/bin/*"
done
kube-apiserver 高可用
- 使用Nginx 4層透明代理功能實現k8s節點(master節點和worker節點)高可用訪問kube-apiserver的步驟
- 控制節點的kube-controller-manager、kube-scheduler是多實例部署,所以只要一個實例正常,就可以保證集群高可用
- 集群內的Pod使用k8s服務域名kubernetes訪問kube-apiserver,kube-dns會自動解析多個kube-apiserver節點的IP,所以也是高可用的
- 在每個Nginx進程,后端對接多個apiserver實例,Nginx對他們做健康檢查和負載均衡
kubelet、kube-proxy、controller-manager、schedule通過本地nginx (監聽我們vip 10.0.20.10)訪問kube-apiserver,從而實現kube-apiserver高可用