我一直在尝试使用私有init容器映像运行部署但收效甚微,我总是收到此错误:
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 slack频道询问,似乎我忘了给集群docker用户(CI docker用户,如果你愿意)授予对这个集线器存储库的权限,一旦我这样做,init容器上的“imagePullPolicy”是多余的,“模板”上的那个> “spec”就够了。
感谢@koki,无论你在哪里。
答案 0 :(得分:0)
您应该使用secret
对象。
类似的东西:
kubectl create secret docker-registry myregistry \
--docker-server=https://example.io \
--docker-username=foo \
--docker-password=boosecret \
--docker-email=example@boo.com
并使用它,在这样的另一个对象中:
imagePullSecrets:
- name: myregistry
答案 1 :(得分:0)
所以我是那个问你引用的其他问题的人。这是使用你的示例我的init部分的样子。这对你不起作用?
"pod.beta.kubernetes.io/init-containers": '[
{
"name": "app",
"image": "private/app",
"imagePullPolicy": "IfNotPresent",
"imagePullSecrets": "my-secret"
}
]'
答案 2 :(得分:0)
我仍然不能拉私人的initContainers。
在我的情况下,我正在向mongodb图表添加一个initContainer。
当我将imagePullSecrets:添加到我得到的initContainer中时。
error: error validating "/helm.txt": error validating data: ValidationError(Deployment.spec.template.spec.initContainers[0]): unknown field "imagePullSecrets" in io.k8s.api.core.v1.Container; if you choose to ignore these errors, turn validation off with --validate=false