AKS kümesindeki bir Linux düğümünden TCP dökümü yakalama
Microsoft Azure Kubernetes Service (AKS) kümesi kullanırken ağ sorunları oluşabilir. Bu sorunların araştırılmasına yardımcı olmak için, bu makalede AKS kümesindeki bir Linux düğümünden TCP dökümü yakalama ve ardından yakalama işlemini yerel makinenize indirme işlemi açıklanır.
Önkoşullar
- Kubernetes kubectl aracı. Azure CLI kullanarak kubectl yüklemek için az aks install-cli komutunu çalıştırın.
- AKS kümesi. AKS kümeniz yoksa Azure CLI kullanarak veya Azure portalı aracılığıyla bir küme oluşturun.
- Linux düğümünde yüklü tcpdump komut satırı aracı.
Not
Arka planda DaemonSet olarak çalıştırılabilir bir Helm grafiği aracılığıyla TCP yakalamayı otomatikleştirebilirsiniz. Daha fazla bilgi için TCP dökümlerini yakalamak için bu özel GitHub aracına bakın veya aşağıdaki bölümlerdeki adımları kullanın.
1. Adım: Sorun giderecek düğümleri bulma
TCP dökümünü hangi düğümden çekeceğini nasıl belirlersiniz? İlk olarak Kubernetes komut satırı istemcisi kubectl'yi kullanarak AKS kümesindeki düğümlerin listesini alırsınız. Kümeye bağlanmak için yönergeleri izleyin ve Azure portalını kubectl get nodes --output wide
veya Azure CLI'yı kullanarak komutunu çalıştırın. Aşağıdaki çıkışa benzer bir düğüm listesi görüntülenir:
$ kubectl get nodes --output wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
aks-agentpool-34796016-vmss000000 Ready agent 45h v1.20.9 10.240.1.81 <none> Ubuntu 18.04.6 LTS 5.4.0-1062-azure containerd://1.4.9+azure
aks-agentpool-34796016-vmss000002 Ready agent 45h v1.20.9 10.240.2.47 <none> Ubuntu 18.04.6 LTS 5.4.0-1062-azure containerd://1.4.9+azure
2. Adım: Linux düğümüne bağlanma
Sonraki adım, ağ izlemesini yakalamak istediğiniz AKS kümesi düğümüne bağlantı kurmaktır. Daha fazla bilgi için bkz . Linux düğümüne etkileşimli kabuk bağlantısı oluşturma.
3. Adım: Tcpdump'un yüklü olduğundan emin olun
AKS Linux düğümüne bağlantı kurduktan sonra tcpdump aracını çalıştırarak tcpdump --version
daha önce bir düğüme yüklendiğini doğrulayın. Tcpdump yüklenmemişse aşağıdaki hata metni görüntülenir:
# tcpdump --version
bash: tcpdump: command not found
Ardından Gelişmiş Paket Aracı'nın paket işleme yardımcı programı apt-get'i çalıştırarak podunuza tcpdump yükleyin:
apt-get update && apt-get install tcpdump
tcpdump yüklüyse, aşağıdaki metne benzer bir şey görünür:
# tcpdump --version
tcpdump version 4.9.3
libpcap version 1.8.1
OpenSSL 1.1.1 11 Sep 2018
4. Adım: Paket yakalama oluşturma
Dökümü yakalamak için tcpdump komutunu aşağıdaki gibi çalıştırın:
# tcpdump --snapshot-length=0 -vvv -w /capture.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Got 6
Not
Tcpdump'un filtreleme parametreleri kullanmadan çalıştırılması, özellikle uzun çalıştırmalar için Paket Yakalama (PCAP) dosyasının boyutunu önemli ölçüde artırabilir. Bu nedenle, kaynak, hedef ve bağlantı noktası gibi filtreler eklemenizi öneririz. Örneğin:
tcpdump dst 192.168.1.100
tcpdump dst host.mydomain.com
tcpdump port http or port ftp or port smtp or port imap or port pop3 or port telnet
İzleme çalışırken sorununuzu birçok kez çoğaltın. Bu eylem, sorunun TCP dökümü içinde yakalandığından emin olun. Sorunu çoğaltırken zaman damgasını not edin. İşiniz bittiğinde paket yakalamayı durdurmak için Ctrl+C tuşlarına basın:
# tcpdump -s 0 -vvv -w /capture.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C526 packets captured
526 packets received by filter
0 packets dropped by kernel
5. Adım: Yakalamayı yerel olarak aktarma
Paket yakalama işlemini tamamladıktan sonra dökümü yerel olarak kopyalayabilmeniz için yardımcı podunu tanımlayın. İkinci bir konsol açın ve aşağıda gösterildiği gibi komutunu çalıştırarak kubectl get pods
podların listesini alın.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
azure-vote-back-6c4dd64bdf-m4nk7 1/1 Running 0 3m29s
azure-vote-front-85b4df594d-jhpzw 1/1 Running 0 3m29s
node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2 1/1 Running 0 60s
Yardımcı podunun, üçüncü satırda gösterildiği gibi ön eki node-debugger-aks
vardır. Pod adını değiştirin ve aşağıdaki kubectl komutunu çalıştırın. Bu komutlar Linux düğümünüzün paket yakalamasını alır.
kubectl cp node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2:/capture.cap capture.cap
Not
Hata ayıklama podunu chroot /host
girerken komutu kullanıldıysa, kaynak dosya için önce /capture.cap
öğesini ekleyin/host
.
Üçüncü taraf bilgileri hakkında yasal uyarı
Bu makalede adı geçen üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği ile ilgili örtük veya başka türlü hiçbir garanti vermez.
Yardım için bize ulaşın
Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.