Compartir a través de


Actualización de la versión del sistema operativo para las cargas de trabajo de Windows de Azure Kubernetes Service (AKS)

Al actualizar la versión del sistema operativo de una carga de trabajo de Windows en ejecución en Azure Kubernetes Service (AKS) debe implementar un nuevo grupo de nodos para asegurarse de que las versiones de Windows coinciden en cada grupo de nodos. En este artículo se describen los pasos para actualizar la versión del sistema operativo para cargas de trabajo de Windows en AKS. Aunque este ejemplo se centra en la actualización de Windows Server 2019 a Windows Server 2022, se puede seguir el mismo proceso para actualizar de cualquier versión de Windows Server a otra.

Compatibilidad con la versión del sistema operativo Windows Server

Cuando se publica una nueva versión del sistema operativo Windows Server, AKS se compromete a admitirla y recomienda actualizar a la versión más reciente para aprovechar las correcciones, las mejoras y la nueva funcionalidad. AKS proporciona un ciclo de vida de soporte técnico de cinco años para cada versión de Windows Server, a partir de Windows Server 2022. Durante este período, AKS publicará una nueva versión que admita una versión más reciente del sistema operativo Windows Server para que la actualice.

Nota:

  • Windows Server 2019 se retirará después de que Kubernetes versión 1.32 alcance el final de su vida útil (EOL). Para más información, consulte las notas de la versión de AKS.
  • Windows Server 2022 se retirará después de que Kubernetes versión 1.34 alcance el final de su vida útil (EOL). Para más información, consulte las notas de la versión de AKS.

Limitaciones

Windows Server 2019 y Windows Server 2022 no pueden coexistir en el mismo grupo de nodos de AKS. Debe crear un grupo de nodos para hospedar la nueva versión del sistema operativo. Es importante los permisos y el acceso del grupo de nodos anterior coincidan con los del nuevo.

Antes de empezar

  • Actualice la instrucción FROM en el Dockerfile a la nueva versión del sistema operativo.
  • Compruebe la aplicación y que la aplicación contenedora funciona en la nueva versión del sistema operativo.
  • Implemente la aplicación de contenedor comprobada en AKS en un entorno de desarrollo o pruebas.
  • Anote el nuevo nombre o etiqueta de imagen para su uso en este artículo.

Nota:

Para obtener información sobre cómo crear un Dockerfile para cargas de trabajo de Windows, veaDockerfile en Windows y Optimización de Dockerfiles de Windows.

Adición de un grupo de nodos de Windows Server 2022 a un clúster existente

Actualización del archivo YAML

El selector de nodos es la opción más común y recomendada para la colocación de pods de Windows en nodos de Windows.

  1. Agregue el selector de nodos al archivo YAML mediante la adición de la anotación siguiente:

          nodeSelector:
            "kubernetes.io/os": windows
    

    La anotación busca cualquier nodo de Windows disponible y coloca el pod en ese nodo (siguiendo todas las demás reglas de programación). Al actualizar de Windows Server 2019 a Windows Server 2022, debe aplicar la colocación en un nodo de Windows y un nodo en el que se ejecute la versión más reciente del sistema operativo. Para ello, una opción es usar una anotación diferente:

          nodeSelector:
            "kubernetes.azure.com/os-sku": Windows2022
    
  2. Una vez que actualice nodeSelector en el archivo YAML, también debe actualizar la imagen de contenedor que quiera usar. Puede obtener esta información del paso anterior en el que ha creado una versión de la aplicación contenedorizada si cambia la instrucción FROM en el Dockerfile.

Nota:

Debe utilizar el mismo archivo YAML que haya usado inicialmente para implementar la aplicación. Esto garantiza que no cambie ninguna otra configuración además de nodeSelector y la imagen de contenedor.

Aplicación del archivo YAML actualizado a la carga de trabajo existente

  1. Vea los nodos del clúster mediante el comando kubectl get nodes.

    kubectl get nodes -o wide
    

    En la salida de ejemplo siguiente se muestran todos los nodos del clúster, incluido el nuevo grupo de nodos que ha creado y los grupos de nodos existentes:

    NAME                                STATUS   ROLES   AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION     CONTAINER-RUNTIME
    aks-agentpool-18877473-vmss000000   Ready    agent   5h40m   v1.23.8   10.240.0.4     <none>        Ubuntu 18.04.6 LTS               5.4.0-1085-azure   containerd://1.5.11+azure-2
    akspoolws000000                     Ready    agent   3h15m   v1.23.8   10.240.0.208   <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akspoolws000001                     Ready    agent   3h17m   v1.23.8   10.240.0.239   <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akspoolws000002                     Ready    agent   3h17m   v1.23.8   10.240.1.14    <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akswspool000000                     Ready    agent   5h37m   v1.23.8   10.240.0.115   <none>        Windows Server 2019 Datacenter   10.0.17763.3165    containerd://1.6.6+azure
    akswspool000001                     Ready    agent   5h37m   v1.23.8   10.240.0.146   <none>        Windows Server 2019 Datacenter   10.0.17763.3165    containerd://1.6.6+azure
    akswspool000002                     Ready    agent   5h37m   v1.23.8   10.240.0.177   <none>        Windows Server 2019 Datacenter   10.0.17763.3165    containerd://1.6.6+azure
    
  2. Aplique el archivo YAML actualizado a la carga de trabajo existente mediante el comando kubectl apply y especifique el nombre del archivo YAML.

    kubectl apply -f <filename>
    

    En la salida de ejemplo siguiente se muestra un estado configurado para la implementación:

    deployment.apps/sample configured
    service/sample unchanged
    

    En este momento, AKS iniciará el proceso de finalización de los pods existentes e implementará nuevos pods en los nodos de Windows Server 2022.

  3. Compruebe el estado de la implementación con el comando kubectl get pods.

    kubectl get pods -o wide
    

    En la salida del ejemplo siguiente se muestran los pods en el espacio de nombres default:

    NAME                      READY   STATUS    RESTARTS   AGE     IP             NODE              NOMINATED NODE   READINESS GATES
    sample-7794bfcc4c-k62cq   1/1     Running   0          2m49s   10.240.0.238   akspoolws000000   <none>           <none>
    sample-7794bfcc4c-rswq9   1/1     Running   0          2m49s   10.240.1.10    akspoolws000001   <none>           <none>
    sample-7794bfcc4c-sh78c   1/1     Running   0          2m49s   10.240.0.228   akspoolws000000   <none>           <none>
    

Consideraciones de seguridad y autenticación

Si usa cuentas de servicio administradas de grupo (gMSA), debe actualizar la configuración de identidad administrada para el nuevo grupo de nodos. gMSA usa un secreto (cuenta de usuario y contraseña) para que el nodo en el que se ejecuta el pod de Windows pueda autenticar el contenedor en Microsoft Entra ID. Para acceder a ese secreto en Azure Key Vault, el nodo usa una identidad administrada que permite al nodo acceder al recurso. Dado que las identidades administradas están configuradas por grupo de nodos y el pod ahora reside en un nuevo grupo de nodos, debe actualizar esa configuración. Para obtener más información, consulte Habilitación de cuentas de servicio administradas de grupo (GMSA) para los nodos de Windows Server en el clúster de Azure Kubernetes Service (AKS).

El mismo principio se aplica a las identidades administradas de cualquier otro grupo de pods o nodos al acceder a otros recursos de Azure. Debe actualizar cualquier acceso que proporcione la identidad administrada para reflejar el nuevo grupo de nodos. Para ver las actividades de actualización e inicio de sesión, consulte Visualización de la actividad de la identidad administrada.

Pasos siguientes

En este artículo, ha obtenido información sobre cómo actualizar la versión del sistema operativo para cargas de trabajo de Windows en AKS. Para más información sobre las cargas de trabajo de Windows en AKS, vea Implementación de una aplicación contenedora de Windows en Azure Kubernetes Service (AKS).