您可以將外部容器登錄與 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:由未知授權機構簽署的憑證」和「ErrImagePull」指示,未使用正確的憑證將設定叢集以連線至私人容器登錄。憑證遺失或設定錯誤。
如果在設定憑證後,在連線私人登錄時遇到錯誤,您可以檢查組態中所套用的憑證是否已套用至該叢集。您可以檢查是否已使用 SSH 正確套用組態中已套用的憑證。
可進行兩個調查步驟,方法為透過 SSH 連線至 worker 節點。
- 檢查資料夾
/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 編碼。如果資料對應值的內容沒有使用雙重 base6 編碼,則無法處理產生的 PEM 檔案。