ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] # 背景 `k8s` 集群搭建好了。由于兼容其他系统需要修改镜像仓库的域名。所以需要修改现有集群的配置文件。   本文介绍k8s是通过kubeadm搭建的,可能与二进制搭建集群操作步骤稍有不同。 # 处理方案 ## 修改kubeadm配置文件 修改 kube-system 命名空间 configmap 资源,名称为 kubeadm-config 配置文件中有个参数为 `imageRepository` 。 >[warning] 注意:填写值为存放k8s组件镜像的仓库路径。例如 `hub.ecloud.com/library` ```shell $ kubectl get configmap -n kube-system kubeadm-config -oyaml | grep imageRepository imageRepository: registry.aliyuncs.com/google_containers ``` ## 修改kubelet配置文件 修改kubelet配置主容器的镜像   默认配置文件在 `/var/lib/kubelet/kubeadm-flags.env` 文件下 `--pod-infra-container-image` 参数 ```shell # 确认是否设置主容器镜像 $ ps -ef | grep kubelet | grep pause root 8880 1 3 Aug29 ? 02:16:21 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.6 $ cat /var/lib/kubelet/kubeadm-flags.env KUBELET_KUBEADM_ARGS="--network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.6" # 重启kubelet服务 $ sudo systemctl restart kubelet ``` ## 修改docker配置文件 如果镜像仓库是http协议的话,需要修改docker配置文件(default: /etc/docker/daemon.json),如果是https协议的镜像仓库忽略该步骤 ```shell $ grep insecure /etc/docker/daemon.json "insecure-registries": ["hub.ecloud.com:8021"], # 重启docker服务 $ sudo systemctl restart docker ``` ## 修改容器的镜像 - k8s组件服务:`etcd`、`kube-apiserver`、`kube-controller-manager`、`kube-scheduler`、`kube-proxy`、`calico-node`、`coredns`。这几个服务默认拉取镜像策略都是 `IfNotPresent` ,如果没有扩容节点重启也不会有问题。但是扩容节点的话,kube-proxy和coredns会拉取不到镜像而报错。所以提前处理这类问题。 - 业务服务:自行处理 ```shell # 仅处理k8s组件服务 ## kube-proxy $ kubectl -n kube-system get ds kube-proxy -oyaml | grep image: image: registry.aliyuncs.com/google_containers/kube-proxy:v1.23.3 ## calico-node服务 $ kubectl -n kube-system get ds calico-node -oyaml | grep image: image: docker.io/calico/node:v3.23.5 image: docker.io/calico/cni:v3.23.5 image: docker.io/calico/node:v3.23.5 ## calico-kube-controllers服务 $ kubectl -n kube-system get deployment calico-kube-controllers -oyaml | grep image: image: docker.io/calico/kube-controllers:v3.23.5 ## coredns服务 $ kubectl -n kube-system get deployment coredns -oyaml | grep image: image: registry.aliyuncs.com/google_containers/coredns:v1.8.6 ```