繁体   English   中英

注册表中存在容器映像,但pod显示“ ErrImagePull”

[英]Container image exists in registry but pod shows 'ErrImagePull'

我正在尝试将映像部署到IBM Cloud kubernetes实例中。

首先,我创建并推送了图片...

$ ic cr images
Listing images...

REPOSITORY                                    NAMESPACE     TAG      DIGEST         CREATED          SIZE     VULNERABILITY STATUS   
registry.ng.bluemix.net/my_namespace/my_app   my_namespace  latest   123456789012   56 minutes ago   264 MB   Vulnerable   

OK

然后 ...

$ ic cs cluster-config my_cluster
$ export KUBECONFIG=/Users/me/.bluemix/plugins/container-service/clusters/my_cluster/kube-config-mil01-my_cluster.yml

$ kubectl run my_app --image=registry.ng.bluemix.net/my_namespace/my_app \
          --port=8080 --generator=run/v1
replicationcontroller/my_app created

还有...

$ kubectl get pods
NAME          READY     STATUS         RESTARTS   AGE
my_app-zvqwq  0/1       ErrImagePull   0          38s

虽然我所在的地区位于美国us-south ...

$ ic target

API endpoint:      https://api.ng.bluemix.net   
Region:            us-south   
User:              me@email.com   

...有趣的是,集群是在米兰创建的...

$ ic cs clusters
OK
Name          ID               State    Created          Workers   Location   Version   
my_cluster    xxxxxxxxxxxxxx   normal   55 minutes ago   1         mil01      1.9.9_1520 

更新感谢Bloodysock,这里是更多调试信息:

无法提取图像“ registry.ng.bluemix.net/my_namespace/my_app”:rpc错误:代码=未知desc =来自守护程序的错误响应:获取https://registry.ng.bluemix.net/v2/my_namespace/my_app/清单/最新 :未经授权:需要验证

但是,我在文档中看不到如何为IBM Container Registry设置身份验证。

消息unauthorized: authentication required表明您的Pod没有用于美国南部(ng)注册中心的有效ImagePullSecret。 由于您的集群是在米兰创建的,因此在创建集群时IKS安装的秘密很可能是针对欧盟中央(eu-de)注册中心的,而不是美国南方的。

如果您有能力查看集群中的机密,则可以通过运行kubectl get secret bluemix-default-secret-regional -o yaml | grep .dockercfg: | awk '{print $2}' | base64 --decode来检查自动安装的ImagePullSecret的内容。 kubectl get secret bluemix-default-secret-regional -o yaml | grep .dockercfg: | awk '{print $2}' | base64 --decode kubectl get secret bluemix-default-secret-regional -o yaml | grep .dockercfg: | awk '{print $2}' | base64 --decode 该命令获取称为bluemix-default-secret-regional ,提取.dockercfg字段,然后解码base64编码的密钥值。

您可以创建其他ImagePullSecrets并将其添加到默认的ServiceAccount中,以便群集自动使用它们。 有关说明,请参见此处

顺便说一句,如果您的ic cs插件针对IKS的欧盟中部地区,则您的集群可能已在米兰创建。 您可以通过ic cs region查看正在使用的IKS区域,并通过ic cs region-set对其进行更改。

暂无
暂无

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

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