1. 程式人生 > 程式設計 >淺談node node-sass sass-loader版本對應問題

淺談node node-sass sass-loader版本對應問題

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模板中的映象版本,可以實現滾動升級
每個人都有潛在的能量,只是很容易被習慣所掩蓋,被時間所迷離,被惰性所消磨~