Puede utilizar un registro de contenedor externo con pods de clúster de TKG.

Solucionar errores al extraer imágenes de un registro de contenedor

Si configura TKG con los certificados en los que confiar y agrega el certificado autofirmado al clúster kubeconfig, debería poder extraer correctamente una imagen de contenedor de un registro privado que use ese certificado autofirmado.

El siguiente comando puede ayudarle a determinar si la imagen del contenedor se extrajo correctamente para una carga de trabajo del pod:
kubectl describe pod PODNAME

Este comando muestra el estado detallado y los mensajes de error para un pod determinado. Un ejemplo de intento de extracción de una imagen antes de agregar certificados personalizados al clúster:

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
Y, al ejecutar el siguiente comando:
kubectl get pods
El error ErrImagePull también se puede ver en la vista de estado general 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
Los errores “x509: certificado firmado por entidad desconocida” y “ErrImagePull” indican que el clúster no está configurado con el certificado correcto para conectarse al registro de contenedor privado. Falta el certificado o está mal configurado.

Si experimenta errores al conectarse a un registro privado después de configurar los certificados, puede comprobar si los certificados aplicados en la configuración se aplican al clúster. Puede comprobar si los certificados se aplicaron correctamente en su configuración mediante SSH.

Se pueden realizar dos pasos de investigación conectándose a un nodo de trabajador a través de SSH.
  1. Compruebe la carpeta /etc/ssl/certs/ en busca de archivos denominados tkg-<cert_name>.pem, donde <cert_name> es la propiedad "name" del certificado agregado en TkgServiceConfiguration. Si los certificados coinciden con lo que está presente en TkgServiceConfiguration, y sigue sin poder usarse un registro privado, complete el siguiente paso para profundizar en el diagnóstico.
  2. Ejecute la siguiente prueba de conexión openssl en el servidor de destino mediante certificados autofirmados con el comando openssl s_client -connect hostname:port_num, donde hostname es el nombre de host o el nombre de DNS del registro privado que utiliza certificados autofirmados, y port_num es el número de puerto en el que se ejecuta el servicio (por lo general, el puerto 443 para HTTPS).

    Puede comprobar exactamente qué error devuelve openssl cuando intenta conectarse al endpoint que utiliza certificados autofirmados y solucionar la situación desde allí; por ejemplo, agregando los certificados correctos a TkgServiceConfiguration. Si el clúster de TKG está integrado con el certificado incorrecto, deberá actualizar la configuración de TKG con los certificados correctos, eliminar el clúster de TKG y, a continuación, volver a crearlo con la configuración que contiene los certificados correctos.

  3. Compruebe que el contenido del mapa de datos del secreto tenga doble codificación base64. Se requiere doble codificación base64. Si el contenido del valor de la asignación de datos no está doblemente codificado con Base64, no se puede procesar el archivo PEM resultante.