解決使用crictl命令時報默認端點棄用的報錯
報錯核心原因
- 默認端點棄用:
crictl
會默認嘗試多個容器運行時端點(如dockershim.sock
、containerd.sock
等),但這種 “自動探測” 方式已被 Kubernetes 棄用(官方要求手動指定明確的運行時端點)。 dockershim.sock
失效:
Kubernetes 1.24+ 版本徹底移除了dockershim
(Docker 與 K8s 通信的中間層),若集群未使用cri-dockerd
適配 Docker,/var/run/dockershim.sock
本身就不存在,導致連接報錯。
集群使用 containerd
作為容器運行時(K8s 1.24+ 主流推薦)
大部分現代 K8s 集群默認用 containerd
,按以下步驟修復:
# 確認containerd服務的狀態
systemctl status containerd # 手動指定crictl的運行時端點
# 創建/修改配置文件
cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
EOF
重新執行 crictl
命令(如 crictl ps
),若輸出容器列表則成功。