淺談node node-sass sass-loader版本對應問題
阿新 • • 發佈:2021-09-15
replication Controller
replication controller簡稱RC,是kubernetes系統中的核心概念之一,簡單來說,它其實定義了一個期望的場景,即宣告某種pod的副本數量在任意時刻都複合某個預期值,所以RC的定義包含以下部分:
- pod期待的副本數量
- 用於篩選目標pod的Label Selector
- 當pod的副本數量小於期望值時,用於建立新的pod的pod模板(template)
ReplicaSet
ReplicationController用來確保容器應用的副本數始終保持在使用者定義的副本數,即如果有容器異常退出,會自動建立新的Pod來替代;而如果異常多出來的容器也會自動回收。
在新版本的Kubernetes中建議使用ReplicaSet來取代ReplicationController。ReplicaSet跟ReplicationController沒有本質的不同,只是名字不一樣,並且ReplicaSet支援集合式的selector。
雖然ReplicaSet可以獨立使用,但一般還是建議使用 Deployment 來自動管理ReplicaSet,這樣就無需
擔心跟其他機制的不相容問題(比如ReplicaSet不支援rolling-update但Deployment支援)。
ReplicaSet模板說明
apiVersion: apps/v1 #api版本定義 kind: ReplicaSet #定義資源型別為ReplicaSet metadata: #元資料定義 name: myapp namespace: default spec: #ReplicaSet的規格定義 replicas: 2 #定義副本數量為2個 selector: #標籤選擇器,定義匹配pod的標籤 matchLabels: app: myapp release: canary template: #pod的模板定義 metadata: #pod的元資料定義 name: myapp-pod #自定義pod的名稱 labels: #定義pod的標籤,需要和上面定義的標籤一致,也可以多出其他標籤 app: myapp release: canary environment: qa spec: #pod的規格定義 containers: #容器定義 - name: myapp-container #容器名稱 image: nginx:1.17.10-alpine #容器映象 ports: #暴露埠 - name: http containerPort: 80
詳細資訊
kubectl explain rs
kubectl explain rs.spec
kubectl explain rs.spec.template.spec
部署
replicasetdemo.yml
apiVersion: apps/v1 kind: ReplicaSet metadata: name: replicasetdemo labels: app: replicasetdemo spec: replicas: 3 template: metadata: name: replicasetdemo labels: app: replicasetdemo spec: containers: - name: replicasetdemo image: nginx:1.17.10-alpine imagePullPolicy: IfNotPresent ports: - containerPort: 80 restartPolicy: Always selector: matchLabels: app: replicasetdemo
執行ReplicaSet
執行ReplicaSet
kubectl apply -f replicasetdemo.yml
檢視rs控制器
kubectl get rs
檢視pod資訊
kubectl get pod
檢視pod詳細資訊
kubectl describe pod replicasetdemo-7fdd7b5f67-5gzfg
測試controller控制器下的pod刪除、重新被controller控制器拉起
kubectl delete pod --all
kubectl get pod
修改pod的副本數量:通過命令列方式
kubectl scale replicaset replicasetdemo --replicas=8
kubectl get rs
修改pod的副本數量:通過資源清單方式
kubectl edit replicasets.apps replicasetdemo
kubectl get rs
顯示pod的標籤
kubectl get pod --show-labels
修改pod標籤(label)
kubectl label pod replicasetdemo-652lc app=lagou --overwrite=True
再次顯示pod的標籤:發現多了一個pod,原來的rs中又重新拉起一個pod,說明rs是通過label去管理pod
kubectl get pod --show-labels
刪除rs
kubectl delete rs replicasetdemo
kubectl命令列工具適用於RC的絕大部分命令同樣適用於ReplicaSet,此外,很少單獨使用ReplicaSet,它主要被Deployment這個更高層的資源物件所使用,從而形成一整套Pod建立,刪除,更新的編排機制,我們在使用Deployment時無需關心它是如何維護和建立ReplicaSet的,這一切都是自動發生的
RC(ReplicaSet)的一些特性和作用:
- 在絕大多數情況下,我們通過定義一個RC實現Pod的建立及副本數量的自動控制
- 在RC裡包括完整的Pod定義模板
- RC通過Label Selector機制實現對Pod副本的自動控制
- 通過改變RC裡的Pod副本數量,可以實現Pod的擴容和縮容
- 通過改變RC裡Pod模板中的映象版本,可以實現滾動升級