Conexión a un clúster de Kubernetes de Azure Operator Nexus
A lo largo del ciclo de vida del clúster de Kubernetes del operador de Azure, es preciso acceder directamente a un nodo de clúster. Este acceso podría ser para mantenimiento, recopilación de registros u otras operaciones de solución de problemas. Puede acceder a un nodo a través de la autenticación, que los métodos varían en función del método de conexión. Puede autenticarse de forma segura en los nodos de clúster a través de dos opciones que se describen en este artículo. Por motivos de seguridad, los nodos de clúster no se exponen a Internet. En su lugar, para conectarse directamente a los nodos de clúster, debe usar kubectl debug
o la dirección IP del host desde un jumpbox.
Requisitos previos
- Un clúster de Kubernetes de Azure Operator Nexus desplegado en un grupo de recursos en su suscripción Azure.
- Clave privada SSH para los nodos del clúster.
- Para SSH mediante la dirección IP del nodo, debe implementar una máquina virtual jumpbox en la misma red de interfaz de red de contenedor (CNI) que los nodos del clúster.
Acceso a nodos de clúster a través de Azure Arc para servidores
El comando az ssh arc
permite a los usuarios acceder de forma remota a una máquina virtual de clúster que se ha conectado a Azure Arc. Este método es una manera segura de conectarse mediante SSH al nodo de clúster directamente desde la línea de comandos, lo que lo convierte en un método rápido y eficaz para la administración remota.
Nota:
Los nodos de clúster de Kubernetes de Operator Nexus son servidores conectados a Arc de forma predeterminada.
Establezca las variables necesarias. Reemplace los marcadores de posición por los valores reales pertinentes para el entorno de Azure y el clúster de Nexus Kubernetes.
RESOURCE_GROUP="myResourceGroup" # Resource group where the Nexus Kubernetes cluster is deployed CLUSTER_NAME="myNexusK8sCluster" # Name of the Nexus Kubernetes cluster SUBSCRIPTION_ID="<Subscription ID>" # Azure subscription ID ADMIN_USERNAME="azureuser" # Username for the cluster administrator (--admin-username parameter value used during cluster creation) SSH_PRIVATE_KEY_FILE="<vm_ssh_id_rsa>" # Path to the SSH private key file MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --output tsv --query managedResourceGroupConfiguration.name)
Obtenga los nombres de nodo de clúster disponibles.
az networkcloud kubernetescluster show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID -o json | jq '.nodes[].name'
Salida del ejemplo:
"mynexusk8scluster-0b32128d-agentpool1-md-7h9t4" "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs" "mynexusk8scluster-0b32128d-control-plane-qq5jm"
Establezca el nombre del nodo de clúster en la variable VM_NAME.
VM_NAME="mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
Ejecute el siguiente comando para SSH en el nodo del clúster.
az ssh arc --subscription $SUBSCRIPTION_ID \ --resource-group $MANAGED_RESOURCE_GROUP \ --name $VM_NAME \ --local-user $ADMIN_USERNAME \ --private-key-file $SSH_PRIVATE_KEY_FILE
Acceso a nodos mediante la API de Kubernetes
Este método requiere el uso del comando kubectl debug
. Este método se limita a los contenedores y puede perder problemas más amplios del sistema, a diferencia de SSH (mediante "az ssh arc" o IP directa), que ofrece acceso y control completos de nodo.
Acceso a la API de Kubernetes mediante Azure Arc para Kubernetes
Nota:
Al crear un clúster de Kubernetes de Nexus, Nexus crea automáticamente un grupo de recursos administrado dedicado a almacenar los recursos del clúster. Dentro de este grupo, se establece el recurso de clúster conectado a Arc.
Para acceder al clúster, es necesario configurar la conexión del clúster kubeconfig
. Después de iniciar sesión en la CLI de Azure con la entidad Microsoft Entra pertinente, puede obtener el kubeconfig
necesario para comunicarse con el clúster desde cualquier lugar, incluso fuera del firewall que lo rodea.
Configure las variables
CLUSTER_NAME
,RESOURCE_GROUP
ySUBSCRIPTION_ID
.CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
Consulte el grupo de recursos administrados con
az
y almacénelo enMANAGED_RESOURCE_GROUP
.az account set -s $SUBSCRIPTION_ID MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
El siguiente comando inicia un proxy connectedk8s que le permite conectarse al servidor de la API de Kubernetes para el clúster Nexus Kubernetes especificado.
az connectedk8s proxy -n $CLUSTER_NAME -g $MANAGED_RESOURCE_GROUP &
Use
kubectl
para enviar solicitudes al clúster:kubectl get pods -A
Ahora debería ver una respuesta del clúster con la lista de todos los nodos.
Nota
Si aparece el mensaje de error " o se pudo enviar el token de acceso al proxy cliente. No se pudo conectar a MSI", es posible que tenga que realizar un az login
para volver a autenticarse con Azure.
Acceso a los nodos de clúster a través de Azure Arc para Kubernetes
Una vez que esté conectado a un clúster a través de Arc para Kubernetes, puede conectarse al nodo de Kubernetes individual mediante el comando kubectl debug
para ejecutar un contenedor con privilegios en el nodo.
Enumere los nodos del clúster de Kubernetes de Nexus:
$> kubectl get nodes NAME STATUS ROLES AGE VERSION mynexusk8scluster-0b32128d-agentpool1-md-7h9t4 Ready <none> 125m v1.24.9 mynexusk8scluster-0b32128d-agentpool1-md-c6xbs Ready <none> 125m v1.24.9 mynexusk8scluster-0b32128d-control-plane-qq5jm Ready <none> 124m v1.24.9
Inicie un contenedor con privilegios en el nodo y conéctese a él:
$> kubectl debug node/mynexusk8scluster-0b32128d-agentpool1-md-7h9t4 -it --image=mcr.microsoft.com/cbl-mariner/base/core:2.0 Creating debugging pod node-debugger-mynexusk8scluster-0b32128d-agentpool1-md-7h9t4-694gg with container debugger on node mynexusk8scluster-0b32128d-agentpool1-md-7h9t4. If you don't see a command prompt, try pressing enter. root [ / ]#
Este contenedor con privilegios proporciona acceso al nodo. Ejecute comandos en el nodo de clúster ejecutando
chroot /host
en la línea de comandos.Cuando haya terminado con un pod de depuración, escriba el comando
exit
para finalizar la sesión interactiva del shell. Después de salir del shell, asegúrese de eliminar el pod:kubectl delete pod node-debugger-mynexusk8scluster-0b32128d-agentpool1-md-7h9t4-694gg
Creación de una conexión de shell interactiva a un nodo mediante la dirección IP
Conexión al nodo de clúster desde Jumpbox de Azure
Otra opción para conectarse de forma segura a un nodo de clúster de Kubernetes del operador de Azure es configurar un acceso directo a la red CNI del clúster desde la máquina virtual de JumpBox de Azure. Con este enfoque, puede usar SSH en los nodos del clúster y ejecutar también comandos kubectl
en el clúster mediante el archivo kubeconfig
.
Póngase en contacto con el administrador de red para configurar una conexión directa desde la máquina virtual de Jumpbox de Azure a la red CNI del clúster.
Conexión al nodo de clúster desde jumpbox local
Establezca el acceso directo al CNI (interfaz de red de contenedor) del clúster desde el jumpbox local. Este acceso directo le permite acceder mediante SSH a los nodos del clúster y le permite ejecutar comandos kubectl
mediante el archivo kubeconfig
.
Póngase en contacto con el administrador de red para configurar esta conexión directa a la red CNI del clúster.
Dirección IP de los nodos del clúster
Para poder conectarse a los nodos del clúster, debe encontrar la dirección IP de los nodos. La dirección IP de los nodos se puede encontrar mediante Azure Portal o la CLI de Azure.
Uso de la CLI de Azure
Establezca las variables RESOURCE_GROUP, CLUSTER_NAME y SUBSCRIPTION_ID para que coincidan con el entorno.
RESOURCE_GROUP="myResourceGroup" CLUSTER_NAME="myNexusK8sCluster" SUBSCRIPTION_ID="<Subscription ID>"
Ejecute el siguiente comando para obtener la dirección IP de los nodos.
az networkcloud kubernetescluster show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID -o json | jq '.nodes[] | select(any(.networkAttachments[]; .networkAttachmentName == "defaultcni")) | {name: .name, ipv4Address: (.networkAttachments[] | select(.networkAttachmentName == "defaultcni").ipv4Address)}'
Esta es la salida de ejemplo del comando.
{ "name": "mynexusk8scluster-0b32128d-agentpool1-md-7h9t4", "ipv4Address": "10.5.54.47" } { "name": "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs", "ipv4Address": "10.5.54.48" } { "name": "mynexusk8scluster-0b32128d-control-plane-qq5jm", "ipv4Address": "10.5.54.46" }
Uso de Azure Portal
Para buscar la dirección IP de la máquina virtual para SSH, siga estos pasos:
- Vaya a Azure Portal e inicie sesión con el nombre de usuario y la contraseña.
- Escriba "Clúster de Kubernetes (Operator Nexus)" en el cuadro de búsqueda y seleccione el servicio "Clúster de Kubernetes" en la lista de resultados.
- Busque el recurso específico "Clúster de Kubernetes de Nexus" que necesita para usar la búsqueda.
- Una vez que haya encontrado el recurso correcto haciendo coincidir su nombre con el nombre del clúster, seleccione el recurso para ir a la página principal "Clúster de Kubernetes".
- Una vez que haya encontrado el recurso correcto haciendo coincidir su nombre con el nombre del clúster, vaya a la sección "Nodos de clúster de Kubernetes" en el menú izquierdo.
- Seleccione el nombre del nodo de Kubernetes que le interesa para ver sus detalles.
- Compruebe la pestaña "Redes conectadas" para buscar la dirección IP de la "red de nivel 3" del nodo que se usó como red CNI.
Pasos siguientes
Pruebe los siguientes artículos para más información sobre el clúster de Kubernetes de Azure Operator Nexus.