答案 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映像的托管位置以及是否需要凭据才能提取该映像。