找出節點上使用的容器執行期
本頁概述找出叢集中節點所使用的容器執行期的步驟。
取決於您執行叢集的方式,節點的容器執行期可能已預先設定,或者您需要自行設定。如果您使用託管的 Kubernetes 服務,可能會有廠商特定的方法來檢查節點設定的容器執行期。只要允許執行 kubectl
,本頁描述的方法應該都適用。
開始之前
安裝和設定 kubectl
。請參閱安裝工具章節以取得詳細資訊。
找出節點上使用的容器執行期
使用 kubectl
擷取並顯示節點資訊
kubectl get nodes -o wide
輸出類似於以下內容。CONTAINER-RUNTIME
欄會輸出執行期及其版本。
對於 Docker Engine,輸出類似於此
NAME STATUS VERSION CONTAINER-RUNTIME
node-1 Ready v1.16.15 docker://19.3.1
node-2 Ready v1.16.15 docker://19.3.1
node-3 Ready v1.16.15 docker://19.3.1
如果您的執行期顯示為 Docker Engine,您仍然可能不受 Kubernetes v1.24 中 dockershim 移除的影響。檢查執行期端點以查看您是否使用 dockershim。如果您未使用 dockershim,則不受影響。
對於 containerd,輸出類似於此
NAME STATUS VERSION CONTAINER-RUNTIME
node-1 Ready v1.19.6 containerd://1.4.1
node-2 Ready v1.19.6 containerd://1.4.1
node-3 Ready v1.19.6 containerd://1.4.1
在容器執行期頁面上找到關於容器執行期的更多資訊。
找出您使用的容器執行期端點
容器執行期透過 Unix socket 使用CRI 協定與 kubelet 通訊,該協定基於 gRPC 框架。kubelet 作為用戶端,而執行期作為伺服器。在某些情況下,您可能會發現知道節點使用的 socket 很有用。例如,隨著 Kubernetes v1.24 及更高版本中 dockershim 的移除,您可能想知道您是否將 Docker Engine 與 dockershim 一起使用。
注意
如果您目前在節點中使用 Docker Engine 與cri-dockerd
,則不受 dockershim 移除的影響。您可以透過檢查節點上的 kubelet 組態來檢查您使用的 socket。
讀取 kubelet 程序的啟動命令
tr \\0 ' ' < /proc/"$(pgrep kubelet)"/cmdline
如果您沒有
tr
或pgrep
,請手動檢查 kubelet 程序的命令列。在輸出中,尋找
--container-runtime
標誌和--container-runtime-endpoint
標誌。- 如果您的節點使用 Kubernetes v1.23 及更早版本,並且這些標誌不存在,或者如果
--container-runtime
標誌不是remote
,則您將 dockershim socket 與 Docker Engine 一起使用。--container-runtime
命令列引數在 Kubernetes v1.27 及更高版本中不可用。 - 如果
--container-runtime-endpoint
標誌存在,請檢查 socket 名稱以找出您使用的執行期。例如,unix:///run/containerd/containerd.sock
是 containerd 端點。
- 如果您的節點使用 Kubernetes v1.23 及更早版本,並且這些標誌不存在,或者如果
如果您想將節點上的容器執行期從 Docker Engine 變更為 containerd,您可以在從 Docker Engine 遷移至 containerd 上找到更多資訊,或者,如果您想在 Kubernetes v1.24 及更高版本中繼續使用 Docker Engine,請遷移到 CRI 相容的適配器,例如 cri-dockerd
。