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 utilizar Azure CLI para desplegar un grupo de nodos en un clúster AKS existente que ejecuta contenedores Windows Server. También describe cómo desplegar una aplicación ASP.NET de ejemplo en un contenedor de Windows Server en el clúster.
Requisitos previos
Cree un clúster AKS siguiendo las instrucciones de Cómo crear clústeres AKS.
Adición de un grupo de nodos
De forma predeterminada, un clúster Kubernetes se crea con un grupo de nodos que puede ejecutar contenedores Linux. Debe agregar otro grupo de nodos que pueda ejecutar contenedores de Windows Server en combinación con el grupo de nodos de Linux.
Añada un grupo de nodos con hosts de contenedores Windows utilizando el comando az aksarc nodepool add
con el parámetro --os-type Windows
. Si no se especifica el SKU del sistema operativo, el pool de nodos se establece con el SO predeterminado basado en la versión de Kubernetes del clúster. Windows Server 2022 es el sistema operativo predeterminado para Kubernetes versiones 1.25.0 y posteriores. Windows Server 2019 es el sistema operativo predeterminado para versiones anteriores.
- Para usar Windows Server 2019, especifique los siguientes parámetros:
- establezca
os-type
enWindows
. - establezca
os-sku
enWindows2019
.
- establezca
- Para usar Windows Server 2022, especifique los siguientes parámetros:
- establezca
os-type
enWindows
. - establezca
os-sku
enWindows2022
(opcional).
- establezca
El siguiente comando crea un nuevo grupo de nodos denominado $mynodepool
y lo añade a $myAKSCluster
con un nodo Windows Server 2022:
az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2022
Conexión al clúster de AKS
Ahora puede conectarse a su clúster Kubernetes ejecutando el comando az connectedk8s proxy
desde su máquina local. 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 la kubeconfig de su clúster Kubernetes en su equipo local y abre un canal de conexión proxy a su clúster Kubernetes local. El canal permanecerá abierto mientras se ejecute este comando. No puede acceder al clúster si este comando no está en ejecución. Si el comando se agota, cierre la ventana de la CLI, abra una nueva y vuelva a ejecutar el comando.
Debe tener permisos de Contribuyente en el grupo de recursos que hospeda el clúster AKS para poder 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. Verifique que puede conectarse a su clúster Kubernetes ejecutando el comando kubectl get. Este comando devuelve una lista de los nodos del clúster:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
El siguiente ejemplo muestra el nodo creado en los pasos anteriores. Asegúrese de que el estado del nodo es Listo:
NAME STATUS ROLES AGE VERSION
moc-lesdc78871d Ready control-plane 6d8h v1.26.3
moc-lupeeyd0f8c Ready <none> 6d8h v1.26.3
moc-ww2c8d5ranw Ready <none> 7m18s v1.26.3
Implementación de la aplicación
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 utilizar un manifiesto YAML para crear todos los objetos necesarios para ejecutar la aplicación ASP.NET de ejemplo en un contenedor Windows Server. Este manifiesto incluye una implementación de Kubernetes para la aplicación de ejemplo de ASP.NET y un servicio de Kubernetes externo para acceder a la aplicación desde Internet.
La aplicación de ejemplo de ASP.NET se proporciona como parte de los ejemplos de .NET Framework y se ejecuta en un contenedor de Windows Server. AKS requiere contenedores de Windows Server que se basen en las imágenes de Windows Server 2019 u otra versión posterior. El archivo de manifiesto de Kubernetes también debe definir un selector de nodo para garantizar que los pods de su aplicación de ejemplo ASP.NET se programen en un nodo que pueda ejecutar contenedores Windows Server.
Cree un archivo llamado sample.yaml y copie la siguiente definición YAML:
apiVersion: apps/v1 kind: Deployment metadata: name: sample labels: app: sample spec: replicas: 1 template: metadata: name: sample labels: app: sample spec: nodeSelector: "kubernetes.io/os": windows containers: - name: sample image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp resources: limits: cpu: 1 memory: 800M ports: - containerPort: 80 selector: matchLabels: app: sample --- apiVersion: v1 kind: Service metadata: name: sample spec: type: LoadBalancer ports: - protocol: TCP port: 80 selector: app: sample
Para obtener un desglose de los archivos de manifiesto de YAML, consulte Implementaciones y manifiestos de YAML.
Implemente la aplicación mediante el comando kubectl apply y especifique el nombre del manifiesto de YAML:
kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
La siguiente salida de ejemplo muestra que la implementación y el servicio se crearon correctamente:
deployment.apps/sample created
service/sample created
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. En ocasiones, el servicio puede tardar más de unos minutos en aprovisionarse. Espere hasta 10 minutos para que se produzca el aprovisionamiento.
Para supervisar el progreso, utilice el comando kubectl get service con el argumento
--watch
.kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
Inicialmente, la salida muestra el parámetro EXTERNAL-IP del servicio de ejemplo como pendiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Cuando la dirección EXTERNAL-IP cambie de pendiente a una dirección IP, utilice CTRL-C para detener el proceso de vigilancia de kubectl. En la salida del ejemplo siguiente se muestra una dirección IP pública válida asignada al servicio:
sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Vea la aplicación de muestra en acción abriendo un navegador web a la dirección IP externa y al puerto del servicio de muestra.
Si recibe un tiempo de espera de conexión al intentar cargar la página, debe verificar que la aplicación de muestra está lista utilizando el comando
kubectl get pods --watch
. A veces, el contenedor Windows no se inicia en el momento en que la dirección IP externa esté disponible.
Borrar grupo de nodos
Borre el grupo de nodos utilizando el comando az akshybrid nodepool delete
:
az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait