1 Node的隔離和恢復
-
方法1:
- 創建新的Node配置文件指定
spec.unschedulable: true
- 通過kubectl replace完成對Node的狀態修改
kubectl replace -f xxx.yaml
- 此時Node的狀態增加一項SchedulingDisabled,后續創建Pod將不會對該Node進行調度
- 創建新的Node配置文件指定
-
方法2:
kubectl patch node name -p '{"spec":{"unschedulable":true}}'
-
將Node脫離調度后,Node上運行的Pod不會自動停止
-
將Node重新納入集群只需要將
spec.unschedulable: false
可用上述兩種方法
2 Node擴容
- 在新Node上安裝Docker、Kubelet和kube-proxy服務
- 在Kubelet和kube-proxy的啟動參數中的Master URL指定為當前Master地址
3 Pod動態擴容和縮放
- 通過
kubectl scale rc
調整副本數
kubectl scale rc name --replicas=3
4 更新資源對象的Label
kubectl label pod name role=backend #加一個role=backend的label
kubectl label pod name role- #刪除key為role的label
kubectl label pod name role=master --overwrite #修改role的label
5 將Pod調度到指定的Node
- 通過Node的label與Pod的nodeSelector匹配實現
- 給Node設置label
- Pod的配置文件中
spec.nodeSelector
中設置與Node中相同的label
6 應用的滾動升級
-
Kubernetes提供rolling-update功能實現
-
該命令創建一個新的RC然后自動控制舊的RC中的Pod數逐漸減少到0,同時新的RC中Pod從0逐漸增加
-
必須是相同Namespace中的RC
-
方法一使用配置文件,新的RC配置文件需要注意的地方:
- RC名字不能與舊的相同
- selector中至少有一個Label與舊RC的Label不同
kubectl rolling-update 舊RC -f 配置文件
-
方法二不使用配置文件,指定新版鏡像名實現
kubectl rolling-update RC名 --image=新鏡像名
-
更新過程有誤可以通過
kubectl rolling-update --rollback
實現Pod版本回滾kubectl rolling-update RC名 --image=新鏡像名 --rollback