Запись дампа TCP с узла Windows в кластере AKS
Проблемы с сетью могут возникать при использовании кластера Microsoft Служба Azure Kubernetes (AKS). Чтобы помочь изучить эти проблемы, в этой статье объясняется, как записать дамп TCP с узла Windows в кластере AKS, а затем скачать запись на локальный компьютер.
Предварительные требования
- Azure CLI версии 2.0.59 или более поздней. Вы можете открыть Cloud Shell Azure в веб-браузере, чтобы ввести команды Azure CLI. Или установите или обновите Azure CLI на локальном компьютере. Чтобы найти версию, установленную на компьютере, выполните команду
az --version
. - Кластер AKS. Если у вас нет кластера AKS, создайте его с помощью Azure CLI или портал Azure.
Шаг 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.