Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
CanIPull é uma ferramenta de diagnóstico para Azure Kubernetes Service (AKS). Implemente-o usando Azure Copilot ou o manifesto completo do Kubernetes neste artigo. O CanIPull lê a configuração de identidade do cluster a partir de um nó selecionado, verifica a resolução DNS de um servidor de autenticação do Azure Container Registry (ACR) e valida a troca inicial do token do ACR.
Este artigo mostra-lhe como executar o CanIPull usando Azure Copilot ou um manifesto Kubernetes. O CanIPull v0.1.0 é executado num nó Linux AMD64 de cada vez. Repita a verificação noutros nós suportados para comparar a sua conectividade ou configuração.
Importante
O CanIPull não é um teste de obtenção de imagem de ponta a ponta. Um resultado bem-sucedido não confirma o acesso a um repositório, manifesto de imagem ou camada de imagem porque o CanIPull não seleciona nem puxa uma imagem.
Pré-requisitos
Antes de começar, você precisa:
- Um cluster do AKS existente com pelo menos um nó Linux AMD64.
- Uma instância ACR existente que queres testar.
Para implementar o CanIPull com Azure Copilot, também precisa de acesso a Azure Copilot no portal Azure.
Para implementar o CanIPull manualmente, também precisa de:
- CLI do Azure instalado.
- Uma sessão CLI do Azure autenticada com permissões para obter credenciais de utilizador para o cluster AKS e ler a instância ACR.
-
kubectlconfigurado para estabelecer ligação ao seu cluster AKS. - Permissões do Kubernetes para listar nós ao nível do cluster; criar, obter, listar, monitorizar e apagar pods no espaço de nomes
default; e obter os registos dos pods no espaço de nomesdefault.
Implemente o CanIPull com Azure Copilot
O Azure Copilot pode selecionar o cluster AKS, o nó AMD64 Linux e o servidor de autenticação ACR e, em seguida, implementar o CanIPull por si. O diagnóstico verifica a resolução de DNS e a troca de token do ACR no nó selecionado. Não seleciona nem acede a um repositório ou imagem.
- No portal do Azure, abra Copilot.
- Introduza um dos seguintes prompts:
Help me deploy CanIPull to my AKS cluster.Can an AMD64 Linux node in my AKS cluster resolve and authenticate to a specific Azure Container Registry?Help me test ACR token exchange from an AMD64 Linux node in my AKS cluster.
- Selecione o cluster AKS e o nó Linux AMD64 onde pretende que o CanIPull seja executado.
- Selecione a instância do ACR cujo servidor de autenticação pretende utilizar nas verificações de DNS e de troca de tokens.
- Revê as escolhas e depois confirma a implementação.
- Quando a implementação estiver concluída, siga as instruções para abrir o painel do comando Executar.
- Consulte os registos CanIPull para DNS, identidade de cluster e resultados de troca de tokens ACR.
Para mais informações sobre esta experiência, consulte Usar CanIPull com Azure Copilot.
Instalar o CanIPull manualmente
Para implementar o CanIPull manualmente, ligue-se ao cluster, selecione um nó AMD64 para Linux, obtenha o servidor de login ACR totalmente qualificado, guarde o manifesto pod completo fornecido nesta secção como canipull.yaml, e execute kubectl apply --filename canipull.yaml. O one-shot pod permite-lhe escolher o nó-alvo e inspecionar diretamente os registos de diagnóstico com kubectl.
Importante
O manifesto é montado /etc/kubernetes/azure.json a partir do nó selecionado. Este ficheiro contém configurações sensíveis de identidade de cluster. Implemente o pod apenas se for um administrador de clusters de confiança. Não aumente a verbosidade do CanIPull porque níveis superiores podem imprimir tokens de acesso. Apaga o pod assim que terminares o teste.
Estabeleça ligação ao agrupamento e selecione um nó
Defina variáveis para o cluster AKS e a instância ACR.
RESOURCE_GROUP=<resource-group> CLUSTER_NAME=<aks-cluster-name> ACR_NAME=<acr-name>Obtenha as credenciais do cluster.
az aks get-credentials \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAMEObtenha o servidor de início de sessão do ACR. O CanIPull espera o servidor de login totalmente qualificado, como
myregistry.azurecr.io, em vez do nome do recurso ACR.ACR_LOGIN_SERVER=$(az acr show \ --name $ACR_NAME \ --query loginServer \ --output tsv) echo $ACR_LOGIN_SERVERListe os nós AMD64 do Linux e escolha o nó onde pretende executar a verificação de diagnóstico. CanIPull
v0.1.0é compatível apenas com nós AMD64.kubectl get nodes \ --selector kubernetes.io/os=linux,kubernetes.io/arch=amd64 \ --output wide
Criar e implementar o manifesto completo do CanIPull
Copie o manifesto completo para um ficheiro chamado
canipull.yaml. Substitua<target-linux-node>e<acr-login-server>pelo nome do nó e pelo servidor de início de sessão do ACR da secção anterior. O manifesto fixa o CanIPull no nó selecionado, desativa a montagem do token da conta de serviço e a escalação de privilégios, e monta a configuração do nó necessária como apenas leitura.apiVersion: v1 kind: Pod metadata: name: canipull namespace: default labels: app: canipull spec: automountServiceAccountToken: false nodeName: <target-linux-node> restartPolicy: Never containers: - name: canipull image: mcr.microsoft.com/aks/canipull:v0.1.0 imagePullPolicy: IfNotPresent args: - <acr-login-server> securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true volumeMounts: - name: azure-config mountPath: /etc/kubernetes/azure.json readOnly: true volumes: - name: azure-config hostPath: path: /etc/kubernetes/azure.json type: FileCria o pod.
kubectl apply --filename canipull.yamlAguarde que o pod termine.
kubectl get pod canipull --watchPressione Ctrl+C quando o estado do pod mudar para
CompletedouError.
Rever os resultados do CanIPull
Ver o resultado do diagnóstico.
kubectl logs canipull
Um teste bem-sucedido inclui os seguintes resultados:
- O servidor de autenticação ACR resolve através do DNS.
- O CanIPull lê a configuração do Azure a partir do nó.
- A identidade do kubelet do cluster ou a entidade de serviço pode autenticar-se.
- A ACR aceita a troca inicial de tokens.
Estes resultados confirmam apenas que o nó selecionado pode resolver o servidor de autenticação ACR e que a identidade do cluster pode completar a troca inicial de tokens. O CanIPull não extrai uma imagem nem valida o acesso a um repositório, manifesto de imagem ou camada de imagem.
A mensagem final de sucesso da ferramenta utiliza uma redação mais ampla do que o âmbito do teste e assemelha-se ao seguinte resultado:
Your cluster can pull images from <acr-login-server>!
Para verificar uma consulta de imagem de ponta a ponta, implemente uma carga de trabalho que faça referência a uma imagem no repositório alvo.
Se o teste falhar, consulte a linha de registo assinalada com FAILED. As causas comuns incluem:
- O servidor de autenticação ACR não pode ser resolvido a partir do nó selecionado.
- O nó selecionado não contém
/etc/kubernetes/azure.json. - As credenciais de identidade do cluster não são válidas.
- A ACR rejeita a troca de tokens pela identidade kubelet ou principal de serviço.
Se a troca de tokens falhar porque a identidade não está autorizada a aceder ao ACR, veja Autenticar com ACR a partir do AKS.
Limpeza de recursos
Elimine o pod CanIPull e remova o seu acesso à configuração do nó.
kubectl delete pod canipull