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.
Se aplica a: AKS en Azure Local
En este artículo se describe cómo crear clústeres de Kubernetes en Azure Local mediante la CLI de Azure. El flujo de trabajo es el siguiente:
- Cree un clúster de Kubernetes en Azure Local mediante la CLI de Azure. El clúster está conectado a Azure Arc de forma predeterminada.
- Al crear el clúster, se proporciona un grupo de Microsoft Entra que contiene la lista de usuarios de Microsoft Entra con acceso de administrador de clústeres de Kubernetes.
- Acceda al clúster mediante kubectl y el identificador de Microsoft Entra.
- Ejecución de una aplicación de varios contenedores de ejemplo con un servidor front-end web y una instancia de Redis en el clúster.
Antes de empezar
- Antes de empezar, asegúrese de que tiene los detalles siguientes del administrador de infraestructura local:
- Identificador de suscripción de Azure: el identificador de suscripción de Azure donde se usa Azure Local para la implementación y el registro.
- ID de ubicación personalizada: ID de Azure Resource Manager de la ubicación personalizada. La ubicación personalizada se configura durante la implementación del clúster local de Azure. El administrador de infraestructura debe proporcionarle el identificador de Resource Manager de la ubicación personalizada. Este parámetro es necesario para crear clústeres de Kubernetes. También puede obtener el identificador de Resource Manager mediante
az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv
, si el administrador de infraestructura proporciona un nombre de ubicación personalizado y un nombre de grupo de recursos. - Identificador de red: identificador de Azure Resource Manager de la red lógica local de Azure creada siguiendo estos pasos. El administrador debe proporcionarle el identificador de la red lógica. Este parámetro es necesario para crear clústeres de Kubernetes. También puede obtener el identificador de Azure Resource Manager mediante
az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv
si conoce el grupo de recursos en el que se creó la red lógica.
- Puede ejecutar los pasos descritos en este artículo en una máquina de desarrollo local para crear un clúster de Kubernetes en la implementación remota de Azure Local. Asegúrese de tener la versión más reciente de Az CLI en la máquina de desarrollo. También puede optar por actualizar la versión de la CLI de Az mediante
az upgrade
. - Para conectarse al clúster de Kubernetes desde cualquier lugar, cree un grupo de Microsoft Entra y agréguele miembros. Todos los miembros del grupo Microsoft Entra tienen acceso de administrador de clústeres al clúster. Asegúrese de agregarse como miembro al grupo Microsoft Entra. Si no te añades a ti mismo, no puedes acceder al clúster de Kubernetes mediante kubectl. Para obtener más información sobre cómo crear grupos de Microsoft Entra y agregar usuarios, consulte Administrar grupos y pertenencia a grupos de Microsoft Entra.
- Descargue e instale kubectl en la máquina de desarrollo. La herramienta de línea de comandos de Kubernetes, kubectl, le permite ejecutar comandos en clústeres de Kubernetes. Puede usar kubectl para implementar aplicaciones, inspeccionar y administrar recursos de clúster y ver los registros.
Instalación de la extensión de la CLI de Azure
Ejecute el siguiente comando para instalar las extensiones de la CLI de Azure necesarias:
az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade
Creación de un clúster de Kubernetes
Use el comando az aksarc create para crear un clúster de Kubernetes en AKS Arc. Asegúrese de iniciar sesión en Azure antes de ejecutar este comando. Si tiene varias suscripciones de Azure, seleccione el identificador de suscripción adecuado mediante el comando az account set. Con el comando az aksarc create
, se recomienda usar la marca --validate
, que valida los parámetros de entrada que quiere usar. Una vez validados los parámetros de entrada, puede ejecutar el az aksarc create
comando sin la --validate
marca para crear el clúster de Kubernetes.
az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys
Transcurridos unos minutos, el comando se completa y devuelve información en formato JSON sobre el clúster.
Consideraciones
Tenga en cuenta las siguientes consideraciones al crear un clúster:
- Las claves SSH son esenciales para la resolución de problemas y la recopilación de registros. Asegúrese de guardar su archivo de clave privada para utilizarlo en el futuro. Para acceder a los nodos, consulte Conexión a nodos de trabajo de Windows o Linux con SSH.
- Puede usar una clave SSH existente o configurar claves SSH para un clúster de AKS durante la creación del clúster. Si no hay ninguna clave SSH existente previamente en la máquina local, se requiere el
--generate-ssh-keys
parámetro . También puede restringir el acceso SSH siguiendo la documentación. Para obtener instrucciones detalladas, consulte Creación y almacenamiento de claves SSH con la CLI de Azure o en Azure Portal. - Si no incluye
--generate-ssh-keys
durante la creación del clúster y no existe ninguna clave SSH, recibirá un mensaje de error. Si ya tiene una clave SSH en el equipo local, el clúster de AKS lo reutiliza. En este caso, no hace ninguna diferencia si se especifica--generate-ssh-keys
o no. - De forma predeterminada, la clave SSH se almacena en ~/.ssh/id_rsa.pub. Durante la creación del clúster, puede especificar una ubicación alternativa mediante el
--ssh-key-value
parámetro .
Importante
Para usar RBAC de Azure o la identidad de carga de trabajo para un clúster de AKS, debe pasar los parámetros necesarios durante la creación del clúster mediante la CLI de Azure. Actualmente, no se admite la actualización de un clúster de AKS existente para habilitar la identidad de carga de trabajo o RBAC de Azure. Para más información, consulte Uso de RBAC de Azure para la autorización de Kubernetes o Implementación y configuración de la identidad de carga de trabajo para el clúster.
Conectar al clúster de Kubernetes
Ahora puede conectarse al clúster de Kubernetes ejecutando el comando desde la az connectedk8s proxy
máquina de desarrollo. Asegúrese de iniciar sesión en Azure antes de ejecutar este comando. Si tiene varias suscripciones de Azure, seleccione el identificador de suscripción adecuado mediante el comando az account set.
Este comando descarga kubeconfig del clúster de Kubernetes en la máquina de desarrollo y abre un canal de conexión de proxy al clúster de Kubernetes local. El canal está abierto mientras se ejecute el comando. Puede dejar que este comando se ejecute durante el tiempo que desee para acceder a su clúster. Si agota el tiempo de espera, cierre la ventana de la CLI, abra una nueva y vuelva a ejecutar el comando.
Debe tener permisos de colaborador en el grupo de recursos que hospeda el clúster de Kubernetes para ejecutar correctamente el siguiente comando:
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Resultado esperado:
Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.
Mantenga esta sesión en ejecución y conéctese al clúster de Kubernetes desde un terminal o símbolo del sistema diferente. Compruebe que puede conectarse al clúster de Kubernetes mediante la ejecución del comando kubectl get. Este comando devuelve una lista de los nodos del clúster:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
En el ejemplo de salida siguiente se muestra el nodo creado en los pasos anteriores. Asegúrese de que el estado del nodo es Listo:
NAME STATUS ROLES AGE VERSION
moc-l0ttdmaioew Ready control-plane,master 34m v1.24.11
moc-ls38tngowsl Ready <none> 32m v1.24.11
Implementación de la aplicación y el equilibrador de carga
Un archivo de manifiesto de Kubernetes define el estado deseado del clúster, por ejemplo, qué imágenes de contenedor se van a ejecutar.
Puede usar un manifiesto para crear todos los objetos necesarios para ejecutar la aplicación Azure Vote. Este manifiesto incluye dos implementaciones de Kubernetes:
- Las aplicaciones de Python de ejemplo de Azure Vote.
- Una instancia de Redis.
También se crean dos servicios de Kubernetes:
- Un servicio interno para la instancia de Redis.
- Un servicio externo para acceder a la aplicación Azure Vote desde Internet.
Cree un archivo denominado azure-vote.yaml y copie en el siguiente manifiesto:
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-back
template:
metadata:
labels:
app: azure-vote-back
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: <path to image>/oss/bitnami/redis:6.0.8
env:
- name: ALLOW_EMPTY_PASSWORD
value: "yes"
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-front
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-front
template:
metadata:
labels:
app: azure-vote-front
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: azure-vote-front
image: <path to image>/azure-vote-front:v1
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 80
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-front
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: azure-vote-front
Implemente la aplicación mediante el comando kubectl apply y especifique el nombre de su YAML:
kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config
En la salida de ejemplo siguiente se muestran las implementaciones y los servicios creados correctamente:
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
Implemente un equilibrador de carga MetalLB para que pueda asignar una dirección IP externa para el front-end de la aplicación. Puede seguir estas instrucciones para implementar la extensión MetalLB desde el portal de Azure o mediante la CLI.
Prueba de la aplicación
Cuando se ejecuta la aplicación, un servicio de Kubernetes expone el front-end de la aplicación a Internet. Este proceso puede tardar unos minutos en completarse.
Monitoriza el progreso mediante el comando kubectl get service con el argumento --watch
.
kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config
La salida EXTERNAL-IP para el servicio azure-vote-front se muestra inicialmente como pendiente.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Una vez que la dirección IP EXTERNA cambie de pendiente a una dirección IP pública real, use CTRL-C para detener el proceso de inspección de kubectl. En la salida del ejemplo siguiente se muestra una dirección IP pública válida asignada al servicio:
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Para ver la aplicación Azure Vote en acción, abra un explorador web en la dirección IP externa del servicio.
Eliminación del clúster
Ejecute el az aksarc delete
comando para limpiar el clúster que creó:
az aksarc delete --name $aksclustername --resource-group $resource_group