1. 程式人生 > 其它 >Kubernetes Deployment StatefulSet DaemonSet HPA

Kubernetes Deployment StatefulSet DaemonSet HPA

Replication Controller 和 ReplicaSet 

  Replication Controller 和 ReplicaSet 都是用於控制pod數量符合期望,ReplicaSet是支援基於集合的標籤選擇器的下一代Replication Controller,它主要用作Deployment協調建立、刪除和更新Pod,ReplicaSet支援標籤選擇器。Replication Controller 和 ReplicaSet 一般不會單獨使用,多數是通過其它資源進行呼叫,如deployment。

Deployment
  用於部署無狀態的服務;

  更新:kubectl set image deploy nginx nginx=nginx:1.15.3 –record     # –record 將更新記錄到歷史中,方便後續進行回滾;

  檢視更新過程:kubectl rollout status deploy nginx

  檢視更新的歷史版本:kubectl rollout history deploy nginx

  回滾到上一版本:kubectl rollout undo deploy nginx

  檢視歷史版本的詳細資訊: kubectl rollout history deploy nginx --revision=5

  回滾到指定的歷史版本:kubectl rollout undo deploy nginx --to-revision=5

  Deployment 暫停和恢復:

    Deployment 暫停之後,對Deployment 的修改將不會立即作用到Deployment 上,需要使用恢復的指令將Deployment 恢復,恢復後Deployment 將暫停之後的修改更新到當前的Deployment 上;

    應用:需要通過命令多次修改Deployment ,並希望將所有的修改執行之後,再一次性應用到Deployment 上;

    暫停:kubectl rollout pause deployment nginx

    修改:kubectl set . . . . . . 

    恢復:kubectl rollout resume deploy nginx

  更新策略:

    RollingUpdate  滾動更新,可以設定最大不可用數量或者設定更更新過程中可以允許超過期望pod的數量;

    Recreate   重建,該更新策略執行後更新後,pod並不會立即更新,而是需要等到pod被刪除之後,新建的pod才會使用更新的版本;

StatefulSet

  StatefulSet(有狀態集,縮寫為sts)常用於部署有狀態的且需要有序啟動的應用程式。

  使用 StatefulSet 創建出來的pod,名稱規則如下:

    StatefulSetName-0、StatefulSetName-1 . . . . . . 

  

  StatefulSet建立的Pod一般使用Headless Service進行通訊,Headless一般的格式為:
    statefulSetName-{0..N-1}.serviceName.namespace.svc.cluster.local

    示例:使用 StatefulSet 管理redis叢集,從節點配置:

      slaveof redis-ms-0.redis-ms.public-service.svc.cluster.local 6379

  注意:

    StatefulSet目前使用Headless Service(無頭服務)負責Pod的網路身份和通訊,需要提前建立此服務。

    刪除一個StatefulSet時,不保證對Pod的終止,要在StatefulSet中實現Pod的有序和正常終止,可以在刪除之前將StatefulSet的副本縮減為0。

 

  更新:

    updateStrategy: 

      rollingUpdate:

        partition: 0    # partition 後面的數字,將會和 statefulSetName-{0..N-1} 中的數字比較,只更新 大於等於0的pod

      type: RollingUpdate

  

DaemonSet

  DaemonSet 在節點上只能存在一個,一般用於節點資訊收集,如日誌、節點監控,CNI的網路外掛也是 DaemonSet;

  也可根據標籤選在某些節點進行DaemonSet 部署;

HPA:Horizontal Pod Autoscaler

  HPA v1為穩定版自動水平伸縮,只支援CPU指標
  V2為beta版本,分為v2beta1(支援CPU、記憶體和自定義指標)
  v2beta2(支援CPU、記憶體、自定義指標Custom和額外指標ExternalMetrics)

  注意:

    如果是根據CPU或者記憶體進行HPA的話,需要為建立的容器指定cpu和記憶體資源;注意:1顆cpu = 1000m

    使用指令建立一個簡單的:kubectl autoscale deployment hpa-nginx --cpu-percent=10 --min=1 --max=10