You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

kubeadm join加入Kubernetes主节点失败:CRI端点选择及运行时连接问题求助

kubeadm join加入Kubernetes主节点失败:CRI端点选择及运行时连接问题求助

嗨,我来帮你梳理下这个问题~

首先看你遇到的第一个错误:系统里同时存在containerd和cri-dockerd两个CRI兼容的容器运行时端点,kubeadm没法自动判断用哪个,所以要求你明确指定。而你后来指定了crio的socket却报错找不到文件,这是因为你的节点上根本没安装crio运行时,自然连不上啦。

给你几个具体的解决步骤:

1. 先确认节点上实际运行的容器运行时

先检查系统里到底装了哪个(或哪几个)容器运行时处于活跃状态:

  • 检查containerd状态:
    systemctl status containerd
    
  • 检查docker/cri-dockerd状态(cri-dockerd是为docker提供CRI兼容的组件):
    systemctl status docker
    # 或者直接检查cri-dockerd服务
    systemctl status cri-dockerd
    

看哪个服务显示active (running),就选对应的运行时即可。

2. 使用正确的CRI Socket重新执行join命令

根据上面的检查结果,替换对应的--cri-socket参数:

  • 如果是containerd在运行:
    kubeadm join server:port --token xxx --discovery-token-ca-cert-hash sha256:xxxx --cri-socket unix:///var/run/containerd/containerd.sock
    
  • 如果是docker/cri-dockerd在运行:
    kubeadm join server:port --token xxx --discovery-token-ca-cert-hash sha256:xxxx --cri-socket unix:///var/run/cri-dockerd.sock
    

3. (可选)用配置文件永久指定CRI Socket

如果不想每次执行join都加参数,可以创建一个kubeadm的join配置文件(比如join-config.yaml):

apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
discovery:
  bootstrapToken:
    apiServerEndpoint: "server:port"
    token: "xxx"
    caCertHashes:
    - "sha256:xxxx"
nodeRegistration:
  criSocket: "unix:///var/run/containerd/containerd.sock" # 替换成你实际的socket路径

然后执行:

kubeadm join --config join-config.yaml

另外建议你尽量和K8s主节点使用相同的容器运行时,这样能避免很多兼容性问题哦~

备注:内容来源于stack exchange,提问作者noob_coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:50:35