Compartir a través de


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.

  1. 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)
    
  2. 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'
    
  3. Salida del ejemplo:

    "mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
    "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs"
    "mynexusk8scluster-0b32128d-control-plane-qq5jm"
    
  4. Establezca el nombre del nodo de clúster en la variable VM_NAME.

    VM_NAME="mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
    
  5. 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.

  1. Configure las variables CLUSTER_NAME, RESOURCE_GROUP y SUBSCRIPTION_ID.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Consulte el grupo de recursos administrados con az y almacénelo en MANAGED_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)
    
  3. 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 &
    
  4. 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.

  1. 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
    
  2. 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.

  3. 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

  1. 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>"
    
  2. 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)}'
    
  3. 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:

  1. Vaya a Azure Portal e inicie sesión con el nombre de usuario y la contraseña.
  2. 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.

Captura de pantalla de la exploración del servicio Nexus Kubernetes.

  1. Busque el recurso específico "Clúster de Kubernetes de Nexus" que necesita para usar la búsqueda.

Captura de pantalla de exploración del clúster de Nexus Kubernetes.

  1. 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".

Captura de pantalla de la página principal del clúster de Nexus Kubernetes.

  1. 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.

Captura de pantalla de exploración de los nodos del clúster de Nexus Kubernetes.

  1. Seleccione el nombre del nodo de Kubernetes que le interesa para ver sus detalles.
  2. 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.

Captura de pantalla de la exploración de redes de nodos de clúster de Nexus Kubernetes.

Pasos siguientes

Pruebe los siguientes artículos para más información sobre el clúster de Kubernetes de Azure Operator Nexus.