Поделиться через


Запись дампа TCP с узла Windows в кластере AKS

Проблемы с сетью могут возникать при использовании кластера Microsoft Служба Azure Kubernetes (AKS). Чтобы помочь изучить эти проблемы, в этой статье объясняется, как записать дамп TCP с узла Windows в кластере AKS, а затем скачать запись на локальный компьютер.

Предварительные требования

Шаг 1. Поиск узлов для устранения неполадок

Как определить, с какого узла следует извлечь дамп TCP? Сначала вы получите список узлов в кластере AKS с помощью клиента командной строки Kubernetes kubectl. Следуйте инструкциям, чтобы подключиться к кластеру kubectl get nodes --output wide и выполнить команду с помощью портал Azure или Azure CLI. Появится список узлов, похожий на следующие выходные данные:

$ kubectl get nodes --output wide
NAME                                STATUS   ROLES   AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION     CONTAINER-RUNTIME
akswin000000                        Ready    agent   3m8s    v1.20.9   10.240.0.4     <none>        Windows Server 2019 Datacenter   10.0.17763.2237    docker://20.10.6
akswin000001                        Ready    agent   3m50s   v1.20.9   10.240.0.115   <none>        Windows Server 2019 Datacenter   10.0.17763.2237    docker://20.10.6
akswin000002                        Ready    agent   3m32s   v1.20.9   10.240.0.226   <none>        Windows Server 2019 Datacenter   10.0.17763.2237    docker://20.10.6

Шаг 2. Подключение к узлу Windows

Следующий шаг — установить подключение к узлу кластера AKS. Проверка подлинности выполняется с помощью ключа SSH или пароля администратора Windows в подключении по протоколу удаленного рабочего стола (RDP). Оба метода требуют создания промежуточного подключения, так как в настоящее время вы не можете подключиться напрямую к узлу Windows AKS. Независимо от того, подключаетесь ли вы к узлу по протоколу SSH или RDP, необходимо указать имя пользователя для узлов AKS. По умолчанию это имя пользователя azureuser.

Если у вас есть ключ SSH, создайте SSH-подключение к узлу Windows. Ключ SSH не сохраняется на узлах AKS. Ключ SSH возвращается к тому, что было первоначально установлено в кластере во время любого:

  • Перезагрузки
  • Обновление версии
  • Обновление образа узла

Шаг 3. Создание записи пакетов

При подключении к узлу Windows по протоколу SSH или RDP отображается форма командной строки Windows:

azureuser@akswin000000 C:\Users\azureuser>

Теперь откройте командную строку и введите команду Сетевой оболочки (netsh) ниже для записи трассировок (запуск трассировки netsh). Эта команда запускает процесс записи пакетов.

netsh trace start capture=yes tracefile=C:\Users\azureuser\AKS_node_name.etl 

Выходные данные выглядят примерно так:

Trace configuration:
-------------------------------------------------------------------
Status:             Running
Trace File:         AKS_node_name.etl
Append:             Off
Circular:           On
Max Size:           250 MB
Report:             Off

Во время выполнения трассировки реплицируйте проблему много раз. Это действие гарантирует, что проблема была зафиксирована в дампе TCP. Обратите внимание на метку времени при репликации проблемы. Чтобы остановить запись пакетов по завершении, введите netsh trace stop:

azureuser@akswin000000 C:\Users\azureuser>netsh trace stop
Merging traces ... done
Generating data collection ... done
The trace file and additional troubleshooting information have been compiled as "C:\Users\azureuser\AKS_node_name.cab".
File location = C:\Users\azureuser\AKS_node_name.etl
Tracing session was successfully stopped.

Шаг 4. Локальная передача записи

После завершения записи пакетов определите вспомогательный модуль pod, чтобы скопировать дамп локально. Откройте вторую консоль, а затем получите список модулей pod, запустив kubectl get pods, как показано ниже.

kubectl get pods
NAME                                                    READY   STATUS    RESTARTS   AGE
azure-vote-back-6c4dd64bdf-m4nk7                        1/1     Running   2          3d21h
azure-vote-front-85b4df594d-jhpzw                       1/1     Running   2          3d21h
node-debugger-aks-nodepool1-38878740-vmss000000-6ztp6   1/1     Running   0          3m58s

Вспомогательный модуль pod имеет префикс node-debugger-aks, как показано в третьей строке. Замените имя pod, а затем выполните следующие команды безопасного копирования (scp). Эти команды извлекают файлы журнала трассировки событий (ETL) и архивные файлы (.cab), созданные для записи пакетов.

scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.cab .
scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.etl .

Выходные данные, аналогичные следующему тексту:

$ scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.cab .

Authorized uses only. All activity may be monitored and reported.
AKS_node_name.cab                                                                  100%  571KB 984.0KB/s   00:00

scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.etl .

Authorized uses only. All activity may be monitored and reported.
AKS_node_name.etl                                                                  100% 1536KB   1.3MB/s   00:01

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.