是否可以修改Kubernetes的镜像仓库搜索列表?
Kubernetes 全局镜像重定向解决方案
针对无需修改编排文件、自动将Docker Hub镜像请求转发到内部私有仓库的需求,可通过容器运行时层配置或集群准入控制器两种方案实现:
方案1:节点容器运行时全局配置(推荐,性能损耗最小)
直接在所有集群工作节点的容器运行时中配置Docker Hub镜像mirror规则,拉取镜像时自动路由到内部仓库,对上层workload完全无感知。
适用Containerd运行时(K8s v1.24+ 默认运行时)
- 编辑节点配置文件
/etc/containerd/config.toml,找到registry配置段,添加如下规则:[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://internal-docker-registry.io:5000"] - 执行以下命令重启服务生效:
systemctl daemon-reload && systemctl restart containerd
适用Docker运行时
- 编辑节点配置文件
/etc/docker/daemon.json,添加镜像仓库配置:{ "registry-mirrors": ["https://internal-docker-registry.io:5000"] } - 执行以下命令重启服务生效:
systemctl daemon-reload && systemctl restart docker
适用CRI-O运行时
- 编辑节点配置文件
/etc/containers/registries.conf,添加重定向规则:[[registry]] prefix = "docker.io" location = "internal-docker-registry.io:5000" - 重启CRI-O服务生效。
方案2:集群准入控制器配置
若不方便批量修改节点配置,可部署集群级镜像改写准入插件,在Pod创建阶段自动将镜像地址替换为内部仓库地址,无需修改节点配置。
注意事项
- 内部镜像仓库
internal-docker-registry.io:5000需要提前同步所有用到的Docker Hub公共镜像,避免拉取404错误 - 若内部仓库使用HTTP协议,需要对应在容器运行时配置中添加不安全仓库标识,跳过TLS校验
内容的提问来源于stack exchange,提问作者jack2684
相关产品推荐
相关产品推荐

