Ubuntu 22.04 上 Kubeadm 和 CRI-O 的 Kubernetes 集群初始化失败

Ubuntu 22.04 上 Kubeadm 和 CRI-O 的 Kubernetes 集群初始化失败

我正在使用 Vagrant 在 Ubuntu Server LTS 22.04 上设置 Kubernetes 集群,其中 Kubernetes 版本 1.28.7 和 CRI-O 1.28.2 作为容器运行时。我在使用该kubeadm init命令初始化集群时遇到问题。尽管 kubelet 和 CRI-O 服务日志中都没有错误,但初始化失败。

使用的命令是:

sudo kubeadm init --config /etc/kubernetes/kubeadm-config.yaml --v=5

该过程在 upload-config/kubelet 阶段失败,并显示错误消息,表明未找到节点“master”。以下是命令输出的相关摘录:

[kubelet-check] Initial timeout of 40s passed. nodes "master" not found Error writing Crisocket information for the control-plane node

我检查了 CRI-O 中正在运行的容器,所有必要的 Kubernetes 组件似乎都在正确运行:

root@master:~# crictl --runtime-endpoint unix:///var/run/crio/crio.sock ps -a | grep kube | grep -v pause

这是 init 命令中使用的 kubeadm-config.yaml 文件:

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
clusterName: kubernetes
kubernetesVersion: v1.28.7
networking:
  podSubnet: 172.16.1.0/16
  serviceSubnet: 172.17.1.0/18
controlPlaneEndpoint: 10.0.0.101:6443
apiServer:
  certSANs:
    - 10.0.0.101
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
localAPIEndpoint:
  advertiseAddress: 10.0.0.101
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///var/run/crio/crio.sock
  imagePullPolicy: IfNotPresent
  name: master
  taints: null
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
...

我还确认“master”是节点的主机名,并检查了 /etc/crictl.yaml 配置:

runtime-endpoint: unix:///var/run/crio/crio.sock image-endpoint: unix:///var/run/crio/crio.sock timeout: 10 debug: false

我尝试使用 Kubernetes 1.29.2 并将容器运行时切换到 containerd,但没有成功。所有服务均已启动并运行,并且 10.0.0.101:6443 上的 Kubernetes API 可访问。kubeadm init 预检中没有错误。

版本:

Kubernetes:1.28.7 CRI-O:1.28.2 Ubuntu:22.04 Vagrant:2.4.1 如有任何见解或建议可解决此问题,我们将不胜感激。谢谢。

相关内容