解决使用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),若输出容器列表则成功。
