Pod 副本管理~ 實作篇

觀察現況

我們透過 ReplicaSet 物件提交到 K8s API 的方式建立副本管理。 先行察看兩個物件,可以得知哪一個 pod 尚未套用 ReplicaSet 物件~ kubectl get pods kubectl get rs

[user@minikube ~]$ kubectl get pods
NAME                              READY   STATUS    RESTARTS   AGE
hello-kitty                       1/1     Running   0          6d
hello-minikube-7c77b68cff-ncqmn   1/1     Running   1          11d
hello-moto-6456dff9f-67jh5        1/1     Running   0          5d

[user@minikube ~]$ kubectl get rs
NAME                        DESIRED   CURRENT   READY   AGE
hello-minikube-7c77b68cff   1         1         1       11d
hello-moto-6456dff9f        1         1         1       5d

另一個方式查看該 pod 是否已有 ReplicaSet 管理 kubectl get pods -o yaml 如果顯示的內容中,有出現kind: ReplicaSet物件,即代表受管理中

  ...
  ownerReferences:
  - apiVersion: extensions/v1beta1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: hello-moto-6456dff9f

新增 ReplicaSet 實例

經比對,pod hello-kitty 尚未套用 ReplicaSet,可以最為下列範例~ 新增 hello-kitty 的 ReplicaSet 物件~rs-hello-kitty.yaml

套用 ReplicaSet 物件之前 Pod 狀態:

套用 ReplicaSet 物件:

套用 ReplicaSet 物件之後 Pod 狀態:

檢查 ReplicaSet,可以看見裏頭的 Labels、replicas 資訊:

Scale Pod 方式一

進行擴展 Pod[2 --> 4],透過指令kubectl scale

書中提到上述指令:kubectl scale <rs-name> --replicas=value,因為 K8s 迭代,透過 kubectl scale -h 得知語法已經變更。

Scale Pod 方式二

透過 kubectl apply 進行宣告式scale[4 --> 3] 編輯 rs-hello-kitty.yaml 內容中的 replicas: value 進行管理

Scale Pod 方法差異

上述用了兩種方式進行 pod scale,kubectl scale --replicaskubectl apply -f scale pod 目的與效果是相同的,但其實意義上,是有所不同的~ kubectl scale --replicas指令,適合自己工作上運用,但自己也要清楚當前 replicas valus。 kubectl apply -f是透過宣告式 yaml 檔案進行 replicas valus 管理,非常適合納入版控系統並搭配自動化腳本進行管理。進而更加適合團隊性質的協同合作需求。

你會希望我做過什麼變動,我也必須讓大家知道做過哪些變動,這是 DevOps 精神

參考書籍: Kubernetes 建置與執行 書中 P.98~102 內容

Last updated