Kubernetes控制平面初始化失败求助
问题:kubeadm init拉取Kubernetes镜像超时失败
执行kubeadm init初始化Kubernetes v1.25.0控制平面时,所有核心镜像拉取失败,提示dial tcp 34.107.244.51:443: i/o timeout。已确认Docker运行正常,kubectl和kubeadm命令可正常执行,想排查是Kubernetes侧问题还是操作失误。
错误日志
[init] Using Kubernetes version: v1.25.0 [preflight] Running pre-flight checks [preflight] Pulling images required for setting up a Kubernetes cluster [preflight] This might take a minute or two, depending on the speed of your internet connection [preflight] You can also perform this action in beforehand using 'kubeadm config images pull' error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR ImagePull]: failed to pull image registry.k8s.io/kube-apiserver:v1.25.0: output: E0901 16:50:43.675142 4165 remote_image.go:218] "PullImage from image service failed" err="rpc error: code = Unknown desc = failed to pull and unpack image \"registry.k8s.io/kube-apiserver:v1.25.0\": failed to resolve reference \"registry.k8s.io/kube-apiserver:v1.25.0\": failed to do request: Head https://registry.k8s.io/v2/kube-apiserver/manifests/v1.25.0: dial tcp 34.107.244.51:443: i/o timeout" image="registry.k8s.io/kube-apiserver:v1.25.0" time="2022-09-01T16:50:43-06:00" level=fatal msg="pulling image: rpc error: code = Unknown desc = failed to pull and unpack image \"registry.k8s.io/kube-apiserver:v1.25.0\": failed to resolve reference \"registry.k8s.io/kube-apiserver:v1.25.0\": failed to do request: Head https://registry.k8s.io/v2/kube-apiserver/manifests/v1.25.0: dial tcp 34.107.244.51:443: i/o timeout" , error: exit status 1 [ERROR ImagePull]: failed to pull image registry.k8s.io/kube-controller-manager:v1.25.0: output: E0901 16:53:14.264007 4564 remote_image.go:218] "PullImage from image service failed" err="rpc error: code = Unknown desc = failed to pull and unpack image \"registry.k8s.io/kube-controller-manager:v1.25.0\": failed to resolve reference \"registry.k8s.io/kube-controller-manager:v1.25.0\": failed to do request: Head https://registry.k8s.io/v2/kube-controller-manager/manifests/v1.25.0: dial tcp 34.107.244.51:443: i/o timeout" image="registry.k8s.io/kube-controller-manager:v1.25.0" time="2022-09-01T16:53:14-06:00" level=fatal msg="pulling image: rpc error: code = Unknown desc = failed to pull and unpack image \"registry.k8s.io/kube-controller-manager:v1.25.0\": failed to resolve reference \"registry.k8s.io/kube-controller-manager:v1.25.0\": failed to do request: Head https://registry.k8s.io/v2/kube-controller-manager/manifests/v1.25.0: dial tcp 34.107.244.51:443: i/o timeout" , error: exit status 1 [ERROR ImagePull]: failed to pull image registry.k8s.io/kube-scheduler:v1.25.0: output: E0901 16:55:44.364804 4922 remote_image.go:218] "PullImage from image service failed" err="rpc error: code = Unknown desc = failed to pull and unpack image \"registry.k8s.io/kube-scheduler:v1.25.0\": failed to resolve reference \"registry.k8s.io/kube-scheduler:v1.25.0\": failed to do request: Head https://registry.k8s.io/v2/kube-scheduler/manifests/v1.25.0: dial tcp 34.107.244.51:443: i/o timeout" image="registry.k8s.io/kube-scheduler:v1.25.0" time="2022-09-01T16:55:44-06:00" level=fatal msg="pulling image: rpc error: code = Unknown desc = failed to pull and unpack image \"registry.k8s.io/kube-scheduler:v1.25.0\": failed to resolve reference \"registry.k8s.io/kube-scheduler:v1.25.0\": failed to do request: Head https://registry.k8s.io/v2/kube-scheduler/manifests/v1.25.0: dial tcp 34.107.244.51:443: i/o timeout" , error: exit status 1 [ERROR ImagePull]: failed to pull image registry.k8s.io/kube-proxy:v1.25.0: output: E0901 16:58:14.769855 5295 remote_image.go:218] "PullImage from image service failed" err="rpc error: code = Unknown desc = failed to pull and unpack image \"registry.k8s.io/kube-proxy:v1.25.0\": failed to resolve reference \"registry.k8s.io/kube-proxy:v1.25.0\": failed to do request: Head https://registry.k8s.io/v2/kube-proxy/manifests/v1.25.0: dial tcp 34.107.244.51:443: i/o timeout" image="registry.k8s.io/kube-proxy:v1.25.0" time="2022-09-01T16:58:14-06:00" level=fatal msg="pulling image: rpc error: code = Unknown desc = failed to pull and unpack image \"registry.k8s.io/kube-proxy:v1.25.0\": failed to resolve reference \"registry.k8s.io/kube-proxy:v1.25.0\": failed to do request: Head https://registry.k8s.io/v2/kube-proxy/manifests/v1.25.0: dial tcp 34.107.244.51:443: i/o timeout" , error: exit status 1 [ERROR ImagePull]: failed to pull image registry.k8s.io/etcd:3.5.4-0: output: E0901 17:03:14.966455 6024 remote_image.go:218] "PullImage from image service failed" err="rpc error: code = Unknown desc = failed to pull and unpack image \"registry.k8s.io/etcd:3.5.4-0\": failed to resolve reference \"registry.k8s.io/etcd:3.5.4-0\": failed to do request: Head https://registry.k8s.io/v2/etcd/manifests/3.5.4-0: dial tcp 34.107.244.51:443: i/o timeout" image="registry.k8s.io/etcd:3.5.4-0" time="2022-09-01T17:03:14-06:00" level=fatal msg="pulling image: rpc error: code = Unknown desc = failed to pull and unpack image \"registry.k8s.io/etcd:3.5.4-0\": failed to resolve reference \"registry.k8s.io/etcd:3.5.4-0\": failed to do request: Head https://registry.k8s.io/v2/etcd/manifests/3.5.4-0: dial tcp 34.107.244.51:443: i/o timeout" , error: exit status 1 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher
问题分析
这既不是操作失误,也不是Kubernetes本身的问题,核心原因是网络连接超时:服务器无法正常连接到registry.k8s.io官方镜像仓库(对应IP 34.107.244.51),导致所有控制平面核心镜像拉取失败。
解决方法
使用国内镜像源替换官方仓库
执行kubeadm init时直接指定国内镜像仓库(比如阿里云),避免连接官方仓库的网络问题:kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.25.0也可以先单独拉取所有镜像,再执行初始化:
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.25.0检查网络连通性与限制
测试服务器是否能访问官方镜像仓库:curl -v https://registry.k8s.io/v2/如果无法访问,检查服务器是否有防火墙规则、代理配置或网络策略限制了对外连接,调整后重试。
手动拉取镜像并重命名
从可访问的第三方仓库拉取镜像,再修改标签为官方仓库名称,让kubeadm识别:
示例(以阿里云仓库为例):# 拉取镜像 docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.25.0 docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.25.0 docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.25.0 docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.25.0 docker pull registry.aliyuncs.com/google_containers/etcd:3.5.4-0 docker pull registry.aliyuncs.com/google_containers/pause:3.8 # 重命名镜像标签 docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.25.0 registry.k8s.io/kube-apiserver:v1.25.0 docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.25.0 registry.k8s.io/kube-controller-manager:v1.25.0 docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.25.0 registry.k8s.io/kube-scheduler:v1.25.0 docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.25.0 registry.k8s.io/kube-proxy:v1.25.0 docker tag registry.aliyuncs.com/google_containers/etcd:3.5.4-0 registry.k8s.io/etcd:3.5.4-0 docker tag registry.aliyuncs.com/google_containers/pause:3.8 registry.k8s.io/pause:3.8完成后再执行
kubeadm init即可。
内容的提问来源于stack exchange,提问作者user19899551
相关产品推荐
相关产品推荐

