Compartilhar via


Capturar um arquivo de despejo de contêiner do Windows de um nó do Windows em um cluster do AKS

Se um contêiner do Windows falhar em um cluster do AKS (Serviço de Kubernetes do Microsoft Azure), talvez seja necessário examinar o arquivo de despejo de contêiner do Windows para investigar a causa raiz. Este artigo fornece etapas para capturar um arquivo de despejo de contêiner do Windows de um nó do Windows em um cluster do AKS. Ele também inclui instruções para baixar o arquivo de despejo para o computador local para análise posterior.

Pré-requisitos

  • Uma cluster do AKS. Se você não tiver um cluster do AKS, crie um usando a CLI do Azure ou por meio do portal do Azure.

  • Pools de agentes do Windows criados após 3/13/2024 ou uma imagem de nó que foi atualizada para a versão 20240316 de imagem do Windows do AKS ou uma versão posterior. Como alternativa, verifique se a versão WindowsCSEScriptsPackage é v0.0.39 ou mais recente, que pode ser localizada nos C:\AzureData\CustomDataSetupScript.log nós do Windows.

Etapa 1: adicionar metadados de anotações à sua implantação

Monte uma pasta de host no contêiner e adicione os metadados de anotações para solicitar que o contêiner do Windows armazene o arquivo de despejo em uma pasta designada:

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

Etapa 2: reproduzir o problema

Reimplante sua implantação e aguarde a falha do contêiner do Windows. Você pode usar kubectl describe pod -n [POD-NAMESPACE] [POD-NAME] para saber qual nó do AKS Windows está hospedando o pod.

Etapa 3: conectar-se ao nó do Windows

Estabeleça uma conexão com o nó de cluster do AKS. Você autentica usando uma chave SSH (Secure Shell) ou a senha de administrador do Windows em uma conexão RDP (Remote Desktop Protocol). Ambos os métodos exigem que você crie uma conexão intermediária. Isso ocorre porque você não pode se conectar diretamente ao nó do Windows do AKS. Se você se conectar a um nó por meio de SSH ou RDP, precisará especificar o nome de usuário para os nós do AKS. Por padrão, esse nome de usuário é azureuser.

Se você tiver uma chave SSH, crie uma conexão SSH com o nó do Windows. A chave SSH não persiste nos nós do AKS. A chave SSH reverte para o que foi inicialmente instalado no cluster durante qualquer uma das seguintes ações:

  • Reiniciar
  • Atualização de versão
  • Atualização da imagem do nó

Etapa 4: Transferir o arquivo de despejo localmente

Depois que o contêiner falhar, identifique o pod auxiliar para que você possa copiar o arquivo de despejo localmente. Abra um segundo console e obtenha uma lista de pods executando o kubectl get pods comando, da seguinte maneira:

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

O pod auxiliar tem um prefixo de node-debugger-aks, conforme mostrado na terceira linha. Substitua o nome do pod e execute os seguintes comandos de Cópia Segura (scp) para recuperar os arquivos de despejo (.dmp) que são salvos quando o contêiner falha:

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 .

Você pode listar a C:\k\containerdumps pasta para encontrar o caminho completo dos arquivos de despejo depois que a conexão for feita com o nó do Windows.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.