El archivo de configuración no está disponible al conectarse
En este artículo se describe cómo corregir problemas que se producen cuando no se puede conectar a un clúster de Azure Kubernetes Service (AKS) debido a un archivo de configuración que falta o no es válido.
Requisitos previos
- Azure CLI.
- La herramienta de línea de comandos del clúster de Kubernetes (kubectl). También puede instalar kubectl mediante la ejecución del 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 texto siguiente:
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 manera predeterminada:
El comando az aks get-credentials en 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 un intento de sesión de Kubernetes 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-credentials
comando intenta agregar los nuevos parámetros kubeconfig en el archivo C:\Users\A\.kube\config .El comando kubectl intenta buscar en el archivo C:\Users\A\.kube\config .
Pero para kubectl, si el puntero al archivo kubeconfig ha cambiado, se supone que el archivo que se usa para acceder al clúster está en una ubicación diferente.
Nota:
Un archivo kubeconfig es una referencia a un archivo que contiene parámetros de configuración para acceder 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 mediante la ejecución del comando en la az aks get-credentials
CLI de Azure, que guarda las credenciales. Si no desea usar la ubicación predeterminada, especifique el --file <config-file-location>
parámetro con la ubicación de la configuración (por ejemplo, ~/Dir1/Dir2/config o C:\Dir1\Dir2\config).
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 del que espera que sea el az aks get-credentials
comando o la herramienta kubectl.
Solución: Mueva el archivo de configuración , vuelva a guardar las credenciales o cambie la variable de entorno KUBECONFIG.
Realice 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 desee 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
KUBECONFIG
variable 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 kubectl config 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 la máquina. 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 expirarse o dañarse. 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>]
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.