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
- Agregue 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.
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
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ónFROM
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
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
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.
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).
Azure Kubernetes Service