Udostępnij za pośrednictwem


Połączenie do klastra Kubernetes z operatorem platformy Azure Nexus

W całym cyklu życia klastra Kubernetes platformy Azure Operator Nexus należy ostatecznie uzyskać bezpośredni dostęp do węzła klastra. Ten dostęp może być przeznaczony dla operacji konserwacji, zbierania dzienników lub rozwiązywania problemów. Dostęp do węzła jest uzyskiwany za pośrednictwem uwierzytelniania, które metody różnią się w zależności od metody połączenia. Bezpieczne uwierzytelnianie w węzłach klastra za pomocą dwóch opcji omówionych w tym artykule. Ze względów bezpieczeństwa węzły klastra nie są uwidocznione w Internecie. Zamiast tego, aby połączyć się bezpośrednio z węzłami klastra, musisz użyć adresu kubectl debug IP hosta lub adresu IP hosta z serwera przesiadkowego.

Wymagania wstępne

  • Klaster Kubernetes Operatora platformy Azure wdrożony w grupie zasobów w ramach subskrypcji platformy Azure.
  • Klucz prywatny SSH dla węzłów klastra.
  • Aby utworzyć protokół SSH przy użyciu adresu IP węzła, należy wdrożyć maszynę wirtualną przesiadkową w tej samej sieci interfejsu sieciowego kontenera (CNI) co węzły klastra.

Dostęp do węzłów klastra za pośrednictwem usługi Azure Arc dla serwerów

Polecenie az ssh arc umożliwia użytkownikom zdalny dostęp do maszyny wirtualnej klastra, która została połączona z usługą Azure Arc. Ta metoda to bezpieczny sposób na połączenie SSH z węzłem klastra bezpośrednio z wiersza polecenia, dzięki czemu jest to szybka i wydajna metoda zdalnego zarządzania.

Uwaga

Węzły klastra Operator Nexus Kubernetes są domyślnie serwerami połączonymi z usługą Arc.

  1. Ustaw wymagane zmienne. Zastąp symbole zastępcze rzeczywistymi wartościami odpowiednimi dla środowiska platformy Azure i klastra 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. Pobierz dostępne nazwy węzłów klastra.

    az networkcloud kubernetescluster show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID -o json | jq '.nodes[].name'
    
  3. Przykładowe dane wyjściowe:

    "mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
    "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs"
    "mynexusk8scluster-0b32128d-control-plane-qq5jm"
    
  4. Ustaw nazwę węzła klastra na zmienną VM_NAME.

    VM_NAME="mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
    
  5. Uruchom następujące polecenie, aby połączyć się z protokołem SSH w węźle klastra.

    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
    

Uzyskiwanie dostępu do węzłów przy użyciu interfejsu API platformy Kubernetes

Ta metoda wymaga użycia kubectl debug polecenia. Ta metoda jest ograniczona do kontenerów i może przegapić szersze problemy z systemem, w przeciwieństwie do protokołu SSH (przy użyciu polecenia "az ssh arc" lub bezpośredniego adresu IP), który oferuje pełny dostęp do węzła i kontrolę.

Dostęp do interfejsu API platformy Kubernetes za pośrednictwem usługi Azure Arc dla platformy Kubernetes

Uwaga

Podczas tworzenia klastra Nexus Kubernetes nexus automatycznie tworzy zarządzaną grupę zasobów przeznaczoną do przechowywania zasobów klastra w ramach tej grupy zostanie ustanowiony zasób klastra połączonego z usługą Arc.

Aby uzyskać dostęp do klastra, należy skonfigurować klaster connect kubeconfig. Po zalogowaniu się do interfejsu wiersza polecenia platformy Azure przy użyciu odpowiedniej jednostki Firmy Microsoft Entra możesz uzyskać kubeconfig niezbędne do komunikowania się z klastrem z dowolnego miejsca, nawet poza zaporą, która go otacza.

  1. Ustaw CLUSTER_NAMEzmienne i SUBSCRIPTION_ID RESOURCE_GROUP .

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Wykonywanie zapytań względem zarządzanej grupy zasobów za pomocą az polecenia i przechowywania w usłudze 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. Następujące polecenie uruchamia serwer proxy connectedk8s, który umożliwia nawiązanie połączenia z serwerem interfejsu API Kubernetes dla określonego klastra Nexus Kubernetes.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Użyj kubectl polecenia , aby wysyłać żądania do klastra:

    kubectl get pods -A
    

    Powinna zostać wyświetlona odpowiedź z klastra zawierającego listę wszystkich węzłów.

Uwaga

Jeśli zostanie wyświetlony komunikat o błędzie "Nie można opublikować tokenu dostępu do serwera proxy klientaFailed w celu nawiązania połączenia z tożsamością usługi zarządzanej", może być konieczne wykonanie polecenia az login w celu ponownego uwierzytelnienia na platformie Azure.

Dostęp do węzłów klastra za pośrednictwem usługi Azure Arc dla platformy Kubernetes

Po nawiązaniu połączenia z klastrem za pośrednictwem usługi Arc dla platformy Kubernetes możesz nawiązać połączenie z pojedynczym węzłem Kubernetes przy użyciu kubectl debug polecenia , aby uruchomić uprzywilejowany kontener w węźle.

  1. Wyświetl listę węzłów w klastrze Nexus Kubernetes:

    $> 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. Uruchom uprzywilejowany kontener w węźle i połącz się z nim:

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

    Ten uprzywilejowany kontener zapewnia dostęp do węzła. Wykonaj polecenia w węźle klastra, uruchamiając polecenie chroot /host w wierszu polecenia.

  3. Po zakończeniu pracy z zasobnikiem debugowania wprowadź exit polecenie , aby zakończyć sesję interakcyjnej powłoki. Po zamknięciu powłoki upewnij się, że usunięto zasobnik:

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

Tworzenie interaktywnego połączenia powłoki z węzłem przy użyciu adresu IP

Połączenie do węzła klastra z serwera przesiadkowego platformy Azure

Kolejną opcją bezpiecznego nawiązywania połączenia z węzłem klastra Kubernetes operatora platformy Azure jest skonfigurowanie bezpośredniego dostępu do sieci CNI klastra z maszyny wirtualnej serwera przesiadkowego platformy Azure. Korzystając z tego podejścia, można połączyć się z węzłami klastra za pomocą protokołu SSH, a także wykonywać kubectl polecenia względem klastra kubeconfig przy użyciu pliku .

Skontaktuj się z administratorem sieci, aby skonfigurować bezpośrednie połączenie z maszyny wirtualnej serwera przesiadkowego platformy Azure do sieci CNI klastra.

Połączenie do węzła klastra z lokalnego serwera przesiadkowego

Ustanów bezpośredni dostęp do sieci CNI klastra (interfejs sieciowy kontenera) z poziomu lokalnego serwera przesiadkowego. Ten bezpośredni dostęp umożliwia połączenie SSH z węzłami klastra i umożliwia wykonywanie kubectl poleceń przy użyciu kubeconfig pliku.

Skontaktuj się z administratorem sieci, aby skonfigurować to bezpośrednie połączenie z siecią CNI klastra.

Adres IP węzłów klastra

Przed nawiązaniem połączenia z węzłami klastra należy znaleźć adres IP węzłów. Adres IP węzłów można znaleźć przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.

Korzystanie z interfejsu wiersza polecenia platformy Azure

  1. Ustaw zmienne RESOURCE_GROUP, CLUSTER_NAME i SUBSCRIPTION_ID, aby pasować do środowiska.

    RESOURCE_GROUP="myResourceGroup"
    CLUSTER_NAME="myNexusK8sCluster"
    SUBSCRIPTION_ID="<Subscription ID>"
    
  2. Wykonaj następujące polecenie, aby uzyskać adres IP węzłów.

    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. Oto przykładowe dane wyjściowe polecenia.

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

Korzystanie z witryny Azure Portal

Aby znaleźć adres IP maszyny wirtualnej dla protokołu SSH, wykonaj następujące kroki:

  1. Przejdź do witryny Azure Portal i zaloguj się przy użyciu nazwy użytkownika i hasła.
  2. Wpisz "Klaster Kubernetes (Operator Nexus)" w polu wyszukiwania i wybierz usługę "Klaster Kubernetes" z listy wyników.

Zrzut ekranu przedstawiający przeglądanie usługi Nexus Kubernetes.

  1. Wyszukaj konkretny zasób "Klaster Kubernetes Nexus", którego potrzebujesz, aby użyć wyszukiwania.

Zrzut ekranu przedstawiający przeglądanie klastra Nexus Kubernetes.

  1. Po znalezieniu odpowiedniego zasobu, pasując do jego nazwy z nazwą klastra, wybierz zasób, aby przejść do strony głównej "Klaster Kubernetes".

Zrzut ekranu przedstawiający stronę główną klastra Nexus Kubernetes.

  1. Po znalezieniu odpowiedniego zasobu, pasując do jego nazwy z nazwą klastra, przejdź do sekcji "Węzły klastra Kubernetes" w menu po lewej stronie.

Zrzut ekranu przedstawiający przeglądanie węzłów klastra Nexus Kubernetes.

  1. Wybierz nazwę węzła Kubernetes, którą chcesz wyświetlić, aby wyświetlić jego szczegóły.
  2. Sprawdź kartę "Dołączone sieci", aby znaleźć adres IP węzła "Sieć warstwy 3", który był używany jako sieć CNI.

Zrzut ekranu przedstawiający przeglądanie sieci węzłów klastra Nexus Kubernetes.

Następne kroki

Wypróbuj następujące artykuły, aby dowiedzieć się więcej na temat klastra Kubernetes platformy Azure Operator Nexus.