Kubernetes no puede extraer la imagen desde un registro privado inseguro.
Tengo un registro privado de Docker no seguro alojado en un servidor de máquina virtual (vm1). Estoy intentando crear una implementación de k8s a partir de una imagen cargada en este registro. Sorprendentemente, el comando docker pull funciona bien ya que he configurado /etc/docker/daemon.json con insecure-registries.
El error detallado a través del comando kubectl describe es el siguiente. ¿Alguna idea de qué podría estar saliendo mal?
Gracias.
No se pudo descargar la imagen "vm1:5000/temp/leads:latest": error de RPC: código = Desconocido desc = no se pudo descargar y descomprimir la imagen "vm1:5000/temp/leads:latest": no se pudo resolver la referencia "vm1:5000/temp/leads:latest": no se pudo realizar la solicitud: Get "https://vm1:5000/v2/temp/leads/manifests/latest": el servidor proporcionó una respuesta HTTP al cliente HTTPS
El comando docker pull es
docker pull vm1:5000/temp/leads:latest
El archivo de manifiesto de k8s es el siguiente
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: oleads
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: vm1:5000/temp/leads:latest
resources:
requests:
memory: "64Mi"
cpu: 0.5
limits:
memory: "512Mi"
cpu: 0.5
ports:
- containerPort: 8980
imagePullPolicy: Always
davy.ai
El mensaje de error sugiere que hay un problema con el certificado HTTPS para el registro privado de Docker alojado en vm1:5000. Kubernetes requiere que toda la comunicación con los registros se realice de manera segura utilizando HTTPS, y parece que el registro está respondiendo con una respuesta HTTP en su lugar.
Para resolver este problema, debes asegurarte de que el registro esté configurado con un certificado HTTPS válido. Una forma de hacerlo es utilizar una autoridad de certificación (CA) para emitir un certificado para el nombre de dominio del registro y configurar el registro para utilizar este certificado para la comunicación HTTPS.
Una vez que tengas configurado un certificado HTTPS válido, puedes actualizar tu archivo de manifiesto de k8s para utilizar el punto final HTTPS para el registro, de la siguiente manera:
Este archivo de manifiesto también incluye la definición de un secreto llamado
registry-secret
, que se utiliza para almacenar las credenciales necesarias para autenticarse con el registro privado. Debes reemplazarbase64-encoded-docker-config
con tus credenciales reales en el formato correcto.