场景:离线 kubesphere 默认安装后,会将系统组件的docker 镜像放在其中一个master启动docker
docker registry 服务,镜像放在/mnt/registry 下。
此操作存在风险,请谨慎操作!
生产建议将docker registry 镜像放到harbor 上。
准备条件: 外置harbor
步骤:
在所有节点使用用户登录harbor。
#docker login harbor.xxxx.com
登录完成后,在kubesphere 安装目录找到tag.sh ,修改tag.sh 中的registryurl=harbor 地址。
#cd kubesphere-all-offline-v2.1.0/scripts/os/
#vim tag.sh
# registryurl=""$LocalIP:5000""
registryurl=harbor.xxxx.com
执行tag.sh 将系统组件镜像推送到harbor 上。
#./tag.sh
登录harbor 查看系统镜像上传完毕。
将原镜像的系统组件下deploy 、ds、statefulsets 等组件 修改成现有harbor地址。
例如:
#kubectl edit deploy -n openpitrix-system
将其中的image地址修改,如:
image: 88.4.38.131:5000
可以使用vim 进行批量替换。
:%s/88.0.37.11:5000/harbor.xxx.com/g
修改ks-installer cm
kubectl edit cm ks-installer -n kubesphere-system
将cm 中的local_registry: 修改成现有harbor 地址。
重启下系统组件:kubectl -n kubesphere-system rollout restart deploy xxx
检查组件的镜像地址已修改。

修改istio 中的configmap。
kubectl edit cm istio-sidecar-injector -n istio-system
替换中间的镜像地址
:%s/88.0.37.11:5000/harbor.xxx.com/g
重启
kubectl -n istio-system rollout restart deployment istio-sidecar-injector
还有部分涉及的configmap 参考上面步骤修改。
kube-system下的cm
kubeadm-config、kube-proxy
kubsphere-system 下的cm:
ks-router-config
PS: 建议原仓库保留。