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
相关产品推荐
相关产品推荐

