Csatlakozás az Azure Kubernetes Service (AKS) fürtcsomópontjaihoz karbantartás vagy 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ó.

Ez a cikk két lehetőséget ismertet az AKS Linux és Windows csomópontok közötti biztonságos kapcsolathoz. 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. Közvetlen csatlakozáshoz bármely AKS-csomóponthoz használja a -t vagy a gazdagép privát IP-címét.

Csomópontok elérése a Kubernetes API-val

Ehhez a metódushoz a parancs szükséges.

Mielőtt hozzákezdene

Ez az útmutató bemutatja, hogyan hozhat létre kapcsolatot egy AKS-csomóponttal, és hogyan frissítheti az AKS-fürt SSH-kulcsát. Az alábbi lépések végrehajtásához Azure CLI 2.0.64-es vagy újabb verzióra van szükség. Futtassa a verzió ellenőrzéséhez. Ha telepítenie vagy frissítenie kell, tekintse meg a Install Azure CLI című témakört.

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. Mentse a kulcspárt OpenSSH formátumban, és kerülje az olyan nem támogatott formátumokat, mint a . Ezután tekintse meg a SSH-konfiguráció kezelését a kulcs fürtbe történő hozzáadásához.

Linux és macOS

A Linux- és macOS-felhasználók a csomópontjukat saját privát IP-címükkel érhetik el. Windows felhasználóknak át kell ugornia a Windows Server proxyszakaszra, hogy áthidaló megoldást találjanak az SSH-ra proxyn keresztül.

Kapcsolódás a kubectl debug használatával

Interaktív shell-kapcsolat létrehozásához használja a parancsot egy privilégiumokkal rendelkező tároló futtatásához a csomóponton.

  1. A csomópontok listázásához használja a következő parancsot:

    kubectl get nodes -o wide
    

    A kimenet példája:

    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
    
  2. 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/azurelinux/busybox:1.36
    

    A kimenet példája:

    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.

    Megjegyzés

    A csomópont munkamenetével a futtatásával privilegizált tárolóból léphet kapcsolatba.

Kilépés a kubectl hibakeresési módjából

Ha végzett a csomóponttal, írja be a parancsot az interaktív rendszerhéj-munkamenet befejezéséhez. Az interaktív tároló munkamenetének bezárása után törölje a hibakeresésre használt podot .

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 csatlakozhat közvetlenül Windows Server csomóponthoz kubectl debug használatával. Ehelyett először egy másik csomóponthoz kell csatlakoznia a fürtben a kubectl segítségével, majd az adott csomópontból az SSH használatával kell csatlakoznia a Windows Server csomóponthoz.

A fürtben lévő másik csomóponthoz való csatlakozáshoz használja a parancsot. További információkért kövesse az előző lépéseket a kubectl szakaszban. 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 a Azure CLI a --generate-ssh-keys paraméterrel hozta létre. Ha inkább saját SSH-kulcsokat szeretne használni, a segítségével kezelheti az SSH-kulcsokat egy meglévő AKS-klaszteren. További információ: SSH-csomópont-hozzáférés kezelése.

Megjegyzés

Ha a Linux-proxycsomópont leállt vagy nem válaszol, a csatlakozáshoz használja a Azure Bastion metódust.

  1. 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/azurelinux/busybox:1.36
    

    A kimenet példája:

    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:/#
    
  2. Nyisson meg egy új terminálablakot, és a parancs használatával kérje le a pod nevét.

    kubectl get pods
    

    A kimenet példája:

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

    A mintakimenetben a pod által indított neve.

  3. A paranccsal nyisson meg egy kapcsolatot az üzembe helyezett podhoz:

    kubectl port-forward node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 2022:22
    

    A kimenet példája:

    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 az üzembe helyezett pod portjára . Kapcsolat megnyitása és hálózati forgalom továbbítása esetén a kapcsolat nyitva marad, amíg le nem állítja a parancsot.

  4. Nyisson meg egy új terminált, és futtassa a kubectl get nodes parancsot a Windows Server csomópont belső IP-címének megjelenítéséhez:

    kubectl get nodes -o custom-columns='NAME:metadata.name,INTERNAL_IP:status.addresses[?(@.type == "InternalIP")].address'
    

    A kimenet példája:

    NAME                                INTERNAL_IP
    aks-nodepool1-19409214-vmss000003   10.224.0.8
    aksnpwin000000                      10.224.0.62
    

    Az előző példában a 10.224.0.62 a Windows Server csomópont belső IP-címe.

  5. Hozzon létre egy SSH-kapcsolatot a Windows Server csomóponthoz a belső IP-címmel, és csatlakozzon a 22 porthoz a fejlesztési számítógépen található 2022 porton 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
    

    A kimenet példája:

    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
    

    Megjegyzés

    Ha inkább jelszóhitelesítést szeretne használni, adja meg a paramétert . Például:

     ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' -o PreferredAuthentications=password azureuser@10.224.0.62
    

Gazdagépfolyamat-tároló használata Windows csomópont eléréséhez

  1. A létrehozáshoz futtassa a következő szkriptet. A szkriptben cserélje le AKSWINDOWSNODENAME az AKS Windows csomópont nevére.

    Ez a specifikáció a nanokiszolgáló alaprendszerképét használja. Az alaprendszerkép nem rendelkezik PowerShell-lel, de mivel gazdafolyamat-tárolóként (HPC) fut, a PowerShell elérhető a mögöttes virtuális gépen.

    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: Exists
    
  2. Futtassa kubectl apply -f hostprocess.yaml a Windows HPC üzembe helyezéséhez a megadott Windows csomóponton.

  3. Használja a .

  4. A HPC-tárolóban bármilyen PowerShell-parancsot futtathat a Windows csomópont eléréséhez.

Megjegyzés

A gyökérmappát C:\-re kell váltania a HPC-tárolóban, hogy hozzáférjen a Windows csomópont fájljaihoz.

SSH az Azure Bastionhoz

Ha a Linux-proxycsomópont nem érhető el, a 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 Kapcsolódás az Azure Bastionhoz.

SSH privát IP-címekkel a fürt virtuális hálózatáról

Könnyebb kezelhetőség é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 SSH-n keresztül elérje a csomópontot.

  1. Ha nem fér hozzá a Kubernetes API-hoz, az AKS-csomópontokhoz való csatlakozáshoz hozzáférhet olyan tulajdonságokhoz, mint például , az AKS-ügynökkészlet API-n keresztül (amely stabil vagy újabb verziókban érhető el). Szerezze be a privát IP-címeket a paranccsal, és egy adott csomópontkészlet összes virtuális gépét megcélozza a 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 :

    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 a megadott csomópont belső IP-címét mutatja be:

    Name                               Ip         Family
    ---------------------------------  -----------  -----------
    aks-nodepool1-33555069-vmss000000  10.224.0.5   IPv4
    
  2. 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-csomópontokra vonatkozik.

    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.