Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V průběhu životního cyklu clusteru Azure Kubernetes Service (AKS) budete nakonec potřebovat přímý přístup k uzlu AKS. Tento přístup může být určený pro operace údržby, shromažďování protokolů nebo řešení potíží.
Tento článek popisuje dvě možnosti zabezpečeného připojení s uzly AKS v linuxových a windowsových uzlech. Jeden vyžaduje, abyste měli přístup k rozhraní API Kubernetes a druhý je prostřednictvím rozhraní AKS ARM API, které poskytuje přímé informace o privátníCH IP adresách. Z bezpečnostních důvodů nejsou uzly AKS přístupné z internetu. Pokud se chcete připojit přímo k jakýmkoli uzlům AKS, musíte použít buď , nebo privátní IP adresu hostitele.
Přístup k uzlům pomocí rozhraní Kubernetes API
Tato metoda vyžaduje příkaz.
Než začnete
V této příručce se dozvíte, jak vytvořit připojení k uzlu AKS a aktualizovat klíč SSH clusteru AKS. Pokud chcete postupovat podle těchto kroků, potřebujete Azure CLI verze 2.0.64 nebo novější. Spusťte ke kontrole verze. Pokud potřebujete nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI.
Pokud nemáte klíč SSH, proveďte tyto kroky. Vytvořte klíč SSH v závislosti na imagi operačního systému uzlu pro macOS a Linux nebo Windows. Uložte pár klíčů ve formátu OpenSSH a vyhněte se nepodporovaným formátům, například . Dále si přečtěte informace o správě konfigurace SSH a přidejte klíč do clusteru.
Linux a macOS
Uživatelé s Linuxem a macOS mají přístup ke svému uzlu pomocí nebo jejich privátní IP adresy. Windows by uživatelé měli přeskočit do části Windows Server proxy, kde najdete alternativní řešení pro SSH přes proxy server.
Připojte se pomocí kubectl debug
Pokud chcete vytvořit interaktivní připojení, použijte příkaz pro spuštění privilegovaného kontejneru na vašem uzlu.
Pokud chcete zobrazit seznam uzlů, použijte příkaz :
kubectl get nodes -o wideUkázkový výstup:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE aks-nodepool1-37663765-vmss000000 Ready agent 166m v1.25.6 10.224.0.33 <none> Ubuntu 22.04.2 LTS aks-nodepool1-37663765-vmss000001 Ready agent 166m v1.25.6 10.224.0.4 <none> Ubuntu 22.04.2 LTS aksnpwin000000 Ready agent 160m v1.25.6 10.224.0.62 <none> Windows Server 2022 DatacenterPomocí příkazu spusťte v uzlu privilegovaný kontejner a připojte se k němu.
kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/azurelinux/busybox:1.36Ukázkový výstup:
Creating debugging pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx with container debugger on node aks-nodepool1-37663765-vmss000000. If you don't see a command prompt, try pressing enter. root@aks-nodepool1-37663765-vmss000000:/#Teď máte přístup k uzlu prostřednictvím privilegovaného kontejneru jako podu ladění.
Poznámka
Můžete pracovat s relací uzlu spuštěním z kontejneru s oprávněními.
Ukončení režimu ladění kubectl
Až s uzlem skončíte, zadejte příkaz, kterým ukončíte interaktivní relaci shellu. Po ukončení interaktivní relace kontejneru odstraňte ladicí pod použitý s .
kubectl delete pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx
Proxy připojení pro SSH na Windows Server.
Postupujte podle těchto kroků jako alternativní řešení pro připojení pomocí SSH na Windows Server uzlu.
Vytvoření proxy serveru
V tuto chvíli se nemůžete připojit k uzlu Windows Server přímo pomocí kubectl debug. Místo toho se musíte nejprve připojit k jinému uzlu v clusteru pomocí kubectl a pak se připojit k uzlu Windows Server z daného uzlu pomocí SSH.
Pokud se chcete připojit k jinému uzlu v clusteru, použijte příkaz. Další informace najdete v předchozích krocích v části kubectl. Vytvořte připojení SSH k uzlu Windows Server z jiného uzlu pomocí klíčů SSH zadaných při vytváření clusteru AKS a interní IP adresy uzlu Windows Server.
Důležité
Následující kroky pro vytvoření připojení SSH k uzlu Windows Server z jiného uzlu je možné použít pouze v případě, že jste cluster AKS vytvořili pomocí Azure CLI s parametrem --generate-ssh-keys. Pokud chcete místo toho použít vlastní klíče SSH, můžete použít ke správě klíčů SSH v existujícím clusteru AKS. Další informace najdete v tématu správa přístupu k uzlu SSH.
Poznámka
Pokud je váš proxy uzel Linuxu nefunkční a nereaguje, použijte k připojení metodu Azure Bastion.
Pomocí příkazu spusťte privilegovaný kontejner na uzlu proxy (Linux) a připojte se k němu.
kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/azurelinux/busybox:1.36Ukázkový výstup:
Creating debugging pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx with container debugger on node aks-nodepool1-37663765-vmss000000. If you don't see a command prompt, try pressing enter. root@aks-nodepool1-37663765-vmss000000:/#Otevřete nové okno terminálu a pomocí příkazu získejte název podu spuštěného .
kubectl get podsUkázkový výstup:
NAME READY STATUS RESTARTS AGE node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 1/1 Running 0 21sV ukázkovém výstupu je název podu zahájeného .
Pomocí příkazu otevřete připojení k nasazenému podu.
kubectl port-forward node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 2022:22Ukázkový výstup:
Forwarding from 127.0.0.1:2022 -> 22 Forwarding from [::1]:2022 -> 22Předchozí příklad začíná směrovat síťový provoz z portu na vývojovém počítači na port na nasazeném podu. Při použití k otevření připojení a přesměrování síťového provozu zůstane připojení otevřené, dokud příkaz nezastavíte .
Otevřete nový terminál a spuštěním příkazu
kubectl get nodeszobrazte interní IP adresu uzlu Windows Server:kubectl get nodes -o custom-columns='NAME:metadata.name,INTERNAL_IP:status.addresses[?(@.type == "InternalIP")].address'Ukázkový výstup:
NAME INTERNAL_IP aks-nodepool1-19409214-vmss000003 10.224.0.8 aksnpwin000000 10.224.0.62V předchozím příkladu je
10.224.0.62interní IP adresou uzlu Windows Server.Pomocí interní IP adresy vytvořte připojení SSH k uzlu Windows Server a připojte se k portu
22přes port2022ve vývojovém počítači. Výchozí uživatelské jméno pro uzly AKS je azureuser. Přijměte výzvu, abyste mohli pokračovat v připojení. Pak se zobrazí výzva bash vašeho Windows Server uzlu:ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.224.0.62Ukázkový výstup:
The authenticity of host '10.224.0.62 (10.224.0.62)' can't be established. ECDSA key fingerprint is SHA256:1234567890abcdefghijklmnopqrstuvwxyzABCDEFG. Are you sure you want to continue connecting (yes/no)? yesPoznámka
Pokud raději používáte ověřování heslem, zahrňte parametr . Například:
ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' -o PreferredAuthentications=password azureuser@10.224.0.62
Použití kontejneru procesu hostitele pro přístup k uzlu Windows
Spuštěním následujícího skriptu vytvořte . Ve skriptu nahraďte
AKSWINDOWSNODENAMEnázvem uzlu Windows AKS.Tato specifikace používá základní image nanoserveru. Základní image nemá PowerShell, ale protože běží jako kontejner hostitelských procesů (HPC), powershell je k dispozici na základním virtuálním počítači.
apiVersion: v1 kind: Pod metadata: labels: pod: hpc name: hpc spec: securityContext: windowsOptions: hostProcess: true runAsUserName: "NT AUTHORITY\\SYSTEM" hostNetwork: true containers: - name: hpc image: mcr.microsoft.com/windows/nanoserver:ltsc2022 # Use nanoserver:1809 for WS2019 command: - powershell.exe - -Command - "Start-Sleep 2147483" imagePullPolicy: IfNotPresent nodeSelector: kubernetes.io/os: windows kubernetes.io/hostname: AKSWINDOWSNODENAME tolerations: - effect: NoSchedule key: node.kubernetes.io/unschedulable operator: Exists - effect: NoSchedule key: node.kubernetes.io/network-unavailable operator: Exists - effect: NoExecute key: node.kubernetes.io/unreachable operator: ExistsSpuštěním příkazu
kubectl apply -f hostprocess.yamlnasaďte Windows prostředí HPC v zadaném uzlu Windows.Použijte .
V kontejneru HPC můžete spustit libovolné příkazy PowerShellu pro přístup k Windows uzlu.
Poznámka
Pro přístup k souborům v uzlu Windows musíte přepnout kořenovou složku na C:\ uvnitř kontejneru PROSTŘEDÍ HPC.
SSH s pomocí Azure Bastion
Pokud není váš proxy uzel Linuxu dostupný, můžete použít Azure Bastion jako proxy server jako alternativu. Tato metoda vyžaduje, abyste nastavili hostitele Azure Bastion pro virtuální síť, ve které se cluster nachází. Další podrobnosti najdete v tématu Pojení pomocí Azure Bastion.
SSH s privátními IP adresami z virtuální sítě clusteru
Pro usnadnění přístupu se uzly AKS zveřejňují ve virtuální síti clusteru prostřednictvím privátních IP adres. Musíte ale být ve virtuální síti clusteru, abyste se k uzlu mohli připojit pomocí protokolu SSH.
Pokud nemáte přístup k rozhraní Kubernetes API, můžete získat přístup k vlastnostem, jako jsou a prostřednictvím API fondu agentů AKS, (dostupné ve stabilních verzích nebo vyšších) pro připojení k uzlům AKS. Získejte privátní IP adresy pomocí příkazu , zacílením na všechny virtuální počítače v konkrétním fondu uzlů pomocí příznaku .
az aks machine list --resource-group myResourceGroup --cluster-name myAKSCluster --nodepool-name nodepool1 -o tableNásledující příklad výstupu ukazuje interní IP adresy všech uzlů ve fondu uzlů:
Name Ip Family --------------------------------- ----------- ----------- aks-nodepool1-33555069-vmss000000 10.224.0.5 IPv4 aks-nodepool1-33555069-vmss000001 10.224.0.6 IPv4 aks-nodepool1-33555069-vmss000002 10.224.0.4 IPv4Pokud chcete cílit na konkrétní uzel ve fondu uzlů, použijte příznak :
az aks machine show --cluster-name myAKScluster --nodepool-name nodepool1 -g myResourceGroup --machine-name aks-nodepool1-33555069-vmss000000 -o tableNásledující příklad výstupu ukazuje interní IP adresu zadaného uzlu:
Name Ip Family --------------------------------- ----------- ----------- aks-nodepool1-33555069-vmss000000 10.224.0.5 IPv4Připojte se k uzlu přes SSH pomocí privátní IP adresy, kterou jste získali v předchozím kroku. Tento krok platí jenom pro uzly Linuxu.
ssh -i /path/to/private_key.pem azureuser@10.224.0.33
Další kroky
Pokud potřebujete další data pro řešení potíží, můžete zobrazit protokoly kubeletu nebo zobrazit protokoly řídicí roviny Kubernetes.
Další informace o správě klíčů SSH najdete v tématu Správa konfigurace SSH.