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.
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)
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'
Przykładowe dane wyjściowe:
"mynexusk8scluster-0b32128d-agentpool1-md-7h9t4" "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs" "mynexusk8scluster-0b32128d-control-plane-qq5jm"
Ustaw nazwę węzła klastra na zmienną VM_NAME.
VM_NAME="mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
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.
Ustaw
CLUSTER_NAME
zmienne iSUBSCRIPTION_ID
RESOURCE_GROUP
.CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
Wykonywanie zapytań względem zarządzanej grupy zasobów za pomocą
az
polecenia i przechowywania w usłudzeMANAGED_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)
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 &
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.
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
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.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
Ustaw zmienne RESOURCE_GROUP, CLUSTER_NAME i SUBSCRIPTION_ID, aby pasować do środowiska.
RESOURCE_GROUP="myResourceGroup" CLUSTER_NAME="myNexusK8sCluster" SUBSCRIPTION_ID="<Subscription ID>"
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)}'
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:
- Przejdź do witryny Azure Portal i zaloguj się przy użyciu nazwy użytkownika i hasła.
- Wpisz "Klaster Kubernetes (Operator Nexus)" w polu wyszukiwania i wybierz usługę "Klaster Kubernetes" z listy wyników.
- Wyszukaj konkretny zasób "Klaster Kubernetes Nexus", którego potrzebujesz, aby użyć wyszukiwania.
- Po znalezieniu odpowiedniego zasobu, pasując do jego nazwy z nazwą klastra, wybierz zasób, aby przejść do strony głównej "Klaster Kubernetes".
- 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.
- Wybierz nazwę węzła Kubernetes, którą chcesz wyświetlić, aby wyświetlić jego szczegóły.
- Sprawdź kartę "Dołączone sieci", aby znaleźć adres IP węzła "Sieć warstwy 3", który był używany jako sieć CNI.
Następne kroki
Wypróbuj następujące artykuły, aby dowiedzieć się więcej na temat klastra Kubernetes platformy Azure Operator Nexus.