查詢節點上使用的容器執行時
本頁面介紹查詢叢集中節點使用的容器執行時的步驟。
根據你執行叢集的方式,節點的容器執行時可能已經預先配置好,或者你需要進行配置。如果你使用的是託管的 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 套接字使用基於 gRPC 框架的 CRI 協議與 kubelet 通訊。kubelet 充當客戶端,執行時充當伺服器。在某些情況下,你可能會發現瞭解你的節點使用哪個套接字很有用。例如,隨著 Kubernetes v1.24 及更高版本中 dockershim 的移除,你可能想知道你是否使用了帶 dockershim 的 Docker Engine。
注意
如果你當前在節點上使用帶cri-dockerd
的 Docker Engine,則不受 dockershim 移除的影響。你可以透過檢查節點上的 kubelet 配置來檢視你使用哪個套接字。
讀取 kubelet 程序的啟動命令
tr \\0 ' ' < /proc/"$(pgrep kubelet)"/cmdline
如果你沒有
tr
或pgrep
,請手動檢查 kubelet 程序的命令列。在輸出中,查詢
--container-runtime
標誌和--container-runtime-endpoint
標誌。- 如果你的節點使用 Kubernetes v1.23 及更早版本,並且這些標誌不存在,或者
--container-runtime
標誌不是remote
,則你使用帶 Docker Engine 的 dockershim 套接字。--container-runtime
命令列引數在 Kubernetes v1.27 及更高版本中不可用。 - 如果
--container-runtime-endpoint
標誌存在,請檢查套接字名稱以查詢你使用的執行時。例如,unix:///run/containerd/containerd.sock
是 containerd 端點。
- 如果你的節點使用 Kubernetes v1.23 及更早版本,並且這些標誌不存在,或者
如果你想將節點上的容器執行時從 Docker Engine 更改為 containerd,你可以在從 Docker Engine 遷移到 containerd 中找到更多資訊,或者,如果你想在 Kubernetes v1.24 及更高版本中繼續使用 Docker Engine,請遷移到 CRI 相容的介面卡,如 cri-dockerd
。