Aracılığıyla paylaş


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

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 --versiondaha ö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 podspodları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-aksvardı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.