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


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

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

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

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

  • Пулы агентов Windows, созданные после 3/13/2024 , или образ узла, обновленный до версии 20240316 образа WINDOWS AKS или более поздней версии. Кроме того, проверьте, является ли 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. Проверка подлинности выполняется с помощью ключа 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.