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
  • OS (例:/ 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プルします。
docker pull my.private.image.registry/kube-apiserver:latestrun service kubelet restartでも、このエラーが発生します。

あなたは何が起こると思っていましたか?

kubeletサポートは、クレデンシャルを手動で構成するか、ローカルでプルされたイメージを認識できます。

それを(可能な限り最小限かつ正確に)再現する方法は?

/etc/kubernetes/manifests/kube-apiserver.yamlイメージをプライベートレジストリイメージに置き換えます。

kinsupport

最も参考になるコメント

@ggaaooppeennggこれを試してみてください:

  1. Dockerプルを使用したプリプルイメージ
  2. 設定ファイルでimageRepositoryオプションを設定するように注意しながら、 kubeadm init --config yourconfigfile使用します

その点に注意してください:

  • クラスターが存在する前にimagePullSecretsを作成する方法がないため、画像を事前にプルする必要があります😄
  • 上記の手順はkubeadmv1.8で機能します。 これが以前のリリースでもサポートされていたかどうかは覚えていません:confused:
  • この手順では、手動で変更することなく、リポジトリをyamlファイルに設定します👍; ただし、すべてのローカルイメージは、標準の命名規則(たとえば、componentname-architecture:version)に従うことが期待されます。

詳細については、 https://kubernetes.io/docs/admin/kubeadm/をご覧ください。

全てのコメント4件

私の解決策:dockerはイメージをプルし、imagePullPolicyをNeverに設定してから、kubeletを再起動します。

この状況でkubeadmがどのように行動することを期待しますか? 公式画像を使用しており、カスタムリポジトリはサポートしていません。 カスタムイメージを使用するためのユースケースは何ですか?

@ggaaooppeennggこれを試してみてください:

  1. Dockerプルを使用したプリプルイメージ
  2. 設定ファイルでimageRepositoryオプションを設定するように注意しながら、 kubeadm init --config yourconfigfile使用します

その点に注意してください:

  • クラスターが存在する前にimagePullSecretsを作成する方法がないため、画像を事前にプルする必要があります😄
  • 上記の手順はkubeadmv1.8で機能します。 これが以前のリリースでもサポートされていたかどうかは覚えていません:confused:
  • この手順では、手動で変更することなく、リポジトリをyamlファイルに設定します👍; ただし、すべてのローカルイメージは、標準の命名規則(たとえば、componentname-architecture:version)に従うことが期待されます。

詳細については、 https://kubernetes.io/docs/admin/kubeadm/をご覧ください。

@jamiehannafordパフォーマンスの問題を掘り下げ、トレースログを追加して、チェックできるようにします。

このページは役に立ちましたか?
0 / 5 - 0 評価