Připojení pomocí SSH k uzlům clusteru Azure Kubernetes Service (AKS) kvůli údržbě nebo řešení potíží

V průběhu životního cyklu clusteru Azure Kubernetes Service (AKS) možná budete potřebovat přístup k uzlu AKS. Tento přístup může být pro účely údržby, shromažďování protokolů nebo jiných operací řešení potíží. K uzlům AKS můžete přistupovat pomocí SSH, včetně uzlů Windows Serveru. K uzlům Windows Serveru se můžete připojit také pomocí připojení RDP (Remote Desktop Protocol). Z bezpečnostních důvodů se uzly AKS nezískaly na internetu. K připojení K uzlům AKS pomocí protokolu SSH použijte kubectl debug privátní IP adresu nebo .

Tento článek ukazuje, jak vytvořit připojení SSH k uzlu AKS.

Než začnete

Tento článek předpokládá, že máte existující cluster AKS. Pokud potřebujete cluster AKS, podívejte se na rychlý start pro AKS pomocí Azure CLI nebo pomocí Azure Portal.

Tento článek také předpokládá, že máte klíč SSH. Klíč SSH můžete vytvořit pomocí macOS, Linuxu nebo Windows. Pokud k vytvoření páru klíčů použijete PuTTY Gen, uložte pár klíčů ve formátu OpenSSH místo výchozího formátu privátního klíče PuTTy (soubor .ppk).

Potřebujete také nainstalované a nakonfigurované Rozhraní příkazového řádku Azure CLI verze 2.0.64 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Vytvoření připojení SSH k uzlu Linuxu

Pokud chcete vytvořit připojení SSH k uzlu AKS, použijte ke kubectl debug spuštění privilegovaného kontejneru na uzlu. K zobrazení seznamu uzlů použijte kubectl get nodes :

$ kubectl get nodes -o wide

NAME                                STATUS   ROLES   AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION     CONTAINER-RUNTIME
aks-nodepool1-12345678-vmss000000   Ready    agent   13m     v1.19.9   10.240.0.4    <none>        Ubuntu 18.04.5 LTS               5.4.0-1046-azure   containerd://1.4.4+azure
aks-nodepool1-12345678-vmss000001   Ready    agent   13m     v1.19.9   10.240.0.35   <none>        Ubuntu 18.04.5 LTS               5.4.0-1046-azure   containerd://1.4.4+azure
aksnpwin000000                      Ready    agent   87s     v1.19.9   10.240.0.67   <none>        Windows Server 2019 Datacenter   10.0.17763.1935    docker://19.3.1

Pomocí kubectl debug spustíte image kontejneru na uzlu, abyste se k ní připojovat.

kubectl debug node/aks-nodepool1-12345678-vmss000000 -it --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11

Tento příkaz spustí na uzlu privilegovaný kontejner a připojí se k tomuto kontejneru přes SSH.

$ kubectl debug node/aks-nodepool1-12345678-vmss000000 -it --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11
Creating debugging pod node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx with container debugger on node aks-nodepool1-12345678-vmss000000.
If you don't see a command prompt, try pressing enter.
root@aks-nodepool1-12345678-vmss000000:/#

Tento privilegovaný kontejner poskytuje přístup k uzlu.

Vytvoření připojení SSH k uzlu Windows

V tuto chvíli se nemůžete připojit k uzlu Windows serveru pomocí SSH přímo pomocí nástroje kubectl debug . Místo toho se musíte nejdřív připojit k jinému uzlu v clusteru a pak se pomocí SSH připojit k uzlu Windows Server z tohoto uzlu. Alternativně se můžete k uzlům Windows serveru připojit pomocí připojení protokolu RDP (Remote Desktop Protocol) místo použití SSH.

Pokud se chcete připojit k jinému uzlu v clusteru, použijte kubectl debug . Další informace najdete v tématu vytvoření připojení SSH k uzlu Linux.

Pokud chcete vytvořit připojení SSH k uzlu Windows serveru z jiného uzlu, použijte klíče SSH, které jste zadali při vytváření clusteru AKS, a interní IP adresu uzlu Windows serveru.

Otevřete nové okno terminálu a použijte kubectl get pods k získání názvu pod startem kubectl debug .

$ kubectl get pods

NAME                                                    READY   STATUS    RESTARTS   AGE
node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx   1/1     Running   0          21s

Ve výše uvedeném příkladu Node-Debugger-AKS-nodepool1-12345678-vmss000000-bkmmx je název pod startem kubectl debug .

Zkopírujte privátní klíč SSH do části pod autorem kubectl debug . Tento privátní klíč se používá k vytvoření SSH pro uzel Windows serveru AKS. V případě potřeby změňte ~/.ssh/id_rsa umístění privátního klíče SSH:

kubectl cp ~/.ssh/id_rsa node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx:/id_rsa

Slouží kubectl get nodes k zobrazení interní IP adresy uzlu Windows Server:

$ kubectl get nodes -o wide

NAME                                STATUS   ROLES   AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION     CONTAINER-RUNTIME
aks-nodepool1-12345678-vmss000000   Ready    agent   13m     v1.19.9   10.240.0.4    <none>        Ubuntu 18.04.5 LTS               5.4.0-1046-azure   containerd://1.4.4+azure
aks-nodepool1-12345678-vmss000001   Ready    agent   13m     v1.19.9   10.240.0.35   <none>        Ubuntu 18.04.5 LTS               5.4.0-1046-azure   containerd://1.4.4+azure
aksnpwin000000                      Ready    agent   87s     v1.19.9   10.240.0.67   <none>        Windows Server 2019 Datacenter   10.0.17763.1935    docker://19.3.1

V předchozím příkladu je 10.240.0.67 interní IP adresou uzlu Windows Server.

Vraťte se do terminálu spuštěného kubectl debug a aktualizujte oprávnění privátního klíče SSH, který jste zkopírovali do pole pod.

chmod 0400 id_rsa

Vytvořte připojení SSH k uzlu Windows serveru pomocí interní IP adresy. Výchozí uživatelské jméno pro uzly AKS je azureuser. Potvrďte výzvu, aby bylo možné pokračovat v připojování. Pak budete mít k dispozici příkaz bash pro váš uzel Windows serveru:

$ ssh -i id_rsa azureuser@10.240.0.67

The authenticity of host '10.240.0.67 (10.240.0.67)' can't be established.
ECDSA key fingerprint is SHA256:1234567890abcdefghijklmnopqrstuvwxyzABCDEFG.
Are you sure you want to continue connecting (yes/no)? yes

[...]

Microsoft Windows [Version 10.0.17763.1935]
(c) 2018 Microsoft Corporation. All rights reserved.

azureuser@aksnpwin000000 C:\Users\azureuser>

Odebrat přístup přes SSH

Po dokončení exit relace SSH a pak exit interaktivní relaci kontejneru. Po zavření této relace kontejneru se odstraní pole pod použitým pro přístup SSH z clusteru AKS.

Další kroky

Pokud potřebujete další data pro řešení potíží, můžete Zobrazit protokoly kubelet nebo Zobrazit protokoly hlavního uzlu Kubernetes.