TKG 클러스터 포드에서 외부 컨테이너 레지스트리를 사용할 수 있습니다.
컨테이너 레지스트리에서 이미지 끌어오기 오류 문제 해결
신뢰할 수 있는 인증서로 TKG를 구성하고 자체 서명된 인증서를 kubeconfig 클러스터에 추가하면 자체 서명된 인증서를 사용하는 개인 레지스트리에서 컨테이너 이미지를 성공적으로 끌어올 수 있습니다.
다음 명령은 포드 워크로드에 대해 컨테이너 이미지를 성공적으로 끌어왔는지 확인하는 데 유용할 수 있습니다.
kubectl describe pod PODNAME
이 명령은 주어진 포드에 대한 자세한 상태 및 오류 메시지를 보여줍니다. 클러스터에 사용자 지정 인증서를 추가하기 전에 이미지 끌어오기를 시도하는 예:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 33s default-scheduler ... Normal Image 32s image-controller ... Normal Image 15s image-controller ... Normal SuccessfulRealizeNSXResource 7s (x4 over 31s) nsx-container-ncp ... Normal Pulling 7s kubelet Waiting test-gc-e2e-demo-ns/testimage-8862e32f68d66f727d1baf13f7eddef5a5e64bbd-v10612 Warning Failed 4s kubelet failed to get images: ... Error: ... x509: certificate signed by unknown authority
다음 명령을 실행하는 경우:
kubectl get pods
전체 포드 상태 보기에서도
ErrImagePull
오류를 볼 수 있습니다.
NAME READY STATUS RESTARTS AGE testimage-nginx-deployment-89d4fcff8-2d9pz 0/1 Pending 0 17s testimage-nginx-deployment-89d4fcff8-7kp9d 0/1 ErrImagePull 0 79s testimage-nginx-deployment-89d4fcff8-7mpkj 0/1 Pending 0 21s testimage-nginx-deployment-89d4fcff8-fszth 0/1 ErrImagePull 0 50s testimage-nginx-deployment-89d4fcff8-sjnjw 0/1 ErrImagePull 0 48s testimage-nginx-deployment-89d4fcff8-xr5kg 0/1 ErrImagePull 0 79s"x509: certificate signed by unknown authority" 및 "ErrImagePull" 오류는 클러스터가 개인 컨테이너 레지스트리에 연결할 수 있는 올바른 인증서로 구성되지 않았음을 나타냅니다. 인증서가 누락되었거나 잘못 구성되었습니다.
인증서를 구성한 후 개인 레지스트리에 연결하는 데 오류가 발생하는 경우 구성에 적용된 인증서가 클러스터에 적용되었는지 확인할 수 있습니다. SSH를 사용하여 구성에 적용했던 인증서가 제대로 적용되었는지 여부를 확인할 수 있습니다.
SSH를 통해 작업자 노드에 연결하여 두 가지 조사 단계를 수행할 수 있습니다.
/etc/ssl/certs/
폴더에서tkg-<cert_name>.pem
이라는 파일을 확인합니다. 여기서<cert_name>
은TkgServiceConfiguration
에 추가된 인증서의 "name" 속성입니다. 인증서가TkgServiceConfiguration
에 있는 인증서와 일치하고 개인 레지스트리 사용이 여전히 작동하지 않으면 다음 단계를 수행하여 추가 진단을 진행합니다.openssl s_client -connect hostname:port_num
명령을 실행하여 자체 서명된 인증서를 사용하는 대상 서버에 다음 openssl 연결 테스트를 실행합니다. 여기서hostname
은 자체 서명된 인증서를 사용하는 개인 레지스트리의 호스트 이름/DNS 이름이고port_num
은 서비스가 실행되고 있는 포트 번호(일반적으로 HTTPS의 경우 443임)입니다.자체 서명된 인증서를 사용하는 끝점에 연결하려고 할 때 openssl이 정확히 어떤 오류를 반환하는지 확인하고, 거기서부터 상황을 해결할 수 있습니다(예를 들어
TkgServiceConfiguration
에 올바른 인증서를 추가하여). TKG 클러스터에 잘못된 인증서가 내장되어 있는 경우 올바른 인증서로 구성을 업데이트하고, TKG 클러스터를 삭제한 다음 올바른 인증서가 포함된 구성을 사용하여 다시 생성해야 합니다.- 암호 데이터 맵의 컨텐츠가 이중 base64로 인코딩되어 있는지 확인합니다. 이중 base64 인코딩은 필수입니다. 데이터 맵 값의 컨텐츠가 base64로 이중으로 인코딩되지 않으면 결과 PEM 파일을 처리할 수 없습니다.