关于k8s deployment.yaml文件中imagePullSecrets的配置
更换镜像仓库后,在deployment.yaml中将image的仓库地址修改后,更新deployment,pod一直在ImagePullBackOff状态,describe查看pod信息,会提示是镜像下载失败,但是在宿主机上手动docker pull下载镜像又是能正常下载的,且镜像手动下载后,pod就会变成running状态
解决办法
1.反复查看deployment.yaml文件之后发现,是imagePullSecrets参数控制了该deployment去连接哪个镜像仓库的
2.通过命令去查看私钥(zl-regsecret)指向的镜像仓库地址什么
kubectl get secrets zl-regsecret -n test-env --output="jsonpath={.data.\.dockerconfigjson}" | base64 -d
3.查看的镜像仓库和现使用的仓库不是同一个,遂新配置一个私钥(zl-regsecret-new)
kubectl create secret docker-registry zl-regsecret-new(新的私钥名称) --docker-server=镜像仓库地址 --docker-username=镜像仓库的用户名 --docker-password=镜像仓库的密码 -n 名称空间 --docker-email=DOCKER_EMAIL(不填也行) kubectl create secret docker-registry zl-regsecret-new --docker-server=swr.cn-southwest-2.myhuaweicloud.com --docker-username=cn-southwest-2@EIEN99RIQFGCXPUX3DYF --docker-password=fd171b230be54a7f3b0411f88cc08bdf8d1d97b2aa8e9a21c9b3a40b67d81982 -n prod-env --docker-email=DOCKER_EMAIL secret/zl-regsecret-new created
4.将新的私钥名称配置到deployment.yaml文件中
5.更新deployment控制器
kubectl apply -f deployment.yaml -n namespace
6.在查看pod状态已经是running状态了