Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
CanIPull es una herramienta de diagnóstico para Azure Kubernetes Service (AKS). Impleméntelo mediante Azure Copilot o el manifiesto completo de Kubernetes en este artículo. CanIPull lee la configuración de identidad del clúster de un nodo seleccionado, comprueba la resolución dns de un servidor de autenticación de Azure Container Registry (ACR) y valida el intercambio inicial de tokens de ACR.
En este artículo se muestra cómo ejecutar CanIPull mediante Azure Copilot o un manifiesto de Kubernetes. CanIPull v0.1.0 se ejecuta en un nodo de Linux AMD64 a la vez. Repita la comprobación en otros nodos admitidos para comparar su conectividad o configuración.
Importante
CanIPull no es una prueba de extracción de imágenes de un extremo a otro. Un resultado correcto no confirma el acceso a un repositorio, un manifiesto de imagen o una capa de imagen porque CanIPull no selecciona ni extrae una imagen.
Prerequisites
Antes de comenzar, necesita lo siguiente:
- Un clúster de AKS existente con al menos un nodo AMD64 Linux.
- Una instancia de ACR existente que desea probar.
Para implementar CanIPull con Azure Copilot, también necesita acceso a Azure Copilot en el portal de Azure.
Para implementar CanIPull manualmente, también necesita lo siguiente:
- CLI de Azure instalado.
- Una sesión de CLI de Azure autenticada con permisos para obtener credenciales de usuario para el clúster de AKS y leer la instancia de ACR.
-
kubectlconfigurado para conectarse al clúster de AKS. - Permisos de Kubernetes para enumerar nodos en el ámbito del clúster; crear, obtener, enumerar, supervisar y eliminar pods en el espacio de nombres
default; y obtener registros de pods en el espacio de nombresdefault.
Implementación de CanIPull con Azure Copilot
Azure Copilot puede seleccionar el clúster de AKS, el nodo AMD64 Linux y el servidor de autenticación de ACR y, a continuación, implementar CanIPull automáticamente. El diagnóstico comprueba la resolución DNS y el intercambio de tokens de ACR desde el nodo seleccionado. No selecciona ni accede a un repositorio ni a una imagen.
- En el portal de Azure, abra Copilot.
- Introduzca una de las siguientes instrucciones:
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.
- Seleccione el clúster de AKS y el nodo AMD64 Linux donde desea que se ejecute CanIPull.
- Seleccione la instancia de ACR cuyo servidor de autenticación desea usar para las comprobaciones de intercambio de tokens y DNS.
- Revise las selecciones y confirme la implementación.
- Una vez completado el despliegue, siga las indicaciones para abrir el panel Ejecutar un comando.
- Revise los registros de CanIPull para los resultados de intercambio de tokens de DNS, identidad de clúster y ACR.
Para obtener más información sobre esta experiencia, consulte Uso de CanIPull con Azure Copilot.
Implementación manual de CanIPull
Para implementar CanIPull manualmente, conéctese al clúster, seleccione un nodo Linux AMD64, obtenga el servidor de inicio de sesión completo de ACR, guarde el manifiesto completo del pod proporcionado en esta sección como canipull.yaml y ejecute kubectl apply --filename canipull.yaml. El pod de un solo uso le permite elegir el nodo de destino e inspeccionar los registros de diagnóstico directamente con kubectl.
Importante
El manifiesto monta /etc/kubernetes/azure.json desde el nodo seleccionado. Este archivo contiene la configuración de identidad de clúster confidencial. Implementa el pod solo si eres un administrador de clúster de confianza. No aumente la verbosidad de CanIPull porque los niveles más altos pueden imprimir tokens de acceso. Elimine el pod tan pronto como finalice la prueba.
Conexión al clúster y selección de un nodo
Establezca variables para el clúster de AKS y la instancia de ACR.
RESOURCE_GROUP=<resource-group> CLUSTER_NAME=<aks-cluster-name> ACR_NAME=<acr-name>Obtenga las credenciales del clúster.
az aks get-credentials \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAMEObtenga el servidor de inicio de sesión de ACR. CanIPull espera el servidor de inicio de sesión con el nombre completo, como
myregistry.azurecr.io, en lugar del nombre del recurso ACR.ACR_LOGIN_SERVER=$(az acr show \ --name $ACR_NAME \ --query loginServer \ --output tsv) echo $ACR_LOGIN_SERVEREnumere los nodos de Linux AMD64 y elija el nodo donde desea ejecutar la comprobación de diagnóstico. CanIPull
v0.1.0solo admite nodos AMD64.kubectl get nodes \ --selector kubernetes.io/os=linux,kubernetes.io/arch=amd64 \ --output wide
Creación e implementación del manifiesto CanIPull completo
Copie el manifiesto completo en un archivo denominado
canipull.yaml. Reemplace<target-linux-node>y<acr-login-server>por el nombre del nodo y el servidor de inicio de sesión de ACR de la sección anterior. El manifiesto vincula CanIPull al nodo seleccionado, desactiva el montaje de tokens de cuentas de servicio y la escalada de privilegios, y monta la configuración necesaria del nodo como de solo lectura.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: FileCree el pod.
kubectl apply --filename canipull.yamlEspere a que finalice el pod.
kubectl get pod canipull --watchPresione Ctrl+C cuando el estado del pod cambie a
CompletedoError.
Revisar los resultados de CanIPull
Vea la salida de diagnóstico.
kubectl logs canipull
Una prueba correcta incluye los siguientes resultados:
- El servidor de autenticación ACR se resuelve a través de DNS.
- CanIPull lee la configuración de Azure del nodo.
- La identidad del kubelet del clúster o la entidad de servicio pueden autenticarse.
- ACR acepta el intercambio de tokens inicial.
Estos resultados solo confirman que el nodo seleccionado puede resolver el servidor de autenticación de ACR y que la identidad del clúster puede completar el intercambio inicial de tokens. CanIPull no extrae una imagen ni valida el acceso a un repositorio, un manifiesto de imagen o una capa de imagen.
El mensaje de éxito final de la herramienta usa una redacción más amplia que el ámbito de la prueba y se parece a la siguiente salida:
Your cluster can pull images from <acr-login-server>!
Para comprobar una extracción de imágenes de un extremo a otro, implemente una carga de trabajo que haga referencia a una imagen en el repositorio de destino.
Si se produce un error en la prueba, revise la línea de registro marcada como FAILED. Entre las causas comunes se incluyen las siguientes:
- El servidor de autenticación ACR no se resuelve desde el nodo seleccionado.
- El nodo seleccionado no contiene
/etc/kubernetes/azure.json. - Las credenciales de identidad del clúster no son válidas.
- ACR rechaza el intercambio de tokens para la identidad del kubelet o la entidad de servicio.
Si se produce un error en el intercambio de tokens porque la identidad no está autorizada para acceder a ACR, consulte Autenticación con ACR desde AKS.
Limpieza de recursos
Elimine el pod CanIPull y quite su acceso a la configuración del nodo.
kubectl delete pod canipull