Linux中國

Kubernetes 複製控制器如何工作

你有沒有想過,誰負責監督和管理 Kubernetes 集群內運行的「 吊艙 pod 」的確切數量?Kubernetes 可以通過多種方式做到這一點,但一個常見的方法是使用 「 複製控制器 ReplicationController (RC)」。RC 負責管理吊艙的生命周期,並確保在任何時候運行著所需的指定數量的吊艙。但另一方面,它不負責高級的集群能力,如執行自動擴展、準備度和活躍探測以及其他高級的複製能力。Kubernetes 集群中的其他組件可以更好地執行這些功能。

簡而言之,RC 的職責有限,通常用於不需要複雜邏輯就能達到某些要求的具體實現(例如,確保所需的吊艙數量總是與指定的數量相符)。如果超過了所需的數量,RC 會刪除多餘的,並確保即使在節點故障或吊艙終止的情況下,也有相同數量的存在。

簡單的事情不需要複雜的解決方案,對我來說,這就是 RC 如何被使用的一個完美的比喻。

如何創建一個 RC

像大多數 Kubernetes 資源一樣,你可以使用 YAML 或 JSON 格式創建一個 RC,然後將其發布到 Kubernetes API 端點。

$ kubectl create -f rcexample.yaml
 replicationcontroller/rcexample created

現在,我將深入一下 rcexample.yaml 的樣子。

apiVersion: v1
kind: ReplicationController   →  RC 描述符    
metadata:
 name: rcexample            →  複製控制器名字              
spec:
 replicas: 3                 → 預期的吊艙數量      
 selector:                  → 這個 RC 的吊艙選擇器
   app: nginx                        
 template:                  → 用於創建新吊艙的模板    
   metadata:                        
     labels:                        
       app: nginx                    
   spec:                            
     containers:                    
     - name: nginx                  
       image: nginx

進一步解釋,這個文件在執行時創建了一個名為 rcexample 的 RC,確保三個名為 nginx 的吊艙實例一直在運行。如果一個或所有的 app=nginx 吊艙沒有運行,新的吊艙將根據定義的吊艙模板創建。

一個 RC 有三個部分:

  • 複製品:3
  • 吊艙模板:app=nginx
  • 吊艙選擇器:app=nginx

注意,吊艙模板要與吊艙選擇器相匹配,以防止 RC 一直創建吊艙。如果你創建的 RC 的吊艙選擇器與模板不匹配,Kubernetes API 伺服器會給你一個錯誤。

為了驗證 RC rcexample 是否被創建:

$ kubectl get po
NAME     READY   STATUS       RESTARTS  AGE
rcexample-53thy  0/1  Running         0     10s
rcexample-k0xz6  0/1  Running         0     10s
rcexample-q3vkg  0/1  Running         0     10s

要刪除 RC:

$ kubectl delete rc rcexample
 replicationcontroller "rcexample" deleted

注意,你可以對 RC 中的服務使用 滾動更新 策略,逐個替換吊艙。

其他複製容器的方法

在 Kubernetes 部署中,有多種方法可以實現容器的複製。Kubernetes 成為容器平台的主要選擇的主要原因之一是複製容器以獲得可靠性、負載平衡和擴展的原生能力。

我在上面展示了你如何輕鬆地創建一個 RC,以確保在任何時候都有一定數量的吊艙可用。你可以通過更新副本的數量來手動擴展吊艙。

另一種可能的方法是通過使用 「 複製集 ReplicaSet (RS)」來達到複製的目的。

(kind: ReplicaSet)

RS 的功能幾乎與 RC 相同。主要區別在於,RS 不允許滾動更新策略。

另一種實現複製的方法是通過使用 「 部署 Deployments 」。

(kind: Deployment)

部署是一種更高級的容器複製方法。從功能上講,部署提供了相同的功能,但在需要時可以推出和回滾變化。這種功能之所以能夠實現,是因為部署有 「 策略類型 StrategyType 」 規範來用新的吊艙替換舊的吊艙。你可以定義兩種類型的部署策略:「 重新創建 Recreate 」 和 「 滾動更新 RollingUpdate 」。你可以如下指定部署策略:

StrategyType: RollingUpdate

總結

容器的複製功能是大多數企業考慮採用 Kubernetes 的主要原因之一。複製可以讓你達到大多數關鍵應用程序需要的可靠性和可擴展性,作為生產的最低要求。

了解在 Kubernetes 集群中使用哪些方法來實現複製,對於決定哪種方法最適合你的應用架構考慮非常重要。

via: https://opensource.com/article/21/11/kubernetes-replicationcontroller

作者:Mike Calizo 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...
    Linux中國

    SSL/TLS 加密新紀元 – Lets Encrypt

    根據 Let's Encrypt 官方博客消息,Let's Encrypt 服務將在下周(11 月 16 日)正式對外開放。 Let's Encrypt 項目是由互聯網安全研究小組(ISRG,Internet Security Research Group)主導並開發的一個新型數字證書認證機構(CA,Certificate ...