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 SSH-val férhetnek hozzá a csomópontjukhoz kubectl debug a saját IP-címükkel vagy a saját IP-címükkel. 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.

SSH 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.

  1. 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
    
  2. 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 kubectlkell 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.

  1. 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:/#
    
  2. Nyisson meg egy új terminálablakot, és a kubectl get pods parancs használatával kérje le a pod kubectl debugnevé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 debugindított pod neve.

  3. 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ára 22 . 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 a kubectl port-forward parancsot.

  4. 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.

  5. 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ő porton 2022 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

  1. Hozzon létre hostprocess.yaml a következő tartalommal, és cserélje le AKSWINDOWSNODENAME 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
    
  2. Futtassa kubectl apply -f hostprocess.yaml a Windows-gazdagépfolyamat-tároló (HPC) üzembe helyezését a megadott Windows-csomóponton.

  3. Használja az kubectl exec -it [HPC-POD-NAME] -- powershell parancsot.

  4. 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 tekintse meg az Azure Bastion Csatlakozás.

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.

  1. 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
    
  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 rendszerű gépekre alkalmazható. Windows rendszerű gépek esetén lásd az Azure Bastion Csatlakozás.

    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.