您可以將外部容器登錄與 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 節點。
  1. 檢查資料夾 /etc/ssl/certs/ 中名為 tkg-<cert_name>.pem 的檔案,其中 <cert_name> 是新增到 TkgServiceConfiguration 的憑證的「name」內容。如果憑證符合 TkgServiceConfiguration 中的內容,且使用私人登錄仍無法執行,請完成下一個步驟來進一步診斷。
  2. 執行命令 openssl s_client -connect hostname:port_num,以使用自我簽署憑證對目標伺服器執行下列 openssl 連線測試,其中 hostname 是使用自我簽署憑證之私人登錄的主機名稱/DNS 名稱,而 port_num 是服務執行所在的連接埠號碼 (通常針對 HTTPS 為 443)。

    您可以準確檢查在嘗試連線至使用自我簽署憑證的端點時 openssl 所傳回的錯誤,並解決來自該處的情況,例如,將正確的憑證新增至 TkgServiceConfiguration。如果 TKG 叢集內嵌了錯誤憑證,您必須使用正確的憑證更新組態,刪除 TKG 叢集,然後使用包含正確憑證的組態重新建立它。

  3. 確認密碼資料對應的內容採用雙 base64 編碼。需要雙重 base64 編碼。如果資料對應值的內容沒有使用雙重 base6 編碼,則無法處理產生的 PEM 檔案。