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 AKS habilitado por Azure Arc.
Antes de empezar
Asegúrese de cumplir los siguientes requisitos:
- Un clúster de Azure Kubernetes Service con al menos un nodo de trabajo de Windows en ejecución.
- Un archivo kubeconfig para obtener acceso al clúster.
- El módulo de PowerShell de AksHci está instalado.
Cuando siga los procedimientos:
- Ejecute los comandos en una ventana de administrador 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 del clúster, por ejemplo, qué imágenes de contenedor 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 de ASP.NET en un nodo que pueda ejecutar contenedores de Windows Server.
Cree un archivo denominado sample.yaml
y 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.
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 sola 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