这个问题在搭建K8S集群时卡了很久,使用了网上各种方法,今天查看日志很快就解决了,记录一下
- 在执行命令,初始化时:
kubeadm init --kubernetes-version=v1.27.3 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.229.130 --cri-socket unix:///var/run/containerd/containerd.sock --image-repository=registry.aliyuncs.com/google_containers
一直报:Initial timeout of 40s passed
- 通过查看最近日志命令:
journalctl -xeu kubelet
显示如下关键信息:
"Failed to create sandbox for pod" err="rpc error: code = Unknown desc = failed to get sandbox image \"registry.k8s.io/pause:3.9\": Nov 09 20:51:04 k8s-master01 kubelet[2419]: E1109 20:51:04.758537 2419 kuberuntime_manager.go:1122] "CreatePodSandbox for pod failed" err="rpc error: code = Unknown desc = failed to get sandbox image \"registry.k8s.io/pause:3.9\": Nov 09 20:51:04 k8s-master01 kubelet[2419]: E1109 20:51:04.758676 2419 pod_workers.go:1294] "Error syncing pod, skipping" err="failed to \"CreatePodSandbox\" for \"etcd-k8s-master01_kube-system(f8a4e376478b3967dd37cff6e30cd610)\" Nov 09 20:51:04 k8s-master01 kubelet[2419]: E1109 20:51:04.759457 2419 remote_runtime.go:176] "RunPodSandbox from runtime service failed" err="rpc error: code = Unknown desc
- 问题分析:pause容器还是用的k8s.gcr.io/pause:3.9,该镜像在国内服务器下载不成功。
所以在初始化前修改/etc/containerd/config.toml 的镜像地址参数为国内aliyun地址:
vi /etc/containerd/config.toml
sandbox_image = "registry.aliyuncs.com/k8sxio/pause:3.9"
- 然后重启containerd:
systemctl restart containerd
再次执行k8s初始化命令就成功了