Aracılığıyla paylaş


Bakım veya sorun giderme için Azure Kubernetes Service (AKS) küme düğümlerine bağlanma

Azure Kubernetes Service (AKS) kümenizin yaşam döngüsü boyunca bir AKS düğümüne doğrudan erişmeniz gerekir. Bu erişim bakım, günlük toplama veya sorun giderme işlemleri için olabilir.

Bu makalede AKS Linux ve Windows düğümlerine karşı güvenli bağlantı için iki seçenek açıklanmaktadır. Bunlardan biri Kubernetes API erişimine sahip olmanız, diğeri ise doğrudan özel IP bilgileri sağlayan AKS ARM API'sini kullanmanız gerekir. Güvenlik nedeniyle AKS düğümleri İnternet'e sunulmaz. Bunun yerine, herhangi bir AKS düğümüne doğrudan bağlanmak için ya bir ara birim kullanmanız ya da konağın özel IP adresini kullanmanız gerekir.

Kubernetes API'siyle düğümlere erişme

Bu yöntem komutu gerektirir .

Başlamadan önce

Bu kılavuzda AKS düğümüne bağlantı oluşturma ve AKS kümenizin SSH anahtarını güncelleştirme adımları gösterilmektedir. Bu adımları izlemek için Azure CLI sürüm 2.0.64 veya üzeri gerekir. Sürümü denetlemek için komutunu çalıştırın . Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI yükleme.

SSH anahtarınız yoksa bu adımları tamamlayın. macOS ve Linux veya Windows için düğüm işletim sistemi görüntünüze bağlı olarak bir SSH anahtarı oluşturun. Anahtar çiftini OpenSSH biçiminde kaydedin ve gibi desteklenmeyen biçimlerden kaçının. Ardından, anahtarı kümenize eklemek için SSH yapılandırmasını yönetme bölümüne bakın.

Linux ve macOS

Linux ve macOS kullanıcıları, düğümlerine veya özel IP adreslerini kullanarak erişebilir. Windows kullanıcıların ara sunucu aracılığıyla SSH'ye geçici bir çözüm için Windows Server ara sunucu bölümüne atlamaları gerekir.

kubectl debug ile bağlan

Etkileşimli kabuk bağlantısı oluşturmak için komutunu kullanarak düğümünüzde ayrıcalıklı bir kapsayıcı çalıştırın.

  1. Düğümlerinizi listelemek için şu komutu kullanın:

    kubectl get nodes -o wide
    

    Örnek çıkış:

    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. Komutunu kullanarak düğümünüzde ayrıcalıklı bir kapsayıcı başlatın ve bu kapsayıcıya bağlanın.

    kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/azurelinux/busybox:1.36
    

    Örnek çıkış:

    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:/#
    

    Artık hata ayıklama podu olarak ayrıcalıklı bir kapsayıcı üzerinden düğüme erişebilirsiniz.

    Not

    Ayrıcalıklı kapsayıcıdan komutunu çalıştırarak düğüm oturumuyla etkileşim kurabilirsiniz.

Kubectl hata ayıklama modundan çıkma

Düğümünüzü bitirdiğinizde etkileşimli kabuk oturumunu sonlandırmak için komutu girin. Etkileşimli kapsayıcı oturumu kapandıktan sonra kullanılan hata ayıklama podunu silin.

kubectl delete pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx

Windows Server için SSH ara sunucu bağlantısı

bir Windows Server düğümünde SSH ile bağlanmak için geçici bir çözüm olarak bu adımları izleyin.

Ara sunucu oluşturma

Şu anda kubectl debug kullanarak bir Windows Server düğümüne doğrudan bağlanamazsınız. Bunun yerine, önce kubectl ile kümedeki başka bir düğüme bağlanmanız ve ardından SSH kullanarak bu düğümden Windows Server düğümüne bağlanmanız gerekir.

Kümedeki başka bir düğüme bağlanmak için komutunu kullanın . Daha fazla bilgi için kubectl bölümündeki önceki adımları izleyin. AKS kümesini oluştururken sağlanan SSH anahtarlarını ve Windows Server düğümünün iç IP adresini kullanarak başka bir düğümden Windows Server düğümüne bir SSH bağlantısı oluşturun.

Önemli

Başka bir düğümden Windows Server düğümüne SSH bağlantısı oluşturmak için aşağıdaki adımlar yalnızca aks kümenizi --generate-ssh-keys parametresiyle Azure CLI kullanarak oluşturduysanız kullanılabilir. Bunun yerine kendi SSH anahtarlarınızı kullanmak istiyorsanız, mevcut bir AKS kümesindeki SSH anahtarlarını yönetmek için komutunu kullanabilirsiniz . Daha fazla bilgi için bkz . SSH düğümü erişimini yönetme.

Not

Linux proxy düğümünüz çalışmıyorsa veya yanıt vermiyorsa bunun yerine bağlanmak için Azure Bastion yöntemini kullanın.

  1. Proxy düğümünüzde (Linux) ayrıcalıklı bir kapsayıcı başlatmak ve bu kapsayıcıya bağlanmak için komutu kullanın.

    kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/azurelinux/busybox:1.36
    

    Örnek çıkış:

    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. Yeni bir terminal penceresi açın ve tarafından başlatılan podun adını almak için komutunu kullanın.

    kubectl get pods
    

    Örnek çıkış:

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

    Örnek çıktıda, , tarafından başlatılan podun adıdır.

  3. Dağıtılan pod'a bağlantı kurmak için [komut adı] komutunu kullanın.

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

    Örnek çıkış:

    Forwarding from 127.0.0.1:2022 -> 22
    Forwarding from [::1]:2022 -> 22
    

    Önceki örnek, dağıtım bilgisayarınızdaki bağlantı noktasından dağıtılan pod üzerindeki bağlantı noktasına ağ trafiğini iletmeye başlar. Bağlantı açmak ve ağ trafiğini iletmek için kullanırken , siz komutu durdurana kadar bağlantı açık kalır.

  4. Yeni bir terminal açın ve Windows Server düğümünün iç IP adresini göstermek için kubectl get nodes komutunu çalıştırın:

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

    Örnek çıkış:

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

    Önceki örnekte 10.224.0.62, Windows Server düğümünün iç IP adresidir.

  5. İç IP adresini kullanarak Windows Server düğümüne bir SSH bağlantısı oluşturun ve geliştirme bilgisayarınızdaki 22 bağlantı noktası üzerinden 2022 bağlantı noktasına bağlanın. AKS düğümleri için varsayılan kullanıcı adı azureuser'dır. Bağlantıyla devam etmek için istemi kabul edin. Ardından, Windows Server düğümünüzün bash istemi sağlanır:

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

    Örnek çıkış:

    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
    

    Not

    Parola kimlik doğrulamasını kullanmayı tercih ediyorsanız parametresini ekleyin. Örneğin:

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

Windows düğüme erişmek için ana bilgisayar işlem konteyneri kullanma

  1. Aşağıdaki betiği çalıştırarak oluşturun. Betikte AKSWINDOWSNODENAME yerine AKS Windows düğümü adını yazın.

    Bu spesifikasyon NanoServer temel görüntüsünü kullanır. Temel görüntüde PowerShell yoktur, ancak ana bilgisayar işlem kapsayıcısı (HPC) olarak çalıştığından, PowerShell temel alınan VM'de kullanılabilir.

    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. Windows HPC'yi belirtilen Windows düğümüne dağıtmak için kubectl apply -f hostprocess.yaml çalıştırın.

  3. Kullanın.

  4. Windows düğümüne erişmek için HPC kapsayıcısının içinde herhangi bir PowerShell komutu çalıştırabilirsiniz.

Not

Windows düğümündeki dosyalara erişmek için kök klasörü HPC kapsayıcısının içinde C:\ olarak değiştirmeniz gerekir.

Azure Bastion ile SSH

Linux proxy düğümünüze ulaşılamıyorsa, ara sunucu olarak Azure Bastion kullanmak bir alternatiftir. Bu yöntem, kümenin bulunduğu sanal ağ için bir Azure Bastion konağı ayarlamanızı gerektirir. Daha fazla bilgi için bkz. Azure Bastion ile bağlanma.

Kümenin sanal ağından özel IP'lerle SSH bağlantısı kurma

Kolaylık sağlamak için AKS düğümleri özel IP adresleri aracılığıyla kümenin sanal ağında kullanıma sunulur. Ancak düğüme SSH yapmak için kümenin sanal ağında olmanız gerekir.

  1. Kubernetes API'sine erişiminiz yoksa AKS düğümlerine bağlanmak için (kararlı sürümlerde veya üzeri sürümlerde kullanılabilir) aracılığıyla ve gibi özelliklere erişebilirsiniz. komutunu kullanarak, bayrağıyla belirli bir düğüm havuzundaki tüm VM'leri hedefleyen özel IP'leri alın.

    az aks machine list --resource-group myResourceGroup  --cluster-name myAKSCluster --nodepool-name nodepool1 -o table
    

    Aşağıdaki örnek çıktı, düğüm havuzundaki tüm düğümlerin iç IP adreslerini gösterir:

    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
    

    Belirli bir düğümü düğüm havuzunun içinde hedeflemek için bayrağı kullanın.

    az aks machine show --cluster-name myAKScluster --nodepool-name nodepool1 -g myResourceGroup --machine-name aks-nodepool1-33555069-vmss000000 -o table
    

    Aşağıdaki örnek çıktı, belirtilen düğümün iç IP adresini gösterir:

    Name                               Ip         Family
    ---------------------------------  -----------  -----------
    aks-nodepool1-33555069-vmss000000  10.224.0.5   IPv4
    
  2. Önceki adımda aldığınız özel IP adresini kullanarak düğüme SSH bağlantısı kurun. Bu adım yalnızca Linux düğümleri için geçerlidir.

    ssh -i /path/to/private_key.pem azureuser@10.224.0.33
    

Sonraki adımlar

Daha fazla sorun giderme verisine ihtiyacınız varsa kubelet günlüklerini görüntüleyebilir veya Kubernetes denetim düzlemi günlüklerini görüntüleyebilirsiniz.

SSH anahtarlarınızı yönetme hakkında bilgi edinmek için bkz . SSH yapılandırmasını yönetme.