Kubeadm: No se puede actualizar kube-apiserver desde el registro privado.

Creado en 2 oct. 2017  ·  4Comentarios  ·  Fuente: kubernetes/kubeadm

Revisé este problema, # 71, parece que no puedo agregar credenciales si kube-apiserver no se está ejecutando, pero después de extraer manualmente la imagen privada y reiniciar kubelet, todavía obtengo el error.

PullImage "docker.kesci.com:5000/kube-apiserver:latest" from image service failed: rpc error: code = Unknown desc = Error response from daemon: Get https://**my.private.image.registry**/v2/kube-apiserver/manifests/latest: no basic auth credentials

Versiones

versión kubeadm (use kubeadm version ):

Medio ambiente :

  • Versión de Kubernetes (use kubectl version ):
    Client Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.5", GitCommit:"17d7182a7ccbb167074be7a87f0a68bd00d58d97", GitTreeState:"clean", BuildDate:"2017-08-31T09:14:02Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
  • Proveedor de nube o configuración de hardware :
    aws
  • SO (por ejemplo, de / etc / os-release):
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
  • Kernel (por ejemplo, uname -a ):
    Linux ip-172-31-28-254 4.4.0-92-generic #115-Ubuntu SMP Thu Aug 10 09:04:33 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
  • Otros :

¿Qué sucedió?

Reemplazo manualmente la imagen de la configuración /etc/kubernetes/manifests/kube-apiserver.yaml , y kubelet obtuvo el error container start failed: ErrImagePull: rpc error: code = Unknown desc = Error response from daemon: Get https://my.private.image.registry/v2/kube-apiserver/manifests/latest: no basic auth credentials , parece que no hay credenciales configuradas, así que manualmente la ventana acoplable extrae la imagen
docker pull my.private.image.registry/kube-apiserver:latest y run service kubelet restart , todavía tienen este error.

¿Qué esperabas que sucediera?

El soporte de kubelet configura manualmente las credenciales o puede reconocer imágenes extraídas locales.

¿Cómo reproducirlo (de la forma más mínima y precisa posible)?

Reemplace la imagen /etc/kubernetes/manifests/kube-apiserver.yaml con una imagen de registro privada.

kinsupport

Comentario más útil

@ggaaooppeenngg deberías probar esto:

  1. Pre-pull de imágenes con Docker Pull
  2. Use kubeadm init --config yourconfigfile , teniendo cuidado de establecer la opción imageRepository en el archivo de configuración

Tenga en cuenta que:

  • tienes que extraer imágenes previamente, porque no hay forma de crear una imagePullSecrets antes de que exista el clúster 😄
  • el procedimiento anterior funciona en kubeadm v1.8; No recuerdo si esto también fue compatible en versiones anteriores: confuso:
  • este procedimiento establece su repositorio en archivos yaml sin requerir cambios manuales 👍; sin embargo, se espera que todas las imágenes locales sigan una convención de nomenclatura estándar (por ejemplo, nombre de componente-arquitectura: versión)

Para obtener más información, puede consultar https://kubernetes.io/docs/admin/kubeadm/

Todos 4 comentarios

Mi solución: Docker extrae la imagen y establece imagePullPolicy en Nunca, luego reinicia kubelet.

¿Cómo espera que actúe kubeadm en esta situación? Usamos imágenes oficiales y no admitimos repositorios personalizados. ¿Cuál es su caso de uso para usar una imagen personalizada?

@ggaaooppeenngg deberías probar esto:

  1. Pre-pull de imágenes con Docker Pull
  2. Use kubeadm init --config yourconfigfile , teniendo cuidado de establecer la opción imageRepository en el archivo de configuración

Tenga en cuenta que:

  • tienes que extraer imágenes previamente, porque no hay forma de crear una imagePullSecrets antes de que exista el clúster 😄
  • el procedimiento anterior funciona en kubeadm v1.8; No recuerdo si esto también fue compatible en versiones anteriores: confuso:
  • este procedimiento establece su repositorio en archivos yaml sin requerir cambios manuales 👍; sin embargo, se espera que todas las imágenes locales sigan una convención de nomenclatura estándar (por ejemplo, nombre de componente-arquitectura: versión)

Para obtener más información, puede consultar https://kubernetes.io/docs/admin/kubeadm/

@jamiehannaford Quiero

¿Fue útil esta página
0 / 5 - 0 calificaciones