Found multiple CRI endpoints on the host. Please define which one do you wish to use by setting the

文章讲述了在部署Kubernetes时遇到的CRI端点冲突问题,提示用户在kubeadm配置文件中设置`--cri-socketunix:///var/run/cri-dockerd.sock`来指定Docker作为CRI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kubeadm join 192.168.124.13:6443 --token l9u5pi.1gayyedhjsa8uchn 
--discovery-token-ca-cert-hash sha256:729d85453ae80664618f5278030833ad858e7608956276b8

执行命令报错:Found multiple CRI endpoints on the host. Please define which one do you wish to use by setting the ‘criSocket’ field in the kubeadm configuration file: unix:///var/run/containerd/containerd.sock, unix:///var/run/cri-dockerd.sock
To see the stack trace of this error execute with --v=5 or higher

这个错误表明在您的环境中存在多个容器运行时接口(Container Runtime Interface,CRI)端点,Kubernetes 不确定应该使用哪一个。要解决这个问题,您需要在 kubeadm 配置文件中明确指定要使用的 CRI 端点。

解决方法:
添加--cri-socket unix:///var/run/cri-dockerd.sock

kubeadm join 192.168.124.13:6443 --token l9u5pi.1gayyedhjsa8uchn 
     --discovery-token-ca-cert-hash sha256:729d85453ae80664618f5278030833ad858e7608956276b8 
     --cri-socket unix:///var/run/cri-dockerd.sock
### 多个CRI端点解决方案 当在主机上检测到多个容器运行时接口(Container Runtime Interface, CRI)端点时,通常是因为存在多种兼容的容器运行时环境。这可能导致Kubernetes无法正确识别应该使用的默认运行时。为了处理这种情况,可以采取以下措施: #### 1. 明确指定默认CRI插件 通过配置`/etc/containerd/config.toml`文件来设置默认的CRI插件。例如,在containerd环境中可以通过如下方式定义默认运行时[^1]: ```toml [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] runtime_type = "io.containerd.runc.v2" ``` 此操作确保仅有一个明确的运行时被选作主要执行者。 #### 2. 修改kubelet参数 如果系统中有多个cri-o或containerd服务正在运行,则需调整kubelet启动选项以指向特定的一个CRI实现。可通过编辑`/var/lib/kubelet/config.yaml`或者命令行参数加入下面的内容: ```yaml apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration cgroupDriver: systemd runtimeRequestTimeout: "15m" containerRuntimeEndpoint: unix:///run/containerd/containerd.sock imageServiceEndpoint: unix:///run/containerd/containerd.sock ``` 上述代码片段指定了kubelet应连接至哪个具体的socket地址作为其通信目标[^3]。 #### 3. 停用不必要的CRI服务 另一种方法是停用不需要的服务进程。比如如果有两个不同的docker daemon版本共存于同一台机器上,可以选择保留最新稳定版并停止旧版服务。 ```bash sudo systemctl stop docker.service sudo systemctl disable docker.service ``` 完成这些更改之后重启相关组件使改动生效,并验证问题是否得到解决。 ```bash sudo systemctl restart containerd sudo systemctl restart kubelet kubectl get nodes ``` 以上步骤有助于消除因多CRI端点引发的选择冲突状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值