您好,登錄后才能下訂單哦!
如何理解ReplicationController及其配置,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
在介紹ReplicationController
之前,我們先思考一下下圖所示的場景,Kubernetes集群包含2個Node,每個Node上均運行一個同類型的Pod來做負載均衡,如果其中某個Node被管理員強制關機或者Node意外宕機時,會發生什么呢?
由于Pod被調度到某個Node后就與Node綁定,當Node宕機后,Node中的所有Pod也都停止運行。 上圖所示場景中,Node2被關閉后,相應的Pod-2也會停止,Pod-2并不會重新被調度到Node1。
實際應用場景中,維持穩定的Pod副本數是非常必要的,因此Kubernetes引入了ReplicationController
。
ReplicationController
用于定義指定Pod的副本數,與創建多個Pod相比,它可以保證Pod意外終止后,集群中仍會有指定個數的Pod副本在運行。運行于kube-controller-manager
組件中的ReplicationController
控制器(控制器和資源名相同)會監控集群中Pod的副本數:
如果Pod數量已經超出預期,那么ReplicationController將會刪除部分Pod,使Pod數量符合預期。
如果Pod數量低于預期,那么ReplicationController將會創建新的Pod,使用Pod數量符合預期。
ReplicationController
控制器會時刻監控Pod的副本數量,一旦發現Pod數量不符合預期(Pod數量過多或過少),均會通過增加或刪除Pod的手段來讓Pod維持在預期數量。
ReplicationController
控制器更像是一個Pod監管者,它監管的是整個集群范圍的Pod。在本節開頭中所引用的場景中,如果使用ReplicationController
創建兩個Pod的副本,當其中一個Pod意外終止后,新的Pod會被創建出來,從而保證集群中仍有兩個副本在運行,整體工作機制如下圖所示:
通過示意圖可以看到,通過ReplicationController
創建兩個Pod情況下,當Node2被關閉后,運行于其上的Pod被重新調度到Node1中運行,集群中總的Pod數始終保持在2個。
一個簡單的ReplicationController
資源配置如下所示:
apiVersion: v1 kind: ReplicationController metadata: name: replication-controller-runs-pod spec: replicas: 3 selector: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.19.0
其中有三個關鍵的項:
spec.replicas
指定了期望的Pod副本數;
spec.selector
指定了Selector,ReplicationController
正是通過該Selector來查找Pod對象;
spec.template
指定了Pod的模版,當ReplicationController
發現Pod數量低于預期時將使用該模版創建新的Pod。
Pod模版用于Kubernetes內部動態地創建Pod,它廣泛應用于各種控制器中,包括本節中介紹的ReplicationController
,以及后續將要介紹的Deployments
、Jobs
和DaemonSets
等等。
從數據結構上看,Pod模版(PodTemplateSpec)可以理解為簡化版的Pod,它只保留了Pod的Metadata和Spec,如下所示:
type PodTemplateSpec struct { // Metadata of the pods created from this template. // +optional metav1.ObjectMeta // Spec defines the behavior of a pod. // +optional Spec PodSpec }
ReplicationController
設計初衷是維持集群中指定類型Pod的副本數,但它只支持等值Selector,不支持基于集合的Selector。為了不違背API兼容性原則,Kubernetes不得已提供了另一種制器ReplicaSet
來替換它。
所以,實際場景中幾乎不會用到ReplicationController
,雖然它是一個穩定的API。
看完上述內容,你們掌握如何理解ReplicationController及其配置的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。