De forma predeterminada, Elastic Container Instance (ECI) extrae las imágenes mediante HTTPS. Si su repositorio de imágenes autogestionado utiliza HTTP o un certificado autofirmado, la extracción falla con un evento ErrImagePull. Para solucionarlo, agregue la anotación correspondiente a su pod o ImageCache.
Requisitos previos
Antes de empezar, asegúrese de que:
ECI pueda acceder a su repositorio de imágenes autogestionado a través de la red.
Escenarios de error
A continuación se muestra una tabla que relaciona cada escenario de error con su causa y solución.
|
Escenario |
Causa |
Solución |
|
El repositorio autogestionado utiliza HTTP |
ECI usa HTTPS de forma predeterminada. La diferencia de protocolos provoca que la extracción falle. |
Agregue la anotación |
|
El repositorio autogestionado utiliza HTTPS con un certificado autofirmado |
El certificado autofirmado no supera la autenticación. |
Agregue la anotación |
Anotaciones
Utilice las siguientes anotaciones para configurar el comportamiento de extracción de imágenes de ECI. Agréguelas en la sección metadata de la especificación de su pod o del manifiesto de ImageCache.
Las anotaciones solo surten efecto cuando se crea un pod. Agregar o actualizar anotaciones en un pod existente no tiene ningún efecto.
|
Anotación |
Formato del valor |
Descripción |
|
|
Una o más direcciones de repositorio, separadas por comas. Incluya el puerto si la dirección lo tiene. Ejemplo: |
Indica a ECI que extraiga del repositorio especificado mediante HTTP en lugar de HTTPS. |
|
|
Una o más direcciones de repositorio, separadas por comas. Incluya el puerto si la dirección lo tiene. Ejemplo: |
Indica a ECI que omita la verificación del certificado al extraer del repositorio especificado. |
Ejemplos
Cree un pod
En un Deployment, agregue las anotaciones dentro de spec.template.metadata, y no en metadata del nivel superior.
Repositorio HTTP
ECI utiliza la anotación k8s.aliyun.com/plain-http-registry para extraer mediante HTTP desde la dirección especificada.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
annotations:
k8s.aliyun.com/plain-http-registry: "192.168.XX.XX:5000"
labels:
app: nginx
alibabacloud.com/eci: "true"
spec:
containers:
- name: nginx
image: 192.168.XX.XX:5000/test/nginx:latest
Repositorio con certificado autofirmado
ECI utiliza la anotación k8s.aliyun.com/insecure-registry para omitir la verificación del certificado al extraer desde la dirección especificada.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
annotations:
k8s.aliyun.com/insecure-registry: "harbor***.pre.com"
labels:
app: nginx
alibabacloud.com/eci: "true"
spec:
containers:
- name: nginx
image: harbor***.pre.com/test/nginx:latest
Cree un ImageCache
Agregue las anotaciones directamente en metadata del nivel superior del manifiesto de ImageCache.
Repositorio HTTP
apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
name: imagecache-sample
annotations:
k8s.aliyun.com/plain-http-registry: "192.168.XX.XX:5000"
spec:
images:
- 192.168.XX.XX:5000/test/nginx:latest
imagePullSecrets:
- default:secret1
- default:secret2
- kube-system:secret3
imageCacheSize:
25
retentionDays:
7
Repositorio con certificado autofirmado
apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
name: imagecache-sample
annotations:
k8s.aliyun.com/insecure-registry: "harbor***.pre.com"
spec:
images:
- harbor***.pre.com/test/nginx:latest
imagePullSecrets:
- default:secret1
- default:secret2
- kube-system:secret3
imageCacheSize:
25
retentionDays:
7