在Helm图表values.yaml中拉取docker hub图像

时间:2019-01-21 14:31:37

标签: docker kubernetes kubernetes-helm dockerhub

我是掌舵和Kubernetes世界的新手。 我正在使用Docker,Kubernetes和Helm的项目中进行尝试,在该项目中,我试图使用Kubernetes上的Helm Chart部署简单的Node.js应用程序。

这是我尝试过的:

来自Dockerfile

FROM node:6.9.2
EXPOSE 30000
COPY server.js .
CMD node server.js

我已经构建了映像,对其进行了标记并将其推送到位于MY_USERNAME/myhello:0.2

的docker hub存储库中

然后我运行简单commad创建掌舵图表为: helm create mychart 它创建了一个mychart目录,其中包含所有头盔组件。

然后我将values.yaml文件编辑为:

replicaCount: 1
image:
  repository: MY_USERNAME/myhello
  tag: 0.2
  pullPolicy: IfNotPresent

nameOverride: ""
fullnameOverride: ""

service:
  type: NodePort
  port: 80
  externalPort: 30000

ingress:
  enabled: false
  annotations: {}
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  paths: []
  hosts:
    - chart-example.local
  tls: []
  #  - secretName: chart-example-tls
  #    hosts:
  #      - chart-example.local

resources: {}
  # We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources, such as Minikube. If you do want to specify resources, uncomment the following
  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  # limits:
  #  cpu: 100m
  #  memory: 128Mi
  # requests:
  #  cpu: 100m
  #  memory: 128Mi

nodeSelector: {}

tolerations: []

affinity: {}

之后,我将图表安装为: helm install --name myhelmdep01 mychart

以及运行kubectl get pods时 它显示了ErrImagePull

我尝试通过将图像名称提到为docker.io/arycloud/myhello 在这种情况下,图像成功拉出,但是出现了另一个错误:

  

活动探测失败:获取http://172.17.0.5:80/:拨打tcp 172.17.0.5:80:connect:连接被拒绝

1 个答案:

答案 0 :(得分:1)

在错误发生后立即运行kubectl describe pod <yourpod>,并且在输出底部附近应该有一个事件可以告诉您确切的图像拖拽问题是什么。

可能是以下选项之一:

  • 这是一个私人存储库,您尚未使用适当的imagePullSecret为pod /部署提供服务帐户
  • 您的后端不是docker,或者不假定非前缀图像位于hub.docker.com上。请尝试以下操作:registry-1.docker.io/arycloud/myhello

如果您可以找到该错误,那应该很简单。