繁体   English   中英

将镜像从 Azure 容器注册表拉取到 Kubernetes 集群

[英]Pull images from an Azure container registry to a Kubernetes cluster

我已按照本教程microsoft_website从 azure 容器中提取图像。 我的yaml成功创建了一个 pod 作业,它可以拉取图像,但仅当它在我的集群中的agentpool节点上运行时。

例如,将nodeName: aks-agentpool-33515997-vmss000000yaml可以正常工作,但指定不同的节点名称,例如nodeName: aks-cpu1-33515997-vmss000000时,pod 会失败。 我使用描述 pods 收到的错误消息是Failed to pull image然后kubelet Error: ErrImagePull

我错过了什么?

创建秘密:

kubectl create secret docker-registry <secret-name> \
--docker-server=<container-registry-name>.azurecr.io \
--docker-username=<service-principal-ID> \
--docker-password=<service-principal-password>

需要检查的四件事:

  • 是订阅问题吗? 节点是否在不同的订阅中?
  • 是权利问题吗? 节点的服务主体是否有权拉取镜像。
  • 是网络问题吗? 节点是否位于不同的子网上?
  • 图像大小或配置是否存在某些问题,这意味着它无法在另一个集群上运行。

编辑

New-AzAksNodePool 有一个参数 -DefaultProfile

它可以是 AzContext、AzureRmContext、AzureCredential

如果这在您的节点之间有所不同,它将解释错误

正如@user1571823 所说,问题的解决方案是从 acr 中删除旧图像并创建/推送新图像。
该问题与保存在 azure 容器注册表 (acr) 中的映像中的某种损坏有关。 一个代理池之所以能拉取镜像,其实是因为镜像已经存在于虚拟机中。

此后,正如@andov 所说,从部署 AKS 的订阅中打开事件案例以向 Azure 支持AKS开一个事件案例是一个不错的选择。 支持团队拥有对 AKS 服务后端的完全访问权限,他们可以准确判断是什么导致了您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM