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ão20240316
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 nosC:\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.