Actualización de un controlador de datos habilitado para Azure Arc conectado indirectamente con las herramientas de Kubernetes
En este artículo se explica cómo actualizar un controlador de datos habilitado para Azure Arc conectado indirectamente con las herramientas de Kubernetes.
Durante una actualización del controlador de datos, se pueden actualizar las partes del plano de control de datos, como las definiciones de recursos personalizados (CRD) y los contenedores. Una actualización del controlador de datos no provocará ningún tiempo de inactividad de los servicios de datos (servidor de SQL Managed Instance o PostgreSQL).
En este artículo, se aplicará un archivo .yaml para:
- Crear la cuenta de servicio para ejecutar la actualización.
- Actualizar el programa de arranque.
- Actualizar el controlador de datos.
Nota:
Algunos de los modos y niveles de servicio de datos están disponibles con carácter general y otros están en versión preliminar. Si instala servicios de disponibilidad general y de versión preliminar en el mismo controlador de datos, no puede realizar una actualización local. Para actualizar, elimine todas las instancias de base de datos que no sean de disponibilidad general. Puede encontrar la lista de servicios disponibles con carácter general y en versión preliminar en las notas de la versión.
Requisitos previos
Antes de comenzar la actualización del controlador de datos necesitará lo siguiente:
- Conectarse a un clúster de Kubernetes y autenticarse en él.
- Seleccionar un contexto de Kubernetes existente.
Necesita un controlador de datos conectado indirectamente con imageTag: v1.0.0_2021-07-30
o posterior.
Instalación de herramientas
Para actualizar el controlador de datos mediante las herramientas de Kubernetes, debe tener instaladas dichas herramientas.
En los ejemplos de este artículo se usa kubectl
, pero se podrían emplear enfoques similares con otras herramientas de Kubernetes como el panel de Kubernetes, oc
o helm si está familiarizado con esas herramientas y los formatos YAML y JSON de Kubernetes.
Instalación de la herramienta kubectl
Visualización de imágenes disponibles y elección de una versión
Extraiga la lista de imágenes disponibles del controlador de datos con el siguiente comando:
az arcdata dc list-upgrades --k8s-namespace <namespace>
El comando anterior devuelve una salida como la del ejemplo siguiente:
Found 2 valid versions. The current datacontroller version is <current-version>.
<available-version>
...
Actualización del controlador de datos
En esta sección se muestra cómo actualizar un controlador de datos conectado indirectamente.
Nota:
Algunos de los modos y niveles de servicio de datos están disponibles con carácter general y otros están en versión preliminar. Si instala servicios de disponibilidad general y de versión preliminar en el mismo controlador de datos, no puede realizar una actualización local. Para actualizar, elimine todas las instancias de base de datos que no sean de disponibilidad general. Puede encontrar la lista de servicios disponibles con carácter general y en versión preliminar en las notas de la versión.
Para conocer las rutas de actualización admitidas, consulte Actualización de los servicios de datos habilitados para Azure Arc.
Actualizar
Tendrá que conectarse a un clúster de Kubernetes y autenticarse en él, además de tener un contexto de Kubernetes existente seleccionado, antes de empezar a actualizar el controlador de datos.
Creación de la cuenta de servicio para ejecutar la actualización
Importante
Requiere permisos de Kubernetes para crear la cuenta de servicio, el enlace de roles, el rol de clúster, el enlace de roles de clúster y todos los permisos RBAC que se conceden a la cuenta de servicio.
Guarde una copia de arcdata-deployer.yaml y reemplace el marcador de posición {{NAMESPACE}}
del archivo por el espacio de nombres del controlador de datos, por ejemplo, arc
. Ejecute el siguiente comando para crear la cuenta de servicio del implementador con el archivo editado.
kubectl apply --namespace arc -f arcdata-deployer.yaml
Actualización del programa de arranque
El siguiente comando crea un trabajo para actualizar el programa de arranque y los objetos de Kubernetes relacionados.
Importante
El valor predeterminado del archivo yaml es mcr.microsoft.com/arcdata. Guarde una copia del archivo yaml y actualícela para que use otro registro o repositorio si es necesario.
kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/bootstrapper-upgrade-job.yaml
Actualización del controlador de datos
El siguiente comando aplica revisiones a la etiqueta de imagen para actualizar el controlador de datos.
kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/data-controller-upgrade.yaml
Supervisión del estado de actualización
Puede supervisar el progreso de la actualización con kubectl.
kubectl
kubectl get datacontrollers --namespace <namespace> -w
kubectl get monitors --namespace <namespace> -w
La actualización es un proceso de dos partes. En primer lugar se actualiza el controlador y luego la pila de supervisión. Durante la actualización, use kubectl get monitors -n <namespace> -w
para ver el estado. El resultado será:
NAME STATUS AGE
monitorstack Updating 36m
monitorstack Updating 36m
monitorstack Updating 39m
monitorstack Updating 39m
monitorstack Updating 41m
monitorstack Ready 41m
Solución de problemas
Cuando la versión deseada se establece en una versión específica, el trabajo de arranque intentará actualizar a esa versión hasta que se realice correctamente. Si la actualización se realiza correctamente, la propiedad RunningVersion
de la especificación se actualiza a la nueva versión. Las actualizaciones pueden producir un error en escenarios como una etiqueta de imagen incorrecta, no se pueden conectar al registro o al repositorio, una CPU o memoria insuficiente asignadas a los contenedores o un almacenamiento insuficiente.
Ejecute el comando siguiente para ver si alguno de los pods muestra un estado
Error
o tiene un gran número de reinicios:kubectl get pods --namespace <namespace>
Para ver si hay un error en los eventos, ejecute
kubectl describe pod <pod name> --namespace <namespace>
Para obtener una lista de los contenedores de los pods, ejecute
kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
Para obtener los registros de un contenedor, ejecute
kubectl logs <pod name> <container name> --namespace <namespace>
Para ver errores comunes y cómo solucionarlos, vaya a Recursos para la solución de problemas.