Kubernetes: kubectlがプライベートリポジトリからイメージをプルできません

作成日 2017年02月16日  ·  3コメント  ·  ソース: kubernetes/kubernetes

これはバグレポートですか、それとも機能リクエストですか?:バグ

Kubernetesバージョン(kubectlバージョンを使用):

Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"2017-01-12T04:57:25Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.3", GitCommit:"029c3a408176b55c30846f0faedf56aae5992e9b", GitTreeState:"clean", BuildDate:"2017-02-15T06:34:56Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}

環境:

クラウドプロバイダーまたはハードウェア構成: 2GB RAM / 50GB HDD VM
OS(例:/ etc / os-releaseから):
NAME = "Ubuntu"
VERSION = "16.04 LTS(Xenial Xerus)"
ID = ubuntu
ID_LIKE = debian
PRETTY_NAME = "Ubuntu 16.04 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/ "
UBUNTU_CODENAME = xenial

カーネル(例:uname -a):
Linux ubuntu 4.4.0-21-generic#37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux
ツールのインストール: kubeadm、kubectl、docker
その他:NA
何が起こったのか:プライベートリポジトリからプルしているときにImagePullBackOff

あなたが起こると期待したこと:それはプライベートリポジトリから画像を大声で引き出しました

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

  • プライベートリポジトリ用のファイルを作成し、ノード(マスターとスレーブ)の両方でDockerを再起動します
    root<strong i="5">@ubuntu</strong>:~# vi /etc/systemd/system/docker.service.d/private-registry.conf
        [Service]
        ExecStart=
        ExecStart=/usr/bin/dockerd --insecure-registry 123.456.789.0:9595
  • 次に、Dockerログイン
    docker login 123.456.789.0:9595
  • Docker情報
    コンテナ:87
    ランニング:18
    一時停止:0
    停止:69
    画像:175
    サーバーバージョン:1.12.3
    ストレージドライバー:aufs
    ルートディレクトリ:/ var / lib / docker / aufs
    バッキングファイルシステム:extfs
    Dirs:384
    サポートされているDirperm1:true
    ロギングドライバー:json-file
    Cgroupドライバー:cgroupfs
    プラグイン:
    ボリューム:ローカル
    ネットワーク:ホストブリッジヌルオーバーレイ
    群れ:非アクティブ
    ランタイム:runc
    デフォルトのランタイム:runc
    セキュリティオプション:apparmor seccomp
    カーネルバージョン:4.4.0-21-generic
    オペレーティングシステム:Ubuntu 16.04 LTS
    OSType:linux
    アーキテクチャ:x86_64
    CPU:1
    総メモリ:1.937 GiB
    名前:ubuntu
    ID:FXD7: JQJZ:HO3R :D2NK: RWYL:7DCY :PC2M:43PM:MA7C: QSPN:4RGS :5W6H
    Dockerルートディレクトリ:/ var / lib / docker
    デバッグモード(クライアント):false
    デバッグモード(サーバー):false
    レジストリ: https
    警告:スワップ制限はサポートされていません
    安全でないレジストリ:
    123.456.789.0:9595
    127.0.0.0/8

  • docker -v
    Dockerバージョン1.12.3、ビルド6b644ec

  • マスターでkubeadmを開始します
    kubeadm init --token 123456.1234567890123456 --api-advertise-addresses 192.168.91.133

  • kubernatesシークレットを作成する
    kubectl create secret docker-registry my-secret --docker-server = 123.456.789.0 --docker-username = admin --docker-password = XXXX --docker - [email protected]
  • weiveネットワークを作成しました

    kubectl apply -f https://git.io/weave-kube

  • スレーブから、マスターネットワークに参加します
    kubeadm join --token = 123456.1234567890123456 192.168.91.133
  • ポッドの定義
apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  labels:
    name: test
spec:
  containers:
    - image: 123.456.789.0:9595/test
      name: test
      ports:
        - containerPort: 8443
  imagePullSecrets:
    - name: my-secret
  • 次に、ポッドを作成してみました。 構成されたポッドイメージは、nexus dockerリポジトリにあります。ポッドについて説明しているときに、以下のトレースを取得しています。
Name:           test-pod
Namespace:      default
Node:           ubuntu-child/192.168.91.134
Start Time:     Thu, 16 Feb 2017 12:26:56 +0530
Labels:         name=test
Status:         Pending
IP:             10.44.0.2
Controllers:    <none>
Containers:
  test:
    Container ID:
    Image:              123.456.789.0:9595/test
    Image ID:
    Port:               8443/TCP
    State:              Waiting
      Reason:           ErrImagePull
    Ready:              False
    Restart Count:      0
    Volume Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-vkj94 (ro)
    Environment Variables:      <none>
Conditions:
  Type          Status
  Initialized   True
  Ready         False
  PodScheduled  True
Volumes:
  default-token-vkj94:
    Type:       Secret (a volume populated by a Secret)
    SecretName: default-token-vkj94
QoS Class:      BestEffort
Tolerations:    <none>
Events:
  FirstSeen     LastSeen        Count   From                    SubObjectPath                   Type            Reason          Message
  ---------     --------        -----   ----                    -------------                   --------        ------          -------
  9s            9s              1       {default-scheduler }                                    Normal          Scheduled       Successfully assigned test-pod to ubuntu-child
  7s            7s              1       {kubelet ubuntu-child}  spec.containers{test}   Normal          Pulling         pulling image "123.456.789.0:9595/test"
  7s            7s              1       {kubelet ubuntu-child}  spec.containers{test}   Warning         Failed          Failed to pull image "123.456.789.0:9595/test": Error: image test:latest not found
  7s            7s              1       {kubelet ubuntu-child}                                  Warning         FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "test" with ErrImagePull: "Error: image test:latest not found"

  7s    7s      1       {kubelet ubuntu-child}  spec.containers{test}   Normal  BackOff         Back-off pulling image "123.456.789.0:9595/test"
  7s    7s      1       {kubelet ubuntu-child}                                  Warning FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "test" with ImagePullBackOff: "Back-off pulling image \"123.456.789.0:9595/test\""

最も参考になるコメント

ポート番号が原因で問題が発生しました。 ポート番号を入力すると、期待どおりに機能し始めます。

kubectl create secret docker-registry my-secret --docker-server=123.456.789.0:9595 --docker-username=admin --docker-password=XXXX [email protected]

全てのコメント3件

スレーブとマスターから、プライベートリポジトリをプルできます。 ただし、ポッド定義にシークレットを追加したにもかかわらず、kubectlがプライベートリポジトリからイメージをプルしようとすると、問題が発生します。

ポート番号が原因で問題が発生しました。 ポート番号を入力すると、期待どおりに機能し始めます。

kubectl create secret docker-registry my-secret --docker-server=123.456.789.0:9595 --docker-username=admin --docker-password=XXXX [email protected]

実際のバグではありませんでしたが、解決策についてはhttp://stackoverflow.com/questions/42267164/kubectl-not-able-to-pull-the-image-from-private-repositoryを参照して

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