介紹

  • Replication Controller:確保有「固定數量」的 Pod 在運行。
  • ReplicaSet:和 Replication Controller 類似,但更靈活,可使用標籤篩選Pod,負責管理 Pod 的數量。
  • Deployment:管理和控制 ReplicaSet,讓你可以輕鬆升級、回滾和更新 Pod。
  • DaemonSet:確保每一台機器上都運行一個 Pod,適用於需要在每個 Node 上執行的服務。

Replication Controller

  1. Replication Controller (RC)
    Replication Controller 就像是一個「監視員」,它的工作是確保 Kubernetes 集群中有指定數量的 Pod 在運行。
  • 想像你開了一家餐廳,你希望廚房裡總是有 3 位廚師在工作。Replication Controller 就是那個一直在監視廚房的人,如果發現少了廚師(Pod 故障了),它就會立刻找一個新的來補上。
  • 同樣地,如果多出來的廚師(Pod)不需要,Replication Controller 也會請多餘的廚師離開,確保始終保持你指定的數量。

簡單來說:Replication Controller 負責保持「指定數量」的 Pod 在運行。

ReplicaSet 與 Deployment

ReplicaSet

ReplicaSet 是更進一步發展的版本,主要區別在於,ReplicaSet 支援更複雜的標籤(label)選擇器,可以更靈活地找到並管理 Pod。

Deployment

像是ReplicaSet的『管理者』,他負責管理和控制ReplicaSet,如果你的應用程式需要升級,Deployment 可以做到逐步替換 Pod,避免服務中斷,這是因為它採用了 滾動更新(Rolling Update) 的機制,這種機制可以讓新的 Pod 逐步取代舊的 Pod,而不是一次性地停止所有舊的 Pod。

Deployment 可以做到逐步替換 Pod,避免服務中斷,這是因為它採用了 滾動更新(Rolling Update) 的機制,這種機制可以讓新的 Pod 逐步取代舊的 Pod,而不是一次性地停止所有舊的 Pod。

Deployment 的滾動更新

  • 它先關掉一個舊的 Pod,然後啟動一個新的 Pod,確保在這個過程中總有 Pod 在處理請求。
  • 這個過程會繼續下去,直到所有舊的 Pod 都被新的 Pod 替換掉。

具體運作方式

  1. 設定 replicas:假設你設定了 5 個 replicas(Pod 副本數量),代表 Kubernetes 集群會保持有 5 個 Pod 在運行。
  2. 逐步替換:
    • Deployment 會先關掉一個舊的 Pod,然後立刻啟動一個新的 Pod。
    • 等新 Pod 啟動並運行正常後,再關掉另一個舊的 Pod,啟動下一個新的 Pod。
    • 這個過程會持續進行,直到所有 Pod 都被替換成新的版本。

關於 Deployment 設定的彈性
你可以透過設定 maxUnavailablemaxSurge 來控制替換的速度。

  • maxUnavailable:定義在更新過程中允許多少個 Pod 可以暫時不可用(例如,可以設定為 1,代表只允許一個 Pod 同時不可用)。
  • maxSurge:定義在更新過程中允許超出 replicas 數量的額外 Pod 數量(例如,設定為 1,代表可以多啟動一個新的 Pod 以加速更新過程)。

DaemonSet

DaemonSet 是 Kubernetes 中的「全職員工分配員」,它的工作是確保**每一台機器(Node)**上都運行著一個 Pod。

  • 想像你是一位經理,你想要在每一個餐廳分店(Node)裡都安排一位清潔工(Pod)來清掃。DaemonSet 就是負責確保每一家分店都有一位清潔工的人。
  • 不管你開了多少家分店,DaemonSet 都會自動在每家店安排一個 Pod,如果你關閉一家店,它也會自動移除該 Pod。

簡單來說:DaemonSet 保證每個 Node 上都運行一個 Pod,適合需要在每台機器上都執行的應用程式,例如日誌收集、監控代理等。