Replication Controller
阿新 • • 發佈:2020-12-07
Replication Controller
Replication Controller簡稱RC,RC是Kubernetes系統中的核心概念之一,簡單來說,RC可以保證在任意時間執行Pod的副本數量,能夠保證Pod總是可用的。如果實際Pod數量比指定的多那就結束掉多餘的,如果實際數量比指定的少就新啟動一些Pod,當Pod失敗、被刪除或者掛掉後,RC都會去自動建立新的Pod來保證副本數量,所以即使只有一個Pod,我們也應該使用RC來管理我們的Pod。
現在我們來使用RC來管理我們前面使用的Nginx的Pod,YAML檔案如下:
apiVersion: v1 kind: ReplicationController metadata: name: rc-demo labels: name: rc spec: replicas: 3 selector: name: rc template: metadata: labels: name: rc spec: containers: - name: nginx-demo image: nginx ports: - containerPort: 80
上面的YAML檔案相對於我們之前的Pod的格式:
- kind:ReplicationController
- spec.replicas: 指定Pod副本數量,預設為1
- spec.selector: RC通過該屬性來篩選要控制的Pod
- spec.template: 這裡就是我們之前的Pod的定義的模組,但是不需要apiVersion和kind了
- spec.template.metadata.labels: 注意這裡的Pod的labels要和spec.selector相同,這樣RC就可以來控制當前這個Pod了。
這個YAML檔案中的意思就是定義了一個RC資源物件,它的名字叫rc-demo,保證一直會有3個Pod執行,Pod的映象是nginx映象。
注意spec.selector和spec.template.metadata.labels這兩個欄位必須相同,否則會建立失敗的,當然我們也可以不寫spec.selector,這樣就預設與Pod模板中的metadata.labels相同了。所以為了避免不必要的錯誤的話,不寫為好。
然後我們來建立上面的RC物件(儲存為 rc-demo.yaml):
kubectl create -f rc-demo.yaml
檢視RC:
kubectl get rc
檢視具體資訊:
kubectl describe rc rc-demo
然後我們通過RC來修改下Pod的副本數量為2:
kubectl apply -f rc-demo.yaml
或者
kubectl edit rc rc-demo
而且我們還可以用RC來進行滾動升級,比如我們將映象地址更改為nginx:1.7.9:
kubectl rolling-update rc-demo --image=nginx:1.7.9
但是如果我們的Pod中多個容器的話,就需要通過修改YAML檔案來進行修改了:
kubectl rolling-update rc-demo -f rc-demo.yaml
如果升級完成後出現了新的問題,想要一鍵回滾到上一個版本的話,使用RC
只能用同樣的方法把映象地址替換成之前的,然後重新滾動升級。