개인 레지스트리에서 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

관련 정보