记录一次kubeadm安装失败

1,206 阅读3分钟

记录一次kubeadm安装失败

1 整个问题定位历程

先来说下结论,是国内无法拉取镜像导致的!!但是在kubeadm init命令的参数中指定了仓库地址,依旧出现了此问题!!!整个问题定位过程放在下边:

当执行 kubeadmin init 时 报错如下:

[etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[kubelet-check] Initial timeout of 40s passed.
​
Unfortunately, an error has occurred:
        timed out waiting for the condition

看到初始化超时,大概能知道是国内无法访问k8s原始镜像仓库导致的。

  • 所以检查了 /etc/docker/daemon.json下的镜像仓库配置,并尝试docker pull是否可以拉取镜像。docker一切正常!!
  • 然后检查了 kubeadm使用的仓库 命令: kubeadm config image list ,然而这个命令只是打印默认配置。所以挨个查看/etc/kubernetes/manifests/下的所有的配置的镜像仓库,都已经被替换了国内的镜像源
  • 看看docker本地有没有k8s的相关镜像呢,docker images查看了一下,阿里的镜像已经下载到本地了
  • 那看看有没有已经启动的容器吧,结果一个容器都没有启动
  • 最后只能盯着kubelet的日志了,好吧,最终还是在这里发现了问题
Mar 25 11:47:39 k8s01 kubelet: E0325 11:47:39.812016   54586 pod_workers.go:965] "Error syncing pod, skipping" err="failed to "CreatePodSandbox" for "etcd-node_kube-system(8b3d894ca53eebe9fe8bbaebc598c541)" with CreatePodSandboxError: "Failed to create sandbox for pod \"etcd-node_kube-system(8b3d894ca53eebe9fe8bbaebc598c541)\": rpc error: code = Unknown desc = failed pulling image \"registry.k8s.io/pause:3.6\": Error response from daemon: Head https://asia-east1-docker.pkg.dev/v2/k8s-artifacts-prod/images/pause/manifests/3.6: dial tcp 74.125.23.82:443: connect: connection refused"" pod="kube-system/etcd-node" podUID=8b3d894ca53eebe9fe8bbaebc598c541

在创建etcd的时候拉取了registry.k8s.io/pause:3.6镜像,自然是无法访问的。好吧只能手动将阿里的镜像中对应的tag下载到本地,在修改tag了。修改完成后想着继续kubeadm init 下看看,结果惊喜的发现,好多端口被占用,果然docker ps 一看,一些容器已经起来了

docker pull registry.aliyuncs.com/google_containers/pause:3.6
---
docker tag registry.aliyuncs.com/google_containers/pause:3.6 registry.k8s.io/pause:3.6
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.26.3             registry.k8s.io/kube-apiserver:v1.26.3
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.26.3  registry.k8s.io/kube-controller-manager:v1.26.3
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.26.3             registry.k8s.io/kube-scheduler:v1.26.3
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.26.3                  registry.k8s.io/kube-proxy:v1.26.3
docker tag registry.aliyuncs.com/google_containers/pause:3.9                              registry.k8s.io/pause:3.9 
docker tag registry.aliyuncs.com/google_containers/etcd:3.5.6-0                          registry.k8s.io/etcd:3.5.6-0
docker tag registry.aliyuncs.com/google_containers/coredns:v1.9.3                       registry.k8s.io/coredns/coredns:v1.9.3

顺便把其他的镜像也搞一份 registry.k8s.io的tag,因为后边创建cni flannel的时候pod已经在init,还是镜像有问题,就把上边这些都做了修改。结果就好了,没有继续查看原因了

至此问题定位完成了,但是环境已经一团糟了

执行kubeadm reset 报错了,只能先删除了有关的目录 /etc/kubernetes/* 和 /var/lib/etcd/* 下的东西之后 把在运行的相关容器停止了,重新执行 init 了

结果还是出现了报错,说是当前node没有被发现,到这里apiserver应该是可以用了,那就在reset一次kubeadm reset --cri-socket=/var/run/cri-dockerd.sock 。 重新init。

终于成功了。。。。。。。。。。。。。。。。。。。。。。