CRI-tools

通常,容器引擎會提供一個命令行工具來幫助用戶調試容器應用並簡化故障排錯。比如使用 Docker 作爲容器運行時的時候,可以使用 docker 命令來查看容器和鏡像的狀態,並驗證容器的配置是否正確。但在使用其他容器引擎時,推薦使用 crictl 來替代 docker 工具。

crictlcri-toolsarrow-up-right 的一部分,它提供了類似於 docker 的命令行工具,不需要通過 Kubelet 就可以通過 CRI 跟容器運行時通信。它是專門爲 Kubernetes 設計的,提供了Pod、容器和鏡像等資源的管理命令,可以幫助用戶和開發者調試容器應用或者排查異常問題。crictl 可以用於所有實現了 CRI 接口的容器運行時。

注意,crictl 並非 kubectl 的替代品,它只通過 CRI 接口與容器運行時通信,可以用來調試和排錯,但並不用於運行容器。雖然 crictl 也提供運行 Pod 和容器的子命令,但這些命令僅推薦用於調試。需要注意的是,如果是在 Kubernetes Node 上面創建了新的 Pod,那麼它們會被 Kubelet 停止並刪除。

除了 crictl,cri-tools 還提供了用於驗證容器運行時是否實現 CRI 需要功能的驗證測試工具 critestcritest 通過運行一系列的測試驗證容器運行時在實現 CRI 時是否與 Kubelet 的需求一致,推薦所有的容器運行時在發佈前都要通過其測試。一般情況下,critest 可以作爲容器運行時集成測試的一部分,用以保證代碼更新不會破壞 CRI 功能。

cri-tools 已在 v1.11 版 GA,詳細使用方法請參考 kubernetes-sigs/cri-toolsarrow-up-rightDebugging Kubernetes nodes with crictlarrow-up-right

crictl 示例

查詢 Pod

$ crictl pods --name nginx-65899c769f-wv2gp
POD ID              CREATED             STATE               NAME                     NAMESPACE           ATTEMPT
4dccb216c4adb       2 minutes ago       Ready               nginx-65899c769f-wv2gp   default             0

Pod 列表

$ crictl pods
POD ID              CREATED              STATE               NAME                         NAMESPACE           ATTEMPT
926f1b5a1d33a       About a minute ago   Ready               sh-84d7dcf559-4r2gq          default             0
4dccb216c4adb       About a minute ago   Ready               nginx-65899c769f-wv2gp       default             0
a86316e96fa89       17 hours ago         Ready               kube-proxy-gblk4             kube-system         0
919630b8f81f1       17 hours ago         Ready               nvidia-device-plugin-zgbbv   kube-system         0

鏡像列表

容器列表

容器內執行命令

容器日誌

參考文檔

Last updated