El archivo de configuración no está disponible al conectarse
En este artículo se describe cómo solucionar los problemas que se producen cuando no se puede conectar a un clúster de Azure Kubernetes Service (AKS) debido a que falta un archivo de configuración o no es válido.
Requisitos previos
- CLI de Azure.
- La herramienta de línea de comandos del clúster kubernetes (kubectl). También puede instalar kubectl ejecutando el comando az aks install-cli en la CLI de Azure.
Síntomas
Durante un intento de conexión de clúster, aparece un mensaje de error similar al siguiente texto:
Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it.
error: You must be logged in to the server (the server has asked for the client to provide credentials)
Causas
La herramienta kubectl y otras herramientas de conexión de Kubernetes usan un archivo de configuración local denominado config. El archivo de configuración contiene credenciales de autenticación y detalles para conectarse al clúster. De forma predeterminada:
El comando az aks get-credentials de la CLI de Azure, que se usa para obtener credenciales de acceso para un clúster de Kubernetes administrado, modifica el archivo ~/.kube/config .
El comando kubectl usa el archivo kubeconfig (configuración de kubectl) en el directorio $HOME/.kube .
Por lo tanto, lo que sucede durante una sesión de Kubernetes intentada depende del usuario que ejecuta el comando kubectl. Si ha iniciado sesión como usuario A y ha ejecutado ambos comandos, esto es lo que sucede:
El
az aks get-credentialscomando intenta agregar los nuevos parámetros kubeconfig en el archivo C:\UsersA.kubeconfig\\\.El comando kubectl intenta buscar en el archivo C:\UsersA.kubeconfig\\\.
Pero para kubectl, si el puntero al archivo kubeconfig ha cambiado, se supone que el archivo que se usa para obtener acceso al clúster debe estar en una ubicación diferente.
Nota
Un archivo kubeconfig es una referencia a un archivo que contiene parámetros de configuración para obtener acceso a clústeres de Kubernetes. No hace referencia necesariamente a un archivo denominado kubeconfig.
El error se produce si se produce uno de los siguientes escenarios:
Causa 1: el archivo de configuración no existe
El archivo de configuración no existe en el equipo.
Solución: guardar las credenciales
Cargue el archivo de configuración ejecutando el az aks get-credentials comando en la CLI de Azure, que guarda las credenciales. Si no desea usar la ubicación predeterminada, --file <config-file-location> especifique el parámetro con la ubicación de config (por ejemplo, ~/Dir1/Dir2/config o C:\Dir1Dir2config\\).
az aks get-credentials --resource-group <cluster-resource-group> \
--name <cluster-name> \
[--file <config-file-location>]
Causa 2: el archivo de configuración está en el directorio incorrecto
El archivo de configuración está en el equipo, pero se encuentra en un directorio diferente de az aks get-credentials donde el comando o la herramienta kubectl espera que sea.
Solución: mover el archivo de configuración , volver a guardar las credenciales o cambiar la variable de entorno KUBECONFIG
Lleve a cabo una o varias de las siguientes acciones:
Mueva el archivo de configuración al directorio en el que desea que esté.
Ejecute el comando
az aks get-credentials. Especifique la ubicación que desea si no es la ubicación predeterminada.az aks get-credentials --resource-group <cluster-resource-group> \ --name <cluster-name> \ [--file <config-file-location>]Use una de las siguientes opciones para cambiar dónde kubectl busca parámetros de configuración:
Modifique la
KUBECONFIGvariable de entorno para que apunte a la ubicación actual del archivo de configuración. Para obtener más información, vea Establecer la variable de entorno KUBECONFIG.Ejecute el comando config de kubectl con el
--kubeconfig=<config-file-location>parámetro.
Causa 3: El archivo de configuración ha expirado o está dañado
El archivo de configuración está en el equipo. También está en el directorio esperado para el az aks get-credentials comando y la herramienta kubectl. Pero el archivo ha expirado o está dañado.
Solución: restablecer las credenciales
Restablezca las credenciales, ya que las credenciales existentes podrían estar expiradas o dañadas. En ese caso, puede ejecutar el az aks get-credentials comando con el --overwrite-existing parámetro.
az aks get-credentials --resource-group <cluster-resource-group> \
--name <cluster-name> \
--overwrite-existing \
[--file <config-file-location>]