2017-02-25 74 views
1

我一直在试图运行使用收效甚微的私人起始容器中图像的部署,我总是得到这样的错误:使用kubernetes初始化的私人回购容器

Failed to pull image "private/app": Error: image private/app:latest not found 
Error syncing pod, skipping: failed to "StartContainer" for "app" with ErrImagePull: "Error: image private/app:latest not found" 

这里是我的部署:

"kind": "Deployment" 
"apiVersion": "extensions/v1beta1" 
"metadata": 
    "name": "tomcat" 
    "creationTimestamp": null 
"spec": 
    "replicas": 1 
    "template": 
    "metadata": 
     "creationTimestamp": null 
     "labels": 
     "service": "tomcat" 
     "annotations": 
     "pod.beta.kubernetes.io/init-containers": '[ 
      { 
      "name": "app", 
      "image": "private/app", 
      "imagePullPolicy": "IfNotPresent" 
      } 
     ]' 
    "spec": 
     "containers": 
     - "name": "tomcat" 
      "image": "private/tomcat" 
      "ports": 
      - "containerPort": 8080 
       "protocol": "TCP" 
     "imagePullSecrets": 
     - "name": "my-secret" 
     "restartPolicy": "Always" 
    "strategy": {} 
"status": {} 

我也跟着变化试了一下这里建议kubernetes init containers using a private repo

"pod.beta.kubernetes.io/init-containers": '[ 
    { 
    "name": "app", 
    "image": "private/app", 
    "imagePullPolicy": "IfNotPresent", 
    "imagePullSecrets": [ 
     { 
     "name": "my-secret" 
     } 
    ] 
    } 
]' 

但仍然没有...

请注意,我已经测试了这个部署没有init容器和图像拉取成功。

另请注意,这是我的实际配置的简化版本,在真实配置中,容器和一些env变量都有卷装。

如何为init-container配置“imagePullSecrets”?

编辑: 我问周围的kubernetes松弛道,似乎我忘了给权限集群泊坞窗的用户(CI泊坞窗的用户,如果你会)权限,此中心库,一旦我做了init容器上的“imagePullPolicy”是多余的,“template”>“spec”中的“imagePullPolicy”就足够了。

谢谢@koki,无论你身在何处。

回答

0

您应该使用secret对象。

是这样的:

kubectl create secret docker-registry myregistry \ 
    --docker-server=https://example.io \ 
    --docker-username=foo \ 
    --docker-password=boosecret \ 
    [email protected] 

和使用它,在另一个对象是这样的:

imagePullSecrets: 
    - name: myregistry 
+0

感谢您的答复,我一直想在我的部署使用“imagePullSecrets”,其作品为“规范”部分中描述的容器,而不是在“注释”初始化的容器部分。 此外,“imagePullSecrets”属性接受如下所述的“LocalObjectReference”的**数组**: [link](https://kubernetes.io/docs/api-reference/v1/definitions/#_v1_podspec) 而不是**对象**。 –

0

,所以我是谁问你提到的其他问题之一。这是使用你的例子,我的初始部分看起来像。这不适合你?

"pod.beta.kubernetes.io/init-containers": '[ 
    { 
    "name": "app", 
    "image": "private/app", 
    "imagePullPolicy": "IfNotPresent", 
    "imagePullSecrets": "my-secret" 
    } 
]' 
+0

我编辑我的问题与解决我的问题,谢谢你的答案! –