プライベートレジストリからkubernetesのイメージを抽出できません。

プライベートレジストリからkubernetesのイメージを抽出できません。

ドメイン「makdom.ddns.net」を介してアクセスできるdockerにプライベートレジストリを設定しました。ローカルログインから画像をプッシュしてインポートでき、スレーブkubesノードでも問題ありません。これを行うことができます。

ただし、kubes配布ファイルを作成すると、プライベートレジストリからイメージを取得できないため失敗します。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: ssh-deployment
spec:
  template:
    metadata:
      labels:
        app: helloworld
    spec:
      containers:
      - name: ssh-demo
        image: makdom.ddns.net/my-ubuntu
        imagePullPolicy: IfNotPresent
        ports:
        - name: nodejs-port
          containerPort: 22
      imagePullSecrets:
      - name: myregistrykey

秘密:

DOCKER_REGISTRY_SERVER="https://makdom.ddns.net/v1/"
DOCKER_USER="user"
DOCKER_PASSWORD="password"
DOCKER_EMAIL="[email protected]" 

kubectl create secret docker-registry myregistrykey \
  --docker-server=$DOCKER_REGISTRY_SERVER \
  --docker-username=$DOCKER_USER \
  --docker-password=$DOCKER_PASSWORD \
  --docker-email=$DOCKER_EMAIL  

間違い:

Events:
  Type     Reason                 Age               From                  Message
  ----     ------                 ----              ----                  -------
  Normal   Scheduled              1m                default-scheduler     Successfully assigned ssh-deployment-7b7c7bf977-m6stk to kubes-slave
  Normal   SuccessfulMountVolume  1m                kubelet, kubes-slave  MountVolume.SetUp succeeded for volume "default-token-mx7qq"
  Normal   Pulled                 1m (x3 over 1m)   kubelet, kubes-slave  Container image "makdom.ddns.net/my-ubuntu" already present on machine
  Normal   Created                1m (x3 over 1m)   kubelet, kubes-slave  Created container
  Normal   Started                1m (x3 over 1m)   kubelet, kubes-slave  Started container
  Normal   Pulling                34s (x2 over 1m)  kubelet, kubes-slave  pulling image "makdom.ddns.net/my-ubuntu"
  Warning  Failed                 34s (x2 over 1m)  kubelet, kubes-slave  Failed to pull image "makdom.ddns.net/my-ubuntu": rpc error: code = Unknown desc = Error: image my-ubuntu:latest not found
  Warning  Failed                 34s (x2 over 1m)  kubelet, kubes-slave  Error: ErrImagePull
  Warning  BackOff                19s (x6 over 1m)  kubelet, kubes-slave  Back-off restarting failed container

答え1

既知の問題https://github.com/kubernetes/kubernetes/issues/57427、マスターで解決https://github.com/kubernetes/kubernetes/pull/57463

1.9.1の修正https://github.com/kubernetes/kubernetes/pull/57472

以前の回避策:

プライベートレジストリに.dockerconfigjsonがすでに存在する場合は、タイプとデータキーを手動で指定できます。

kubectl create secret generic my-secret-name \
  --type=kubernetes.io/dockerconfigjson \
  --from-file .dockerconfigjson=/path/to/.dockerconfigjson

.dockerconfigjsonファイルがまだない場合は、kubectl create secret docker-registry生成されたキーを手動で変更できます。

  1. 次へ追加--dry-run -o yaml > secret.yaml
  2. タイプをkubernetes.io/dockercfg以下から変更してください。kubernetes.io/dockercfgjson
  3. データキーを.dockercfg以下から変更してください。.dockercfgjson
  4. 修正された秘密の作成kubectl create -f secret.yaml

関連情報