![Ubuntu 22.04 上 Kubeadm 和 CRI-O 的 Kubernetes 集群初始化失败](https://linux22.com/image/793453/Ubuntu%2022.04%20%E4%B8%8A%20Kubeadm%20%E5%92%8C%20CRI-O%20%E7%9A%84%20Kubernetes%20%E9%9B%86%E7%BE%A4%E5%88%9D%E5%A7%8B%E5%8C%96%E5%A4%B1%E8%B4%A5.png)
我正在使用 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 如有任何见解或建议可解决此问题,我们将不胜感激。谢谢。