kubernetes 使用pod-cidr选项时,coredns的kubeadm init镜像拉取失败

k3bvogb1  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(134)

我正在设置一个新的K8s集群,由于需要为Pod CIDR添加配置,而且还需要覆盖注册表路径,因此映像拉取和kubeadm init存在问题。
执行sudo kubeadm config images pull --image-repository "registry.k8s.io"后。给出了以下输出,但在coredns的最终图像上失败:

[config/images] Pulled registry.k8s.io/kube-apiserver:v1.24.16
[config/images] Pulled registry.k8s.io/kube-controller-manager:v1.24.16
[config/images] Pulled registry.k8s.io/kube-scheduler:v1.24.16
[config/images] Pulled registry.k8s.io/kube-proxy:v1.24.16
[config/images] Pulled registry.k8s.io/pause:3.7
[config/images] Pulled registry.k8s.io/etcd:3.5.3-0

字符串
无法拉取映像“registry.k8s.io/coredns:v1.8.6“:output:E0725 08:37:16.950070 39086 remote_image.go:238]“PullImage from image service failed”err=“rpc error:code = NotFound desc =无法拉取并解压缩镜像“registry.k8s.io/coredns:v1.8.6”:无法解析引用“registry.k8s.io/coredns:v1.8.6”:registry.k8s.io/coredns:v1.8.6:未找到”image=“registry.k8s.io/coredns:v1.8.6”time=“2023-07- 25 T08:37:16+01:00”level=致命消息=“拉取图像:rpc错误:code = NotFound desc = failed to pull and unpack image“registry.k8s.io/coredns:v1.8.6”:无法解析引用“registry.k8s.io/coredns:v1.8.6”:registry.k8s.io/coredns:v1.8.6:未找到”错误:退出状态1
因此,我通过配置文件为coredns创建了一个覆盖,以使用配置文件使用旧的注册表,包含:

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
dns:
  imageRepository: k8s.gcr.io/coredns
imageRepository: registry.k8s.io


这现在工作正常:

[config/images] Pulled registry.k8s.io/kube-apiserver:v1.24.16
[config/images] Pulled registry.k8s.io/kube-controller-manager:v1.24.16 
[config/images] Pulled registry.k8s.io/kube-scheduler:v1.24.16 [config/images] Pulled registry.k8s.io/kube-proxy:v1.24.16 
[config/images] Pulled registry.k8s.io/pause:3.7 
[config/images] Pulled registry.k8s.io/etcd:3.5.3-0 
[config/images] Pulled k8s.gcr.io/coredns/coredns:v1.8.6


但是,我现在准备运行kubeadm init。我都没意识到它会再次做出同样的动作我本来想在命令中使用--pod-network-cidr选项,但显然由于重复和默认的镜像拉取,命令失败。如果我像以前一样追加配置,这不能与--pod-network-cidr命令一起使用,而且我还担心提供配置文件时,它所期望的不仅仅是一个资源的注册表路径。
我该如何:
a)抑制作为kubeadm init的一部分的多余图像拉取(因此使用从kubeadm config命令拉取的图像),或者
B)使用配置覆盖kubeadm init,同时允许配置pod CIDR
省略pod-cidr会有什么影响?这是否会自动调配?
如果只使用配置,那么按照上面的初始配置文件(即部分信息和只是一个图像源)或kubeadm init需要一个完整的配置文件?

qacovj5a

qacovj5a1#

我赌了一把,选择了kubeadm init --config <config yaml>,它继续提供资源和配置,至少通过了控制平面健康检查。

相关问题