我正在设置一个新的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
需要一个完整的配置文件?
1条答案
按热度按时间qacovj5a1#
我赌了一把,选择了
kubeadm init --config <config yaml>
,它继续提供资源和配置,至少通过了控制平面健康检查。