Containerd 節點映像檔


本頁面提供相關資訊,說明在 Google Kubernetes Engine (GKE) 節點中,使用 containerd 做為容器執行階段的節點映像檔。

關於 containerd

容器執行階段是負責執行容器的軟體,並為 Kubernetes 抽象化容器管理作業。容器執行階段有幾種。

containerd 執行階段是 Kubernetes 支援的業界標準容器執行階段,許多其他專案也使用這項執行階段。containerd 執行階段提供分層抽象化功能,可實作豐富的功能集,例如 gVisor映像檔串流,以擴充 GKE 功能。

相較於 Docker 執行階段,containerd 執行階段的資源效率更高,也更安全。

在 GKE 叢集中使用 Containerd 映像檔

建立新的 GKE 叢集、現有叢集中的新節點集區,或升級現有叢集時,您可以選擇使用 containerd 節點映像檔。GKE Autopilot 叢集一律使用 Container-Optimized OS (含 containerd)。

下表說明根據叢集模式和節點集區 OS 支援的 containerd 節點映像檔:

叢集模式 節點集區 OS 節點映像檔
Autopilot Linux cos_containerd
標準 Linux
  • cos_containerd
  • ubuntu_containerd
標準 Windows Server

這些映像檔需要 GKE 1.21.1-gke.2200 以上版本。

使用具備權限的 Pod 存取 Docker

如果使用者透過具備特殊權限的 Pod 存取節點上的 Docker Engine,您應更新這些工作負載,確保工作負載不會直接依附於 Docker。舉例來說,您可以考慮將記錄和監控擷取程序從 Docker Engine 遷移至 GKE 系統外掛程式。

使用 containerd 建構容器映像檔

無法使用 containerd 建構容器映像檔。搭載 containerd 的 Linux 映像檔包含 Docker 二進位檔,因此您可以使用 Docker 建構及推送映像檔。不過,我們不建議使用個別容器和本機節點執行指令來建構映像檔。

Kubernetes 不會得知 Kubernetes 範圍外的本機處理程序所用的系統資源,而且 Kubernetes 控制層在分配資源時無法計入這些處理程序。這可能會導致 GKE 工作負載資源不足,或節點不穩定。

請考慮改用個別容器範圍外的其他服務 (例如 Cloud Build) 來完成這些工作,或使用 kaniko 之類的工具,以 Kubernetes 工作負載的形式建構映像檔。

如果上述建議都不適用,且您瞭解相關風險,可以繼續在本機節點上使用 Docker 建構映像檔。您必須先將映像檔推送至登錄檔,才能在 GKE 叢集中使用。Kubernetes with containerd 不會得知在本機建構的 Docker 映像檔。

在 containerd 節點上偵錯容器

如要針對 Linux 節點進行偵錯或疑難排解,您可以利用專為 Kubernetes 容器執行階段建構的可攜式指令列工具 (crictl) 與 Containerd 互動。crictl 支援檢視容器和映像檔、讀取記錄檔,以及在容器中執行指令等常用功能。如需完整的支援功能和使用資訊,請參閱 crictl 使用手冊

如果是 Windows Server 節點,containerd daemon 會以名為 containerd 的 Windows 服務執行。

記錄的適用範圍如下:

  • Windows:C:\etc\kubernetes\logs\containerd.log
  • Linux:執行 journalctl -u containerd

您也可以在 LOG NAME: "container-runtime" 下方的記錄檔探索工具中,查看 Windows 和 Linux 節點的記錄。

已知問題和疑難排解

如要排解問題及瞭解已知問題的解決方法,請參閱「排解容器執行階段問題」。

後續步驟