Csatlakozás az Azure Kubernetes Service- (AKS-) fürtcsomópontokhoz karbantartás és hibaelhárítás céljából
Az Azure Kubernetes Service-fürt (AKS) teljes életciklusa során végül közvetlenül hozzá kell férnie egy AKS-csomóponthoz. Ez a hozzáférés karbantartási, naplógyűjtési vagy hibaelhárítási műveletekhez is használható.
A csomópontot hitelesítéssel érheti el, mely módszerek a csomópont operációs rendszerétől és a kapcsolat módjától függően változnak. A jelen cikkben ismertetett két lehetőséggel biztonságosan hitelesítheti magát AKS Linux és Windows rendszerű csomópontokon. Az egyik megköveteli, hogy Kubernetes API-hozzáféréssel rendelkezzen, a másik pedig az AKS ARM API-val, amely közvetlen privát IP-információkat biztosít. Biztonsági okokból az AKS-csomópontok nem jelennek meg az interneten. Ehelyett az AKS-csomópontokhoz való közvetlen csatlakozáshoz vagy a gazdagép magánhálózati IP-címét kell használnia kubectl debug
.
Csomópontok elérése a Kubernetes API használatával
Ehhez a metódushoz parancs használata kubectl debug
szükséges.
Mielőtt elkezdené
Ez az útmutató bemutatja, hogyan hozhat létre kapcsolatot egy AKS-csomóponttal, és hogyan frissítheti az AKS-fürt SSH-kulcsát. A lépések követéséhez a 2.0.64-es vagy újabb verziót támogató Azure CLI-t kell használnia. Futtassa az --version
a verzió ellenőrzését. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.
Ha nem rendelkezik SSH-kulccsal, hajtsa végre ezeket a lépéseket. Hozzon létre egy SSH-kulcsot a csomópont operációs rendszer lemezképétől függően macOS és Linux vagy Windows rendszeren. Ügyeljen arra, hogy a kulcspárt OpenSSH formátumban mentse, kerülje a nem támogatott formátumokat, például .ppk
. Ezután tekintse meg az SSH-konfiguráció kezelését a kulcs fürthöz való hozzáadásához.
Linux és macOS
A Linux- és macOS-felhasználók a saját IP-címükkel vagy a saját IP-címükkel férhetnek hozzá a csomópontjukhoz kubectl debug
. A Windows-felhasználóknak át kell ugornia a Windows Server proxy szakaszára, hogy áthidaló megoldást találjanak az SSH-ra proxyn keresztül.
Csatlakozás kubectl hibakereséssel
Interaktív rendszerhéj-kapcsolat létrehozásához használja a kubectl debug
parancsot egy emelt szintű tároló futtatásához a csomóponton.
A csomópontok listázásához használja a
kubectl get nodes
következő parancsot:kubectl get nodes -o wide
Példa a kimenetre:
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 Datacenter
kubectl debug
A parancs használatával elindíthat egy emelt szintű tárolót a csomóponton, és csatlakozhat hozzá.kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/cbl-mariner/busybox:2.0
Példa a kimenetre:
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:/#
Mostantól hibakeresési podként egy emelt szintű tárolón keresztül férhet hozzá a csomóponthoz.
Feljegyzés
A csomópont munkamenetét a kiemelt tárolóból futtatva
chroot /host
kezelheti.
Kilépés a kubectl hibakeresési módjából
Ha végzett a csomóponttal, írja be a parancsot az exit
interaktív rendszerhéj-munkamenet befejezéséhez. Az interaktív tároló munkamenetének bezárása után törölje a használt hibakereső podot kubectl delete pod
.
kubectl delete pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx
Windows Server proxykapcsolat SSH-hoz
Az alábbi lépéseket kerülő megoldásként követve csatlakozhat az SSH-hoz egy Windows Server-csomóponton.
Proxykiszolgáló létrehozása
Jelenleg nem tud közvetlenül csatlakozni egy Windows Server-csomóponthoz a használatával kubectl debug
. Ehelyett először egy másik fürtcsomóponthoz kubectl
kell csatlakoznia, majd az SSH használatával csatlakoznia kell a Windows Server-csomóponthoz.
A fürt egy másik csomóponthoz való csatlakozáshoz használja a kubectl debug
parancsot. További információkért kövesse a kubectl szakasz fenti lépéseit. Hozzon létre egy SSH-kapcsolatot a Windows Server-csomóponttal egy másik csomópontról az AKS-fürt létrehozásakor megadott SSH-kulcsokkal és a Windows Server-csomópont belső IP-címével.
Fontos
A Windows Server-csomóponttal létesített SSH-kapcsolat egy másik csomópontról történő létrehozásához az alábbi lépések csak akkor használhatók, ha az AKS-fürtöt az Azure CLI-vel hozta létre a --generate-ssh-keys
paraméterrel. Ha ehelyett saját SSH-kulcsokat szeretne használni, az az aks update
SSH-kulcsok kezelése meglévő AKS-fürtön. További információ: SSH-csomópont-hozzáférés kezelése.
Feljegyzés
Ha a Linux-proxycsomópont leállt vagy nem válaszol, az Azure Bastion metódussal csatlakozhat.
kubectl debug
A paranccsal elindíthat egy emelt szintű tárolót a proxy (Linux) csomóponton, és csatlakozhat hozzá.kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/cbl-mariner/busybox:2.0
Példa a kimenetre:
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:/#
Nyisson meg egy új terminálablakot, és a
kubectl get pods
parancs használatával kérje le a podkubectl debug
nevét.kubectl get pods
Példa a kimenetre:
NAME READY STATUS RESTARTS AGE node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 1/1 Running 0 21s
A mintakimenetben a node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx a pod által
kubectl debug
indított pod neve.kubectl port-forward
A paranccsal nyisson meg egy kapcsolatot az üzembe helyezett podhoz:kubectl port-forward node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 2022:22
Példa a kimenetre:
Forwarding from 127.0.0.1:2022 -> 22 Forwarding from [::1]:2022 -> 22
Az előző példa elkezdi továbbítani a hálózati forgalmat a fejlesztői számítógép portjáról
2022
az üzembe helyezett pod portjára22
.kubectl port-forward
Kapcsolat megnyitása és hálózati forgalom továbbítása esetén a kapcsolat nyitva marad, amíg le nem állítja akubectl port-forward
parancsot.Nyisson meg egy új terminált, és futtassa a parancsot
kubectl get nodes
a Windows Server-csomópont belső IP-címének megjelenítéséhez:kubectl get no -o custom-columns=NAME:metadata.name,'INTERNAL_IP:status.addresses[?(@.type == \"InternalIP\")].address'
Példa a kimenetre:
NAME INTERNAL_IP aks-nodepool1-19409214-vmss000003 10.224.0.8
Az előző példában a 10.224.0.62 a Windows Server-csomópont belső IP-címe.
Hozzon létre egy SSH-kapcsolatot a Windows Server-csomóponthoz a belső IP-címmel, és csatlakozzon a porthoz
22
a fejlesztői számítógépen lévő porton2022
keresztül. Az AKS-csomópontok alapértelmezett felhasználóneve az Azureuser. Fogadja el a kérést a kapcsolat folytatásához. Ekkor megjelenik a Windows Server-csomópont bash-üzenete:ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.224.0.62
Példa a kimenetre:
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)? yes
Feljegyzés
Ha inkább jelszóhitelesítést szeretne használni, adja meg a paramétert
-o PreferredAuthentications=password
. Példa:ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' -o PreferredAuthentications=password azureuser@10.224.0.62
A Gazdagépfolyamat-tároló használata a Windows-csomópont eléréséhez
Hozzon létre
hostprocess.yaml
a következő tartalommal, és cserélje leAKSWINDOWSNODENAME
az AKS Windows-csomópont nevére.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/servercore:ltsc2022 # Use servercore: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: Exists
Futtassa
kubectl apply -f hostprocess.yaml
a Windows-gazdagépfolyamat-tároló (HPC) üzembe helyezését a megadott Windows-csomóponton.Használja az
kubectl exec -it [HPC-POD-NAME] -- powershell
parancsot.A Windows-csomópont eléréséhez bármilyen PowerShell-parancsot futtathat a HPC-tárolóban.
Feljegyzés
A windowsos csomópont fájljainak eléréséhez a gyökérmappát C:\
a HPC-tárolón belülre kell váltania.
SSH a Windowshoz készült Azure Bastion használatával
Ha a Linux-proxycsomópont nem érhető el, az Azure Bastion proxyként való használata alternatív megoldás. Ehhez a módszerhez be kell állítania egy Azure Bastion-gazdagépet ahhoz a virtuális hálózathoz, amelyben a fürt található. További részletekért lásd: Csatlakozás az Azure Bastionhoz .
SSH privát IP-címek használatával az AKS API-ból (előzetes verzió)
Ha nem rendelkezik hozzáféréssel a Kubernetes API-hoz, az AKS-csomópontokhoz való csatlakozáshoz hozzáférést kaphat olyan tulajdonságokhoz, mint Node IP
az AKS-ügynökkészlet API (előzetes verzió) és Node Name
azon keresztül (előzetes verzióban 07-02-2023
elérhető).
Fontos
Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióit részben az ügyfélszolgálat fedezi a legjobb munkamennyiség alapján. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:
Interaktív rendszerhéj-kapcsolat létrehozása egy csomóponthoz az IP-cím használatával
A kényelem érdekében az AKS-csomópontok privát IP-címeken keresztül érhetők el a fürt virtuális hálózatán. Azonban a fürt virtuális hálózatában kell lennie ahhoz, hogy az SSH-t a csomópontba lehessen helyezni. Ha még nincs konfigurálva környezet, az Azure Bastion használatával létrehozhat egy proxyt, amelyből SSH-t használhat a fürtcsomópontokhoz. Győződjön meg arról, hogy az Azure Bastion ugyanabban a virtuális hálózaton van üzembe helyezve, mint a fürt.
Szerezze be a privát IP-címeket a
az aks machine list
paranccsal, és egy adott csomópontkészlet összes virtuális gépét megcélozza a--nodepool-name
jelölővel.az aks machine list --resource-group myResourceGroup --cluster-name myAKSCluster --nodepool-name nodepool1 -o table
Az alábbi példakimenet a csomópontkészlet összes csomópontjának belső IP-címét mutatja be:
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 IPv4
A csomópontkészleten belüli adott csomópont megcélzásához használja a következő jelölőt
--machine-name
:az aks machine show --cluster-name myAKScluster --nodepool-name nodepool1 -g myResourceGroup --machine-name aks-nodepool1-33555069-vmss000000 -o table
Az alábbi példakimenet az összes megadott csomópont belső IP-címét mutatja be:
Name Ip Family --------------------------------- ----------- ----------- aks-nodepool1-33555069-vmss000000 10.224.0.5 IPv4
SSH a csomóponthoz az előző lépésben beszerzett privát IP-cím használatával. Ez a lépés csak Linux rendszerű gépekre alkalmazható. Windows rendszerű gépek esetén lásd: Csatlakozás az Azure Bastionhoz.
ssh -i /path/to/private_key.pem azureuser@10.224.0.33
Következő lépések
Ha további hibaelhárítási adatokra van szüksége, megtekintheti a Kubelet-naplókat, vagy megtekintheti a Kubernetes vezérlősíkjának naplóit.
Az SSH-kulcsok kezeléséről az SSH-konfiguráció kezelése című témakörben olvashat.
Azure Kubernetes Service