Resolver problemas do Azure Kubernetes Service no Azure Stack Hub
Descrição geral da resolução de problemas
A resolução de problemas de clusters Azure Kubernetes Service (AKS) na maioria dos aspetos não é diferente da resolução de problemas da maioria dos clusters do Kubernetes. Pode encontrar informações no site do Kubernetes, Resolução de Problemas. Outro recurso que poderá considerar útil no Azure Stack Hub são as Definições de diagnóstico disponíveis no painel do cluster do AKS do portal de utilizadores do Azure Stack Hub.
Neste painel, pode recolher informações sobre:
- kube-apiserver
- kube-audit
- kube-audit-admin
- kube-controller-manager
- kube-scheduler
- AllMetrics
Recolher registos de nós de cluster
Para resolver alguns problemas do cluster do AKS, poderá ter de recolher registos diretamente dos nós de cluster. Pode utilizar o script no repositório do GitHub msazurestackworkloads/azurestack-gallery para recolher registos de nós de cluster. Sem estes scripts, teria de ligar a cada nó no cluster, localizar e transferir os registos manualmente.
Os scripts visam simplificar a recolha de registos relevantes do cluster do Kubernetes. O script criará automaticamente um instantâneo do cluster e ligar-se-á a cada nó para recolher registos. Além disso, o script pode, opcionalmente, carregar os registos recolhidos para uma conta de armazenamento.
Esta ferramenta foi concebida para a equipa de suporte da Microsoft recolher registos de clusters abrangentes.
Requisitos de script
- Certifique-se de que o Grupo de Segurança de Rede (NSG) para nós do plano de controlo expôs a porta SSH 22.
- Um computador com acesso ao cluster do Kubernetes ou ao mesmo computador que utilizou para implementar o cluster. Para o computador Windows, instale o Git Bash para executar scripts bash.
- CLI do Azure instalada no computador onde o script será executado. Certifique-se de que consegue iniciar sessão no ambiente do Azure Stack com
Azure CLI
a partir da máquina virtual. Pode encontrar instruções em Instalar a CLI do Azure no Azure Stack Hub para saber como instalar e configurar a CLI do Azure para gerir a cloud do Azure Stack. - Mude para a subscrição onde o cluster do Kubernetes está implementado, com
az account set --subscription <Subscription ID>
o . - Transfira a versão mais recente do script para o seu computador e extraia os scripts.
Registos
O script automatiza o processo de recolha dos seguintes registos:
- Ficheiros de registo no diretório
/var/log/azure/
- Ficheiros de registo no diretório
/var/log/kubeaudit
(registos de auditoria do kube) - Ficheiro de registo
/var/log/waagent.log
(waagent) - Ficheiro de registo
/var/log/azure/deploy-script-dvm.log
(se implementado com o item do marketplace do Cluster do Kubernetes do Azure Stack) - Manifestos estáticos no diretório
/etc/kubernetes/manifests
- Suplementos estáticos no diretório
/etc/kubernetes/addons
- Registos do Waagent
- registos e metadados de contentores do kube-system
- estado e diário do kubelet
- estado etcd e diário
- estado do docker e diário
- estado de contentor e diário
- instantâneo do sistema kube
- Ficheiros de configuração do Azure CNI
- ficheiros de configuração do kubelet
São obtidos mais alguns registos para nós do Windows:
- Ficheiro de registo
c:\Azure\CustomDataSetupScript.log
- diário e estado do kube-proxy
- estado de contentor e diário
- registo azure-vnet e registo azure-vnet-telemetry
- Eventos ETW para docker
- Eventos ETW para Hyper-V
- Ficheiros de configuração do Azure CNI
Parâmetros
Parâmetro | Descrição | Necessário | Exemplo |
---|---|---|---|
-h, --help | Imprimir utilização de comandos. | não | |
-u,--user | O nome de utilizador do administrador para as VMs do cluster. | sim | azureuser (valor predefinido) |
-i, --identity-file | Chave privada SA associada à chave pública utilizada para criar o cluster do Kubernetes (por vezes denominado "id_rsa"). | sim | /rsa.pem (Putty) ~/.ssh/id_rsa (SSH) |
-g, --resource-group | Grupo de recursos do cluster do Kubernetes. Para os clusters criados pelo Serviço AKS, o nome do grupo de recursos gerido segue o padrão "MC_RESOURCEGROUP_CLUSTERNAME_LOCTION". | sim | k8sresourcegroup MC_AKSRP_k8scluster1_redmond |
-n, --user-namespace | Recolha registos de contentores nos espaços de nomes especificados. Se não for especificado, são recolhidos registos de TODOS os espaços de nomes. | não | monitorização |
--upload-logs | Persiste os registos obtidos numa conta de armazenamento do Azure Stack Hub. Os registos podem ser encontrados no grupo de recursos kubernetesLogs. | não | |
--api-model | Persiste o ficheiro apimodel.json numa conta de Armazenamento do Azure Stack Hub. O ficheiro apimodel.json de carregamento para a conta de armazenamento ocorre quando o parâmetro --upload-logs também é fornecido. | não | ./apimodel.json |
--disable-host-key-checking | Define a opção StrictHostKeyChecking do SSH como "não" enquanto o script é executado. Utilize apenas num ambiente seguro. | não |
Exemplos
# switch to the subscription where the Kubernetes cluster is deployed.
az account set --subscription <Subscription ID>
# download the scripts.
mkdir -p $HOME/kuberneteslogs
cd $HOME/kuberneteslogs
curl -L https://github.com/msazurestackworkloads/azurestack-gallery/releases/download/diagnosis-v1.1.0/diagnosis-v1.1.0.tar.gz -o diagnosis.tar.gz
tar xvf diagnosis.tar.gz
# use the script to collect logs
./getkuberneteslogs.sh -u azureuser -i private.key.1.pem -g k8s-rg
./getkuberneteslogs.sh -u azureuser -i ~/.ssh/id_rsa -g k8s-rg --disable-host-key-checking
./getkuberneteslogs.sh -u azureuser -i ~/.ssh/id_rsa -g k8s-rg -n default -n monitoring
./getkuberneteslogs.sh -u azureuser -i ~/.ssh/id_rsa -g k8s-rg --upload-logs --api-model clusterDefinition.json
./getkuberneteslogs.sh -u azureuser -i ~/.ssh/id_rsa -g k8s-rg --upload-logs