Kubeadm: 无法从私有注册表升级 kube-apiserver。

创建于 2017-10-02  ·  4评论  ·  资料来源: kubernetes/kubeadm

我检查了这个问题 #71 ,如果 kube-apiserver 未运行,我似乎无法添加凭据,但是在手动拉取私有映像并重新启动 kubelet 后,我​​仍然收到错误消息。

PullImage "docker.kesci.com:5000/kube-apiserver:latest" from image service failed: rpc error: code = Unknown desc = Error response from daemon: Get https://**my.private.image.registry**/v2/kube-apiserver/manifests/latest: no basic auth credentials

版本

kubeadm 版本(使用kubeadm version ):

环境:

  • Kubernetes 版本(使用kubectl version ):
    Client Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.5", GitCommit:"17d7182a7ccbb167074be7a87f0a68bd00d58d97", GitTreeState:"clean", BuildDate:"2017-08-31T09:14:02Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
  • 云提供商或硬件配置
    aws
  • 操作系统(例如来自 /etc/os-release):
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
  • 内核(例如uname -a ):
    Linux ip-172-31-28-254 4.4.0-92-generic #115-Ubuntu SMP Thu Aug 10 09:04:33 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
  • 其他

发生了什么?

我手动替换了/etc/kubernetes/manifests/kube-apiserver.yaml配置的镜像,kubelet 报错container start failed: ErrImagePull: rpc error: code = Unknown desc = Error response from daemon: Get https://my.private.image.registry/v2/kube-apiserver/manifests/latest: no basic auth credentials ,好像没有配置凭据,所以我手动 docker pull 镜像
docker pull my.private.image.registry/kube-apiserver:latestrun service kubelet restart ,仍然出现此错误。

你预计会发生什么?

kubelet 支持手动配置凭据,或者,它可以识别本地拉取的图像。

如何重现它(尽可能少且精确)?

/etc/kubernetes/manifests/kube-apiserver.yaml映像替换为私有注册表映像。

kinsupport

最有用的评论

@ggaaooppeengg你应该试试这个:

  1. 使用 docker pull 预拉图像
  2. 使用kubeadm init --config yourconfigfile ,注意在配置文件中设置imageRepository选项

请注意:

  • 你必须预先拉取图片,因为在集群存在之前没有办法创建一个 imagePullSecrets 😄
  • 上述过程适用于 kubeadm v1.8; 我不记得以前的版本是否也支持这一点:confused:
  • 此过程将您的 repo 设置在 yaml 文件中,而无需手动更改👍; 但是,预计所有本地映像都遵循标准命名约定(例如 componentname-architecture:version)

有关更多信息,您可以查看https://kubernetes.io/docs/admin/kubeadm/

所有4条评论

我的解决方案:docker pull镜像并将imagePullPolicy设置为Never,然后重启kubelet。

您希望 kubeadm 在这种情况下如何行动? 我们使用官方镜像,不支持自定义存储库。 您使用自定义图像的用例是什么?

@ggaaooppeengg你应该试试这个:

  1. 使用 docker pull 预拉图像
  2. 使用kubeadm init --config yourconfigfile ,注意在配置文件中设置imageRepository选项

请注意:

  • 你必须预先拉取图片,因为在集群存在之前没有办法创建一个 imagePullSecrets 😄
  • 上述过程适用于 kubeadm v1.8; 我不记得以前的版本是否也支持这一点:confused:
  • 此过程将您的 repo 设置在 yaml 文件中,而无需手动更改👍; 但是,预计所有本地映像都遵循标准命名约定(例如 componentname-architecture:version)

有关更多信息,您可以查看https://kubernetes.io/docs/admin/kubeadm/

@jamiehannaford我想挖掘一些性能问题,并添加一些跟踪日志,以便我可以进行检查。

此页面是否有帮助?
0 / 5 - 0 等级