Bakım veya sorun giderme amacıyla Azure Kubernetes Service (AKS) kümesi 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.
Bir düğüme kimlik doğrulaması aracılığıyla erişebilirsiniz. Bu yöntemler Düğüm işletim sisteminize ve bağlantı yönteminize bağlı olarak değişir. Bu makalede açıklanan iki seçenek aracılığıyla AKS Linux ve Windows düğümlerinde güvenli bir şekilde kimlik doğrulaması yaparsınız. 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 kubectl debug
konağın özel IP adresini kullanmanız gerekir.
Kubernetes API'sini kullanarak düğümlere erişme
Bu yöntem komut kullanımını kubectl debug
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. Adımları izlemek için 2.0.64 veya sonraki bir sürümü destekleyen Azure CLI kullanmanız gerekir. Sürümü denetlemek için komutunu çalıştırın az --version
. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.
SSH anahtarınız yoksa bu adımları tamamlayın. Node İşletim Sistemi Görüntünüze bağlı olarak, macOS ve Linux veya Windows için bir SSH anahtarı oluşturun. Anahtar çiftini OpenSSH biçiminde kaydettiğinizden emin olun, gibi .ppk
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 kubectl debug
erişebilir. Ara sunucu aracılığıyla SSH'ye geçici bir çözüm için Windows kullanıcıları Windows Server Proxy bölümüne atlamalıdır.
kubectl hata ayıklama kullanarak bağlanma
Etkileşimli kabuk bağlantısı oluşturmak için komutunu kullanarak kubectl debug
düğümünüzde ayrıcalıklı bir kapsayıcı çalıştırın.
Düğümlerinizi listelemek için komutunu
kubectl get nodes
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
Komutunu kullanarak
kubectl debug
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/cbl-mariner/busybox:2.0
Ö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
chroot /host
düğüm oturumuyla etkileşim kurabilirsiniz.
Kubectl hata ayıklama modundan çıkma
Düğümünüzü bitirdiğinizde etkileşimli kabuk oturumunu exit
sonlandırmak için komutunu girin. Etkileşimli kapsayıcı oturumu kapatıldıktan sonra ile kubectl delete pod
kullanılan hata ayıklama podunu silin.
kubectl delete pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx
SSH için Windows Server proxy bağlantısı
Windows Server düğümünde SSH'ye bağlanmak için geçici çözüm olarak bu adımları izleyin.
Ara sunucu oluşturma
Şu anda kullanarak kubectl debug
bir Windows Server düğümüne doğrudan bağlanamazsınız. Bunun yerine, önce ile kubectl
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 kubectl debug
. Daha fazla bilgi için kubectl bölümündeki yukarıdaki 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 AZURE CLI kullanarak AKS kümenizi parametresiyle --generate-ssh-keys
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 az aks update
. 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.
Komutunu kullanarak
kubectl debug
ara sunucu (Linux) 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/cbl-mariner/busybox:2.0
Ö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:/#
Yeni bir terminal penceresi açın ve tarafından
kubectl debug
başlatılan podun adını almak için komutunu kullanınkubectl get pods
.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 node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx tarafından
kubectl debug
başlatılan podun adıdır.Dağıtılan
kubectl port-forward
podla bağlantı açmak için 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
2022
dağıtılan pod üzerindeki bağlantı noktasına22
ağ trafiğini iletmeye başlar. Bağlantı açmak ve ağ trafiğini iletmek için kullanırkenkubectl port-forward
, siz komutu durduranakubectl port-forward
kadar bağlantı açık kalır.Yeni bir terminal açın ve Windows Server düğümünün iç IP adresini göstermek için komutunu
kubectl get nodes
çalıştırın:kubectl get no -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
Önceki örnekte 10.224.0.62 , Windows Server düğümünün iç IP adresidir.
İç IP adresini kullanarak Windows Server düğümüne bir SSH bağlantısı oluşturun ve geliştirme bilgisayarınızdaki bağlantı noktası üzerinden bağlantı noktasına
22
2022
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 istemiyle birlikte sunulur: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
-o PreferredAuthentications=password
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üğümüne erişmek için Konak İşlem Kapsayıcısı kullanma
Aşağıdaki içerikle oluşturun
hostprocess.yaml
ve yerineAKSWINDOWSNODENAME
AKS Windows düğüm adı yazın.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
Belirtilen Windows düğümünde Windows ana bilgisayar işlem kapsayıcısını (HPC) dağıtmak için komutunu çalıştırın
kubectl apply -f hostprocess.yaml
.kubectl exec -it [HPC-POD-NAME] -- powershell
adresini kullanın.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 C:\
kök klasörü HPC kapsayıcısının içine geçirmeniz gerekir.
Windows için Azure Bastion kullanarak SSH
Linux proxy düğümünüze ulaşılamıyorsa, ara sunucu olarak Azure Bastion'ı kullanmak alternatif bir seçenektir. Bu yöntem, kümenin bulunduğu sanal ağ için bir Azure Bastion konağı ayarlamanızı gerektirir. Diğer ayrıntılar için bkz . Azure Bastion ile bağlanma.
AKS API'sinden özel IP'leri kullanarak SSH (önizleme)
Kubernetes API'sine erişiminiz yoksa AKS düğümlerine bağlanmak için AKS aracı havuzu API'si (önizleme), (önizleme sürümlerinde veya üzeri sürümlerde 07-02-2023
kullanılabilir) gibi Node IP
Node Name
özelliklere erişebilirsiniz.
Önemli
AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinin ve sınırlı garantinin dışında tutulur. AKS önizlemeleri, müşteri desteği tarafından kısmen en iyi çaba temelinde ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:
IP adresini kullanarak düğüme etkileşimli kabuk bağlantısı oluşturma
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'ye kümenin sanal ağında olmanız gerekir. Henüz yapılandırılmış bir ortamınız yoksa Azure Bastion'ı kullanarak küme düğümlerine SSH yapabileceğiniz bir ara sunucu oluşturabilirsiniz. Azure Bastion'ın kümeyle aynı sanal ağda dağıtıldığından emin olun.
komutunu kullanarak, bayrağıyla
az aks machine list
belirli bir düğüm havuzundaki tüm VM'leri hedefleyen özel IP'leri--nodepool-name
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
Düğüm havuzunun içindeki belirli bir düğümü hedeflemek için bayrağını
--machine-name
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 tüm düğümün iç IP adresini gösterir:
Name Ip Family --------------------------------- ----------- ----------- aks-nodepool1-33555069-vmss000000 10.224.0.5 IPv4
Önceki adımda aldığınız özel IP adresini kullanarak düğüme SSH. Bu adım yalnızca Linux makineleri için geçerlidir. Windows makineleri için bkz . Azure Bastion ile bağlanma.
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.
Azure Kubernetes Service