Conexión a un clúster con kubectl
Escenario
Esta sección utiliza un clúster de CCE como ejemplo para describir cómo conectarse a un clúster de CCE con kubectl.
Descripción del permiso
Cuando se accede a un clúster mediante kubectl, CCE utiliza el archivo kubeconfig.json generado en el clúster para la autenticación. Este archivo contiene información del usuario, basada en la cual CCE determina qué recursos de Kubernetes puede acceder kubectl. Los permisos registrados en un archivo kubeconfig.json varían de usuario a usuario.
Para obtener más información acerca de los permisos de usuario, consulte Cluster Permissions (basados en IAM) y Namespace Permissions (basados en Kubernetes RBAC).
Uso de kubectl
Para conectarse a un clúster de Kubernetes desde un PC, puede usar kubectl, una herramienta de línea de comandos de Kubernetes. Puede iniciar sesión en la consola de CCE, hacer clic en el nombre del clúster que se va a conectar y ver la dirección de acceso y el procedimiento de conexión kubectl en la página de detalles del clúster como se muestra en la sección Figura 1.
- Intra-VPC access: El cliente que accede al clúster debe estar en la misma VPC que el clúster.
- Public access: El cliente que accede al clúster debe poder acceder a las redes públicas y el clúster se ha vinculado con una IP de red pública.
Para vincular una IP pública (EIP) al clúster, vaya a la página de detalles del clúster y haga clic en Bind junto a EIP en el panel Connection Information, como se muestra en Figura 1. En un clúster con una EIP vinculada, kube-apiserver estará expuesto a redes públicas y puede ser atacado. Se recomienda configurar Advanced Anti-DDoS (AAD) para la EIP del nodo donde reside kube-apiserver.
Descargue kubectl y el archivo de configuración. Copie el archivo a su cliente y configure kubectl. Una vez completada la configuración, puede acceder a sus clústeres de Kubernetes. Procedimiento:
- Descargar kubectl.
Prepare un equipo que pueda acceder a la red pública e instale kubectl en modo de CLI. Puede ejecutar el comando kubectl version para comprobar si kubectl ha sido instalado. Si se ha instalado kubectl, omita este paso.
Esta sección utiliza el entorno de Linux como ejemplo para describir cómo instalar y configurar kubectl. Para más detalles, véase Instalación de kubectl.
- Inicie sesión en su cliente y descargue kubectl.
cd /home curl -LO https://dl.k8s.io/release/{v1.25.0}/bin/linux/amd64/kubectl
{v1.25.0} especifica el número de versión. Reemplácelo según sea necesario.
- Instale kubectl.
chmod +x kubectl mv -f kubectl /usr/local/bin
- Inicie sesión en su cliente y descargue kubectl.
- Obtener el archivo de configuración de kubectl (kubeconfig).
En el panel Connection Information de la página de detalles del clúster, haga clic en Learn more junto a kubectl. En la ventana que se muestra, descargue el archivo de configuración.
Figura 2 Descargar el archivo de configuración
- Se utiliza el archivo de configuración de kubectl kubeconfig.json para la autenticación del clúster. Si se filtra el archivo, los clústeres pueden ser atacados.
- De forma predeterminada, la autenticación bidireccional está deshabilitada para los nombres de dominio en el clúster actual. Puede ejecutar el comando kubectl config use-context externalTLSVerify para habilitar la autenticación bidireccional. Para obtener más información, consulte Autenticación bidireccional para nombres de dominio. Para un clúster que se ha vinculado a una EIP, si la autenticación falla (x509: certificado es válido) cuando se utiliza la autenticación bidireccional, debe vincular la EIP de nuevo y descargar kubeconfig.json de nuevo.
- Los permisos de Kubernetes asignados por el archivo de configuración descargado por los usuarios de IAM son los mismos que los asignados a los usuarios de IAM en la consola de CCE.
- Si la variable de entorno KUBECONFIG está configurada en el sistema operativo Linux, kubectl carga preferentemente la variable de entorno KUBECONFIG en lugar de $home/.kube/config.
- Configurar kubectl.
Configurar kubectl (se utiliza un sistema operativo Linux).
- Inicie sesión en su cliente y copie el archivo de configuración kubeconfig.json descargado en 2 al directorio /home de su cliente.
- Configure el archivo de autenticación de kubectl.
cd /home mkdir -p $HOME/.kube mv -f kubeconfig.json $HOME/.kube/config
- Cambie el modo de acceso kubectl basado en escenarios de servicio.
- Ejecute este comando para habilitar el acceso dentro de la VPC:
kubectl config use-context internal
- Ejecute este comando para habilitar el acceso público (se requiere la EIP):
kubectl config use-context external
- Ejecute este comando para habilitar el acceso público y la autenticación bidireccional (se requiere la EIP):
kubectl config use-context externalTLSVerify
Para obtener más información acerca de la autenticación bidireccional del clúster, consulte Autenticación bidireccional para nombres de dominio.
- Ejecute este comando para habilitar el acceso dentro de la VPC:
Autenticación bidireccional para nombres de dominio
Actualmente, CCE admite la autenticación bidireccional para nombres de dominio.
- La autenticación bidireccional está deshabilitada para los nombres de dominio de forma predeterminada. Puede ejecutar el comando kubectl config use-context externalTLSVerify para cambiar al contexto externalTLSVerify para habilitarlo.
- Cuando una EIP está vinculada o no vinculada de un clúster, o se configura o actualiza un nombre de dominio personalizado, el certificado del servidor de clúster se agregará con la dirección de acceso al clúster más reciente (incluida la EIP vinculada al clúster y todos los nombres de dominio personalizados configurados para el clúster).
- La sincronización de clúster asincrónica tarda aproximadamente de 5 a 10 minutos. Puede ver el resultado de la sincronización en el Synchronize Certificate de Operation Records.
- Para un clúster que se ha vinculado a una EIP, si la autenticación falla (x509: certificado es válido) cuando se utiliza la autenticación bidireccional, debe vincular la EIP de nuevo y descargar kubeconfig.json de nuevo.
- Si no se admite la autenticación bidireccional del nombre de dominio, kubeconfig.json contiene el campo "insecure-skip-tls-verify": true, como se muestra en Figura 3. Para utilizar la autenticación bidireccional, puede descargar de nuevo el archivo kubeconfig.json y habilitar la autenticación bidireccional para los nombres de dominio.
Preguntas frecuentes
- Error del servidor prohibido
Cuando usa kubectl para crear o consultar recursos de Kubernetes, se devuelve el siguiente resultado:
# kubectl get deploy Error from server (Forbidden): deployments.apps is forbidden: User "0c97ac3cb280f4d91fa7c0096739e1f8" cannot list resource "deployments" in API group "apps" in the namespace "default"
La causa es que el usuario no tiene los permisos para operar los recursos de Kubernetes. Para obtener más información acerca de cómo asignar permisos, consulte Permisos de espacio de nombres (basados en Kubernetes RBAC).
- La conexión al servidor localhost:8080 fue rechazada
Cuando usa kubectl para crear o consultar recursos de Kubernetes, se devuelve el siguiente resultado:
The connection to the server localhost:8080 was refused - did you specify the right host or port?
La causa es que la autenticación del clúster no está configurada para el cliente kubectl. Para obtener más información, véase 3.