Kubernetes 自我修復

Kubernetes 的設計具備自癒能力,有助於維護工作負載的健康狀態與可用性。它會自動取代失敗的容器、在節點不可用時重新排程工作負載,並確保維持系統的預期狀態。

自癒 (Self-Healing) 能力

  • 容器層級重啟:如果 Pod 內的容器失敗,Kubernetes 會根據 restartPolicy 將其重啟。

  • 副本替換:如果 DeploymentStatefulSet 中的 Pod 失敗,Kubernetes 會建立一個替換的 Pod,以維持指定的副本數量。如果屬於 DaemonSet 的 Pod 失敗,控制平面會建立一個替換的 Pod 以在相同節點上執行。

  • 持久性儲存復原:如果某個節點正在執行掛載了持久性儲存卷 (PersistentVolume, PV) 的 Pod,而該節點發生故障,Kubernetes 可以將該儲存卷重新掛載到不同節點上的新 Pod。

  • 服務 (Services) 的負載平衡:如果 Service 後端的 Pod 失敗,Kubernetes 會自動將其從該 Service 的端點 (endpoints) 中移除,以便僅將流量路由到健康的 Pod。

以下是提供 Kubernetes 自癒能力的一些關鍵元件:

  • kubelet確保容器正常執行,並重啟那些失敗的容器。

  • Deployment (透過 ReplicaSet)、ReplicaSet、StatefulSet 和 DaemonSet 控制器:維護 Pod 副本的預期數量。

  • PersistentVolume 控制器:管理有狀態工作負載的儲存卷掛載與卸載。

考量因素

  • 儲存故障:如果持久性儲存卷變得不可用,可能需要採取復原步驟。

  • 應用程式錯誤:Kubernetes 可以重啟容器,但底層應用程式的問題必須另外解決。

接下來


最後修改於 2025 年 11 月 20 日下午 8:48 (PST):修正格式 (ac13c80817)