我正在一个使用Helm-kubernetes和azure kubernetes服务的项目中,在此项目中,我尝试使用一个简单的节点映像,该映像已在helm图表中的azure容器注册表中推送,但返回ImagePullBackOff错误.
以下是一些详细信息:
我的Dockerfile:
FROM node:8
# Create app directory
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
# Bundle app source
COPY . .
EXPOSE 32000
CMD [ "npm","start" ]
我的helm_chart / values.yaml:
replicaCount: 1
image:
registry: helmcr.azurecr.io
repository: helloworldtest
tag: 0.7
pullPolicy: IfNotPresent
nameOverride: ""
fullnameOverride: ""
service:
name: http
type: LoadBalancer
port: 32000
internalPort: 32000
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: Nginx
# kubernetes.io/tls-acme: "true"
paths: []
hosts:
- name: mychart.local
path: /
tls: []
resources: {}
nodeSelector: {}
tolerations: []
affinity: {}
当我尝试使用以下命令直接提取图像时:
docker pull helmcr.azurecr.io/helloworldtest:0.7
然后它成功拉出图像.
这里有什么问题吗?
提前致谢!
最佳答案
您的kubernetes集群需要通过容器注册表进行身份验证才能提取图像,通常这是通过docker secret完成的:
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
如果使用的是AKS,则可以向注册表授予群集应用程序ID提取权限,这就足够了.
阅读:https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/