Aracılığıyla paylaş


AKS kümesindeki Linux düğümünden TCP dökümü yakalama

Bir 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ünü yakalama ve ardından yakalamayı yerel makinenize indirme işlemi açıklanır.

Önkoşullar

Not

Arka planda DaemonSet olarak çalışabilen 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ümlerde yer alan adımları kullanın.

1. Adım: Sorun giderecek düğümleri bulma

TCP dökümünü hangi düğümden çekebileceğinizi 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 veya Azure CLIkullanarak komutunu çalıştırınkubectl get nodes --output wide. 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 bir 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, komutunu çalıştırarak tcpdump --versiontcpdump aracının daha önce bir düğüme yüklendiğini doğrulayın. tcpdump yüklenmediyse aşağıdaki hata metni görüntülenir:

# tcpdump --version
bash: tcpdump: command not found

Ardından Gelişmiş Paket Aracı'nın apt-get paket işleme yardımcı programını ç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

İzleme çalışırken sorununuzu birçok kez çoğaltın. Bu eylem, sorunun TCP dökümü içinde yakalanmasını sağlar. 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ı podu 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

Üçü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.