Dela via


Anslut till Azure Operator Nexus Kubernetes-kluster

Under hela livscykeln för ditt Azure Operator Nexus Kubernetes-kluster måste du så småningom komma åt en klusternod direkt. Den här åtkomsten kan vara för underhåll, logginsamling eller felsökningsåtgärder. Du får åtkomst till en nod via autentisering, vilka metoder som varierar beroende på din anslutningsmetod. Du autentiserar säkert mot klusternoder via två alternativ som beskrivs i den här artikeln. Av säkerhetsskäl exponeras inte klusternoder för Internet. Om du i stället vill ansluta direkt till klusternoder måste du använda antingen kubectl debug eller värdens IP-adress från en jumpbox.

Förutsättningar

  • Ett Azure Operator Nexus Kubernetes-kluster som distribuerats i en resursgrupp i din Azure-prenumeration.
  • Privat SSH-nyckel för klusternoderna.
  • Till SSH med nodens IP-adress måste du distribuera en virtuell jumpbox-dator i samma CNI-nätverk (Container Network Interface) som klusternoderna.

Åtkomst till klusternoder via Azure Arc för servrar

Med az ssh arc kommandot kan användare fjärransluta till en virtuell klusterdator som har anslutits till Azure Arc. Den här metoden är ett säkert sätt att SSH till klusternoden direkt från kommandoraden, vilket gör den till en snabb och effektiv metod för fjärrhantering.

Kommentar

Operatorn Nexus Kubernetes-klusternoder är Arc-anslutna servrar som standard.

  1. Ange de variabler som krävs. Ersätt platshållarna med de faktiska värden som är relevanta för azure-miljön och Nexus Kubernetes-klustret.

    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. Hämta de tillgängliga klusternodnamnen.

    az networkcloud kubernetescluster show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID -o json | jq '.nodes[].name'
    
  3. Exempel på utdata:

    "mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
    "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs"
    "mynexusk8scluster-0b32128d-control-plane-qq5jm"
    
  4. Ange namnet på klusternoden till variabeln VM_NAME.

    VM_NAME="mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
    
  5. Kör följande kommando till SSH till klusternoden.

    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
    

Komma åt noder med kubernetes-API:et

Den här metoden kräver användning av kubectl debug kommando. Den här metoden är begränsad till containrar och kan missa bredare systemproblem, till skillnad från SSH (med hjälp av "az ssh arc" eller direkt IP), som erbjuder fullständig nodåtkomst och kontroll.

Åtkomst till Kubernetes API via Azure Arc för Kubernetes

Kommentar

När du skapar ett Nexus Kubernetes-kluster skapar Nexus automatiskt en hanterad resursgrupp som är dedikerad till att lagra klusterresurserna. Inom den här gruppen upprättas den Arc-anslutna klusterresursen.

För att få åtkomst till klustret måste du konfigurera klustret att ansluta kubeconfig. När du har loggat in på Azure CLI med relevant Microsoft Entra-entitet kan du få de kubeconfig nödvändiga för att kommunicera med klustret var som helst, även utanför brandväggen som omger det.

  1. Ange CLUSTER_NAMEoch RESOURCE_GROUPSUBSCRIPTION_ID variabler.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Fråga hanterad resursgrupp med az och lagra i 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. Följande kommando startar en connectedk8s-proxy som gör att du kan ansluta till Kubernetes API-servern för det angivna Nexus Kubernetes-klustret.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Använd kubectl för att skicka begäranden till klustret:

    kubectl get pods -A
    

    Nu bör du se ett svar från klustret som innehåller listan över alla noder.

Kommentar

Om du ser felmeddelandet "Det gick inte att publicera åtkomsttoken till klientproxyFailed för att ansluta till MSI" kan du behöva utföra en az login för att autentisera igen med Azure.

Åtkomst till klusternoder via Azure Arc för Kubernetes

När du är ansluten till ett kluster via Arc för Kubernetes kan du ansluta till en enskild Kubernetes-nod med kommandot kubectl debug för att köra en privilegierad container på noden.

  1. Visa en lista över noderna i Nexus Kubernetes-klustret:

    $> 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. Starta en privilegierad container på noden och anslut till den:

    $> 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 [ / ]#
    

    Den här privilegierade containern ger åtkomst till noden. Kör kommandon på klusternoden genom att köra chroot /host på kommandoraden.

  3. När du är klar med en felsökningspodd anger du exit kommandot för att avsluta den interaktiva gränssnittssessionen. När du har avslutat gränssnittet måste du ta bort podden:

    kubectl delete pod node-debugger-mynexusk8scluster-0b32128d-agentpool1-md-7h9t4-694gg 
    

Skapa en interaktiv gränssnittsanslutning till en nod med ip-adressen

Anslut till klusternoden från Azure Jumpbox

Ett annat alternativ för säker anslutning till en Azure Operator Nexus Kubernetes-klusternod är att konfigurera en direkt åtkomst till klustrets CNI-nätverk från en virtuell Azure-jumpbox-dator. Med den här metoden kan du SSH till klusternoderna, även köra kubectl kommandon mot klustret med hjälp av kubeconfig filen.

Kontakta nätverksadministratören för att konfigurera en direktanslutning från en virtuell Azure-jumpbox-dator till klustrets CNI-nätverk.

Anslut till klusternoden från den lokala jumpboxen

Upprätta direkt åtkomst till klustrets CNI (Container Network Interface) inifrån din lokala jumpbox. Med den här direktåtkomsten kan du SSH till klusternoderna och köra kubectl kommandon med hjälp av kubeconfig filen.

Kontakta nätverksadministratören för att konfigurera den här direktanslutningen till klustrets CNI-nätverk.

IP-adressen för klusternoderna

Innan du kan ansluta till klusternoderna måste du hitta nodernas IP-adress. IP-adressen för noderna finns i Azure-portalen eller Azure CLI.

Använda Azure CLI

  1. Ange variablerna RESOURCE_GROUP, CLUSTER_NAME och SUBSCRIPTION_ID så att de matchar din miljö.

    RESOURCE_GROUP="myResourceGroup"
    CLUSTER_NAME="myNexusK8sCluster"
    SUBSCRIPTION_ID="<Subscription ID>"
    
  2. Kör följande kommando för att hämta IP-adressen för noderna.

    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. Här är exempelutdata för kommandot.

    {
      "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"
    }
    

Använda Azure Portal

Följ dessa steg för att hitta IP-adressen för den virtuella datorn för SSH:

  1. Gå till Azure-portalen och logga in med ditt användarnamn och lösenord.
  2. Skriv "Kubernetes Cluster (Operator Nexus)" i sökrutan och välj tjänsten Kubernetes Cluster i listan med resultat.

Skärmbild av hur du bläddrar i Nexus Kubernetes-tjänsten.

  1. Leta efter den specifika Nexus Kubernetes-klusterresursen som du behöver för att använda sökningen.

Skärmbild av att bläddra i Nexus Kubernetes-kluster.

  1. När du har hittat rätt resurs genom att matcha dess namn med klusternamnet väljer du resursen för att gå till startsidan för Kubernetes-klustret.

Skärmbild av startsidan för Nexus Kubernetes-klustret.

  1. När du har hittat rätt resurs genom att matcha dess namn med klusternamnet går du till avsnittet Kubernetes-klusternoder på den vänstra menyn.

Skärmbild av hur du bläddrar i Nexus Kubernetes-klusternoder.

  1. Välj det Kubernetes-nodnamn som du är intresserad av för att se dess information.
  2. Kontrollera fliken Anslutna nätverk för att hitta IP-adressen för nodens Layer 3-nätverk som används som CNI-nätverk.

Skärmbild av hur du bläddrar i Nexus Kubernetes-klusternodnätverk.

Nästa steg

Prova följande artiklar om du vill veta mer om Azure Operator Nexus Kubernetes-kluster.