记录解决containerd安装K8S出现“As the default settings are now deprecated, you should set the endpoint inste”

当你使用contained方式安装K8S出现以下问题时:

[root@node4 yum.repos.d]# crictl pull nginx:alpine
WARN[0000] image connect using default endpoints: [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead. 
ERRO[0000] unable to determine image API version: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial unix /var/run/dockershim.sock: connect: no such file or directory" 
Image is up to date for sha256:804f9cebfdc58964d6b25527e53802a3527a9ee880e082dc5b19a3d5466c43b7
[root@node4 yum.repos.d]# crictl images
WARN[0000] image connect using default endpoints: [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead. 
ERRO[0000] unable to determine image API version: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial unix /var/run/dockershim.sock: connect: no such file or directory" 
IMAGE                     TAG                 IMAGE ID            SIZE
docker.io/library/nginx   alpine              804f9cebfdc58       10.2MB

翻译过来就是:

ARN[0000] 映像使用默认端点进行连接:[unix:///var/run/dockershim.sock 
unix:///run/containerd/containerd.sock 
unix:///run/crio/crio.sock 
unix:///var/run/cri-dockerd.sock]。由于默认设置现已弃用,因此应改为设置终结点。
ERRO[0000] 无法确定映像 API 版本: rpc 错误: 代码 = 不可用 desc = 连接错误:
 desc = “传输: 拨号盘 unix /var/run/dockershim.sock 时出错: 连接: 没有这样的文件或目录”

这里做个crictl的简单解释:
我们使用containerd方式安装K8S,crictl工具作为镜像管理的客户端工具
crictl 是 CRI 兼容的容器运行时命令行接口。 可以通过 crictl 在Kubernetes节点检查( inspect )和debug容器runtime和应用程序。
crictl 和它的源代码在 cri-tools 代码库。

我自己使用contained的方式安装K8S集群,就出现以上的那张错误。
经过检查,我发现我配置crictl的配置文件内容没有问题:

[root@node4 yum.repos.d]# cat /etc/crictl.yal 
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false

解决办法:创建/etc/crictl.yaml 文件,并且写入下面内容

而出错的原因竟然是:我把哪个crictl的配置文件后缀写成了yml,我本来以为写的都是yaml语法格式而且yml也是大部分可以作为yaml文件后缀的,但是在安装K8S的时候是不算的,必须严格按照yaml的后缀写:

[root@node4 yum.repos.d]# mv /etc/crictl.yml  /etc/crictl.yaml 
[root@node4 yum.repos.d]# crictl images
IMAGE                     TAG                 IMAGE ID            SIZE
docker.io/library/nginx   alpine              804f9cebfdc58       10.2MB
#

所以,现在就算解决一个错误了。

相关链接:
https://www.cnblogs.com/aozhejin/p/16193359.html
https://cloud-atlas.readthedocs.io/zh_CN/latest/kubernetes/debug/crictl.html#:~:text=crictl%20%E5%91%BD%E4%BB%A4%E9%BB%98%E8%AE%A4%E8%BF%9E%E6%8E%A5%E5%88%B0%20unix%3A%2F%2F%2Fvar%2Frun%2Fdockershim.sock%20%E5%A6%82%E6%9E%9C%E8%A6%81%E8%BF%9E%E6%8E%A5%E5%88%B0%E5%85%B6%E4%BB%96runtimes%EF%BC%8C%E9%9C%80%E8%A6%81%E8%AE%BE%E7%BD%AE%20endpoint%3A%20%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0,–runtime-endpoint%20%E5%92%8C%20–image-endpoint%20%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E8%AE%BE%E7%BD%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%20CONTAINER_RUNTIME_ENDPOINT%20%E5%92%8C%20CONTAINER_RUNTIME_ENDPOINT

你可能感兴趣的:(Kubernetes,linux,kubernetes,unix,云原生,容器,docker)