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


Запись файла дампа контейнера Windows из узла Windows в кластере AKS

Если контейнер Windows завершается сбоем в кластере Microsoft Служба Azure Kubernetes (AKS), может потребоваться проверить файл дампа контейнеров Windows, чтобы изучить первопричину. В этой статье описаны действия по захвату файла дампа контейнера Windows из узла Windows в кластере AKS. Он также содержит инструкции по скачиванию файла дампа на локальный компьютер для дальнейшего анализа.

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

  • Кластер AKS. Если у вас нет кластера AKS, создайте его с помощью Azure CLI или с помощью портал Azure.

  • Пулы агентов Windows, созданные после 3/13/2024 или образ узла, который был обновлен до версии 20240316 образа AKS Windows или более поздней версии. Кроме того, проверьте, является ли версия WindowsCSEScriptsPackage версии 0.0.39 или более поздней, которая может находиться на C:\AzureData\CustomDataSetupScript.log узлах Windows.

Шаг 1. Добавление метаданных заметок в развертывание

Подключите папку узла в контейнере и добавьте метаданные заметок, чтобы запросить, чтобы контейнер Windows хранит файл дампа в указанной папке:

metadata:
  ...
  annotations:
    "io.microsoft.container.processdumplocation": "C:\\CrashDumps\\{container_id}"
    "io.microsoft.wcow.processdumptype": "mini"
    "io.microsoft.wcow.processdumpcount": "10"
spec:
  ...
  containers:
  - name: containername
    image: ...
    ...
    volumeMounts:
      - mountPath: C:\CrashDumps
        name: local-dumps
  volumes:
  - name: local-dumps
    hostPath:
      path: C:\k\containerdumps
      type: DirectoryOrCreate

Шаг 2. Воспроизведение проблемы

Повторно разверните развертывание и дождитесь сбоя контейнера Windows. Вы можете kubectl describe pod -n [POD-NAMESPACE] [POD-NAME] узнать, какой узел Windows AKS размещает модуль pod.

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

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

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

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

Шаг 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), чтобы получить файлы дампа (.dmp), сохраненные при сбое контейнера:

scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:/C:/k/containerdumps/{container_id}/{application}.dmp .

Вы можете перечислить C:\k\containerdumps папку, чтобы найти полный путь к файлам дампа после подключения к узлу Windows.

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

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