无法拉出图像以在Kubernetes中运行Pod

时间:2018-08-02 16:51:10

标签: kubernetes

吊舱细节图像 enter image description here 无法拉图像 该图像已通过docker for Windows在Azure注册表中推送。 提供的图片名称:通过docker在标签期间提供的图片

2 个答案:

答案 0 :(得分:0)

您目前提供的信息很少。

您的kubernetes集群是否已正确配置为从azure注册表中提取图像?据我所知不是。这是受管理的AKS k8s集群吗?如果没有,默认情况下将无法访问您的私有Azure注册表,并且需要配置访问私有Azure注册表所需的凭据。

http://docs.heptio.com/content/private-registries/pr-docker-hub.html

另一种可能性是您将基于Windows的容器推送到只能运行基于Linux的容器的基于Linux的工作程序节点上。

答案 1 :(得分:0)

我只有GKE经验,但是如果要从与GKE群集不在同一个项目中的存储库中提取docker映像,则必须提供要提取的映像的凭据。

我这样做是在Kubernetes中包含一个.dockerconfig.json的秘密进行的:

apiVersion: v1
data:
  .dockerconfigjson: <REDACTED>

为了创建这种类型的秘密,我使用了这样的模板:

kubectl create secret docker-registry <SECRET_NAME> \
  --docker-server=https://gcr.io \
  --docker-username=_json_key \
  --docker-email=<SVC_ACCOUNT_EMAIL> \
  --docker-password=<CONTENTS_OF_SVC_ACCOUNT_CREDS_FILE>

多数民众赞成在创建之后,您需要进行安装以秘密存储到相关的Pod /部署中。在pod规范中,您将需要:

imagePullSecrets:
      - name: <SECRET_NAME>

(它的列表是因为您可以装载许多要从其他地方拉出的秘密)

我想象azure的设置类似,因此可以提取与群集相同项目中的任何图像。但是,另一个Azure项目或外部映像存储库中托管的任何映像都将需要凭据。 我使用描述的安装程序还将Google容器注册表映像拉到本地minikube。

所以我认为我们需要弄清楚您的docker映像的托管位置以及是否需要凭据才能提取该映像。