È possibile utilizzare un registro di container esterno con pod del cluster TKG.

Risoluzione degli errori di estrazione delle immagini da un registro di container

Se si configura TKG con i certificati da considerare attendibili e si aggiunge il certificato autofirmato al kubeconfig del cluster, è possibile eseguire correttamente il pull di un'immagine di container da un registro privato che utilizza tale certificato autofirmato.

Il comando seguente consente di stabilire se il pull dell'immagine del container è stato effettuato correttamente per un carico di lavoro del pod:
kubectl describe pod PODNAME

Questo comando mostra in dettaglio lo stato e i messaggi di errore di un determinato pod. Esempio di tentativo di effettuare il pull di un'immagine prima di aggiungere certificati personalizzati al cluster:

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
E quando si esegue il comando seguente:
kubectl get pods
L'errore di ErrImagePull è visibile anche nella vista dello stato generale del pod:
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
Gli errori "x509: certificato firmato da autorità sconosciuta" e "ErrImagePull" indicano che il cluster non è configurato con il certificato corretto per la connessione al registro di container privato. Il certificato manca oppure non è configurato correttamente.

Se si verificano errori durante la connessione a un registro privato dopo la configurazione dei certificati, è possibile verificare se i certificati applicati nella configurazione sono applicati al cluster. È possibile verificare se i certificati sono stati applicati correttamente nella loro configurazione utilizzando SSH.

È possibile eseguire due passaggi di analisi collegandosi a un nodo worker tramite SSH.
  1. Controllare nella cartella /etc/ssl/certs/ la presenza di file denominati tkg-<cert_name>.pem, dove <cert_name> è la proprietà "name" del certificato aggiunto in TkgServiceConfiguration. Se i certificati corrispondono a ciò che si trova in TkgServiceConfiguration e l'utilizzo di un registro privato continua a non funzionare, procedere ulteriormente con la diagnosi eseguendo il passaggio successivo.
  2. Eseguire il test della connessione openssl seguente nel server di destinazione utilizzando certificati autofirmati eseguendo il comando openssl s_client -connect hostname:port_num, dove hostname è il nome host o il nome DNS del registro privato che utilizza certificati autofirmati e port_num è il numero della porta in cui è in esecuzione il servizio (in genere 443 per HTTPS).

    È possibile controllare esattamente l'errore restituito da openssl quando si tenta di connettersi all'endpoint che utilizza certificati autofirmati e risolvere la situazione da tale posizione, ad esempio aggiungendo i certificati corretti a TkgServiceConfiguration. Se il cluster TKG è incorporato con un certificato errato, sarà necessario aggiornare la configurazione con i certificati corretti, eliminare il cluster TKG e quindi ricrearlo utilizzando la configurazione che contiene i certificati corretti.

  3. Verificare che il contenuto della mappa dei dati del segreto sia codificato con codifica base64 doppia. La codifica base64 doppia è necessaria. Se la codifica dei contenuti del valore della mappa dei dati non è base64 doppia, il file PEM risultante non può essere elaborato.