Capturar um arquivo de despejo de contêiner do Windows de um nó windows em um cluster do AKS
Se um contêiner do Windows falhar em um cluster do AKS (Microsoft Serviço de Kubernetes do 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ó windows em um cluster do AKS. Ele também inclui instruções para baixar o arquivo de despejo no computador local para análise adicional.
Pré-requisitos
Um cluster 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 do WindowsCSEScriptsPackage é v0.0.39 ou mais recente, que pode estar localizada nosC:\AzureData\CustomDataSetupScript.log
nós do Windows.
Etapa 1: adicionar metadados de anotações à sua implantação
Monte uma pasta 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ó 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 (Protocolo de Área de Trabalho Remota). Ambos os métodos exigem que você crie uma conexão intermediária. Isso ocorre porque atualmente você não pode se conectar diretamente ao nó do AkS Windows. Se você se conectar a um nó por meio de SSH ou RDP, você precisa 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ó 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 de imagem de 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, em seguida, 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 scp (Cópia Segura) para recuperar os arquivos de despejo (.dmp) salvos quando o contêiner falhar:
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ó 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.