《Kubernetes權威指南》——運維技巧


1 Node的隔離和恢復

  • 方法1:

    1. 創建新的Node配置文件指定spec.unschedulable: true
    2. 通過kubectl replace完成對Node的狀態修改
        kubectl replace -f xxx.yaml
    
    1. 此時Node的狀態增加一項SchedulingDisabled,后續創建Pod將不會對該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匹配實現
    1. 給Node設置label
    2. 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
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM