最近公司迁移到了新集群,为了确保服务上线后的稳定性,所有的应用上线之前都要在本地的minikube上跑一下,但原本在集群上用得正常的yaml,在minikube里就无法正常拉取docker镜像,Google一番之后被kubernetes的官方文档搞得一头雾水,拉到最下面才找到了原因,其实好好研究一下yaml就能发现不同的点,即yaml里有这样一行
imagePullSecrets
当deployment指定了特定的secret之后,其便会遵循这个secret中的docker镜像源的信息来拉取镜像,创建非常简单,只要
$ kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL secret "myregistrykey" created.
其中email是选填的
在yaml里就可以直接这样写:
apiVersion: v1 kind: Pod metadata: name: foo namespace: awesomeapps spec: containers: - name: foo image: janedoe/awesomeapp:v1 imagePullSecrets: - name: myregistrykey
参考资料:
https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry