Implementación de aplicaciones Windows

Se aplica a: AKS en Azure Stack HCI 22H2, AKS en Windows Server

En este tutorial se describe cómo implementar una aplicación de ejemplo de ASP.NET en un contenedor de Windows Server en el clúster de Azure Kubernetes Service (AKS) en AKS habilitado por Arc y, a continuación, probar y escalar la aplicación. También aprenderá a unir un nodo de Windows a un dominio de Active Directory.

En este tutorial se da por supuesto que tiene un conocimiento básico de los conceptos de Kubernetes. Para más información, consulte Conceptos básicos de Kubernetes para la implementación híbrida de AKS.

Antes de empezar

Asegúrese de cumplir los siguientes requisitos:

Cuando siga los procedimientos:

  • Ejecute los comandos en una ventana administrativa de PowerShell.
  • Asegúrese de que las cargas de trabajo específicas del SO se encuentran en el host de contenedor adecuado. Si el clúster de Kubernetes tiene una combinación de nodos de trabajo de Linux y Windows, puede usar selectores de nodos o taints y tolerations. Para obtener más información, consulte Uso de los selectores de nodo y la opción para rechazar o aceptarlos.

Implementación de la aplicación

Un archivo de manifiesto de Kubernetes define un estado deseado para el clúster, como las imágenes de contenedor que se van a ejecutar. En estos procedimientos, se usa un manifiesto para crear todos los objetos necesarios para ejecutar la aplicación de ejemplo ASP.NET en un contenedor de 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 ASP.NET se proporciona como parte de los ejemplos de .NET Framework y se ejecuta en un contenedor de Windows Server. AKS Arc requiere que los contenedores de Windows Server se basen en imágenes de Windows Server 2019.

El archivo de manifiesto de Kubernetes también debe definir un selector de nodos para indicar al clúster que ejecute el pod de la aplicación de ejemplo ASP.NET en un nodo que pueda ejecutar contenedores de Windows Server.

Cree un archivo denominado sample.yamly copie o pegue la siguiente definición de YAML:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample
  labels:
    app: sample
spec:
  replicas: 1
  template:
    metadata:
      name: sample
      labels:
        app: sample
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": windows
      containers:
      - name: sample
        image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
        resources:
          limits:
            cpu: 1
            memory: 800M
          requests:
            cpu: .1
            memory: 300M
        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

Implemente la aplicación con el kubectl apply comando y especifique el nombre del manifiesto de YAML:

kubectl apply -f sample.yaml

En la salida de ejemplo siguiente se 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 en estos casos.

Para supervisar el progreso, use el kubectl get service comando con el --watch argumento :

kubectl get service sample --watch

Inicialmente, external-IP para el servicio de ejemplo se muestra 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 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:

NAME    TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)        AGE
sample  LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

Para ver la aplicación de ejemplo en acción, abra un explorador web en la dirección IP externa del servicio.

Captura de pantalla de la página principal de la aplicación de ejemplo de ASP.NET para Windows implementada en un clúster de AKS.

Si la conexión agota el tiempo de espera al intentar cargar la página, compruebe si la aplicación de ejemplo está lista ejecutando el kubectl get pods --watch comando . A veces, la dirección IP externa está disponible antes de que se inicie el contenedor de Windows.

Escalado de pods de la aplicación

Hemos creado una única réplica del front-end de la aplicación. Para ver el número y el estado de los pods del clúster, use el comando kubectl get tal como se indica a continuación:

kubectl get pods -n default

Para cambiar el número de pods en la implementación de ejemplo, use el comando kubectl scale. En el ejemplo siguiente se aumenta el número de pods del front-end a 3:

kubectl scale --replicas=3 deployment/sample

Vuelva a ejecutar kubectl get pods para comprobar que se crearon los pods. Tras un minuto aproximadamente, los pods adicionales están disponibles en el clúster:

kubectl get pods -n default

Pasos siguientes