Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: ✔️ Administrador de flota ✔️ Administrador de flota con clúster de concentrador
Los administradores pueden controlar la secuencia de actualizaciones de los clústeres administrados por Flota mediante la definición de una serie de fases y grupos. Pueden configurar cuándo deben producirse aprobaciones y pausas dentro de esas fases y grupos. Toda la configuración se puede guardar como una estrategia de actualización que se puede administrar independientemente de las ejecuciones de actualizaciones o las actualizaciones automáticas, lo que permite reutilizar las estrategias según sea necesario.
En este artículo se explica cómo definir estrategias de actualización mediante grupos y fases.
Requisitos previos
Lea la Introducción conceptual de las actualizaciones de Flota, que proporciona una explicación de las ejecuciones de actualizaciones, las fases, los grupos y las estrategias a las que se hace referencia en esta guía.
Debe tener un recurso Fleet con uno o varios clústeres miembro. Si no es así, siga el inicio rápido para crear un recurso Fleet y combinar clústeres de Azure Kubernetes Service (AKS) como miembros.
Establezca estas variables de entorno:
export GROUP=<resource-group> export FLEET=<fleet-name> export CLUSTERID=<aks-cluster-resource-id> export STRATEGY=<strategy-name>Si sigue las instrucciones de CLI de Azure de este artículo, instale la versión más reciente del CLI de Azure. Para la instalación o la actualización, consulte Instalación de la CLI de Azure.
También necesitas la
fleetextensión de CLI de Azure. Para instalarlo, ejecute el siguiente comando:az extension add --name fleetEjecute el comando
az extension updatepara actualizar a la versión más reciente de la extensión publicada:az extension update --name fleet
Selección de clústeres para la estrategia
Hay dos maneras de seleccionar qué clústeres se incluyen en cada fase y grupo de la estrategia de actualización para controlar la secuencia de actualizaciones:
-
Etiquetas de miembro (recomendadas): asigne etiquetas a cada miembro de flota y úselas
memberSelectorpara seleccionar miembros por esas etiquetas. Cada miembro puede tener varias etiquetas. - Grupos de actualización: asigne un grupo de actualizaciones a cada miembro de flota y, a continuación, defina grupos en la estrategia que coincidan con esos nombres de grupo. Cada miembro solo puede pertenecer a un grupo.
Creación de una estrategia de actualización mediante selectores de miembros (versión preliminar)
Use etiquetas de miembro para seleccionar clústeres en las estrategias de actualización. Proporcionan más flexibilidad. Para obtener detalles conceptuales, consulte Agrupación de clústeres mediante etiquetas de miembro.
Importante
Las características en vista previa de Azure Kubernetes Fleet Manager están disponibles en autoservicio y de manera opcional. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y la garantía limitada. Las versiones preliminares de Azure Kubernetes Fleet Manager reciben cobertura parcial del soporte al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción.
Aplicación de etiquetas en clústeres de miembros
Aplicar etiquetas al agregar un clúster miembro a la flota
Use el az fleet member create comando para aplicar etiquetas a los miembros de la flota. En el ejemplo siguiente se aplican dos etiquetas al clúster miembro: env=staging y tier=frontend:
az fleet member create \
--resource-group $GROUP \
--fleet-name $FLEET \
--name member1 \
--member-cluster-id $CLUSTERID \
--labels "env=staging tier=frontend"
Aplicar etiquetas a un miembro de flota existente
Use el az fleet member update comando para aplicar etiquetas a los miembros de la flota.
az fleet member update \
--resource-group $GROUP \
--fleet-name $FLEET \
--name member1 \
--labels "env=staging tier=frontend"
Creación de una estrategia de actualización
Una estrategia de actualización consta de una o varias fases, donde una fase puede contener uno o varios grupos de actualizaciones.
Nota:
Una experiencia de Azure portal estará disponible antes de la disponibilidad general de esta funcionalidad.
Cree un archivo JSON para definir las fases y grupos de la ejecución de la actualización. Las fases se ejecutan secuencialmente en el orden en que aparecen en el archivo JSON. Los grupos se ejecutan en paralelo dentro de cada fase. El siguiente archivo de ejemplo (example-labels-strategy.json) define una estrategia con dos fases mediante
memberSelectorpara seleccionar clústeres por sus etiquetas e incluye la configuración opcionalmaxConcurrency:- La
stagingetapa utiliza unmemberSelectora nivel de etapa para seleccionar todos los clústeres con la etiquetaenv=stagingy crear un grupo implícito. - La
productionfase utiliza unmemberSelectora nivel de fase para filtrar previamente todos los clústeres con la etiquetaenv=productiony, a continuación, define dos grupos, cada uno con su propiomemberSelectorpara seleccionar clústeres por la etiquetatier.
Cuando
memberSelectorse establece en un grupo, el camponamedel grupo solo se utiliza como identificador de visualización para los informes de estado y el registro de eventos, y ya no se usa para la selección de miembros de la flota basada en la actualización del grupo.{ "stages": [ { "name": "staging", "memberSelector": { "byLabel": "env=staging" }, "maxConcurrency": "1", "afterStageWaitInSeconds": 600 }, { "name": "production", "memberSelector": { "byLabel": "env=production" }, "maxConcurrency": "4", "groups": [ { "name": "frontend", "memberSelector": { "byLabel": "tier=frontend" }, "maxConcurrency": "3" }, { "name": "backend", "memberSelector": { "byLabel": "tier=backend" }, "maxConcurrency": "3" } ] } ] }- La
Nota:
El maxConcurrency campo es opcional y controla el número de clústeres que se pueden actualizar simultáneamente en el nivel de fase o grupo. Use un valor mayor para actualizar clústeres más rápido a través de la flota o un valor menor para un lanzamiento más controlado que limite el radio de explosión si surgen problemas.
Cuando una fase aplica un memberSelector sin grupos (como staging), todos los miembros correspondientes forman un único grupo implícito y la simultaneidad se controla directamente a través del parámetro maxConcurrency de la fase. Cuando se definen grupos (como production), el nivel maxConcurrency de fase actúa como un límite máximo general en todos los grupos.
En este ejemplo, la staging fase establece maxConcurrency en "1", por lo que los clústeres de pruebas se actualizan de uno en uno. La production fase permite hasta "4" clústeres simultáneamente, con frontend y backend grupos, cada uno limitado a "3".
Los valores pueden ser un entero fijo (por ejemplo, "3") o un porcentaje (por ejemplo, "50%"). Si se omite, el sistema aplica valores predeterminados. Para más información sobre cómo se resuelven estos valores y sus límites superiores, consulte Simultaneidad máxima (versión preliminar).
Cree una nueva estrategia de actualización con el comando
az fleet updatestrategy createcon la marca--stagesestablecida en el nombre del archivo JSON.az fleet updatestrategy create \ --resource-group $GROUP \ --fleet-name $FLEET \ --name $STRATEGY \ --stages example-labels-strategy.json
Creación de una estrategia de actualización mediante grupos de actualizaciones
Puede seleccionar clústeres en estrategias de actualización asignandolos a un único grupo de actualizaciones. Defina una estrategia de actualización que asigne estos grupos de actualizaciones a fases. Dentro de una fase de actualización, las actualizaciones se aplican a cada grupo de actualizaciones en paralelo. Dentro de un grupo de actualizaciones, los clústeres miembro se actualizan secuencialmente.
Nota:
Un miembro de flota solo puede formar parte de un grupo de actualizaciones, pero un grupo de actualizaciones puede tener varios miembros de la flota asignados. Un grupo de actualizaciones no es un tipo de recurso independiente. Los grupos de actualización son solo cadenas que representan referencias de los miembros de la flota. Por lo tanto, si todos los miembros de la flota con referencias a un grupo de actualizaciones común se eliminan, ese grupo de actualizaciones específico deja de existir también.
Asignación de clústeres para actualizar grupos
Asigne al grupo al agregar un clúster miembro a la flota
En Azure Portal, vaya al recurso de Azure Kubernetes Fleet Manager.
En el menú del servicio, en Configuración, seleccione Clústeres de miembros>Agregar.
Seleccione el clúster que desea agregar y, a continuación, seleccione Siguiente: revisar y agregar.
Escriba el nombre del grupo de actualizaciones al que desea asignar el clúster y, a continuación, seleccione Agregar.
Asigne un clúster miembro a un grupo de actualización al agregar el clúster miembro a la flota mediante el comando az fleet member create con el parámetro --update-group establecido en el nombre del grupo de actualización.
az fleet member create \
--resource-group $GROUP \
--fleet-name $FLEET \
--name member1 \
--member-cluster-id $CLUSTERID \
--update-group group-1a
Asignar un miembro de flota existente a un grupo de actualizaciones
En Azure Portal, vaya al recurso de Azure Kubernetes Fleet Manager.
En el menú del servicio, en Configuración, seleccione Clústeres de miembros.
Seleccione los clústeres que desea asignar a un grupo de actualización y luego seleccione Asignar grupo de actualización
Escriba el nombre del grupo de actualizaciones al que desea asignar el clúster y, a continuación, seleccione Asignar.
Asigne un miembro de flota existente a un grupo de actualizaciones mediante el comando az fleet member update con la marca --update-group establecida en el nombre del grupo de actualizaciones.
az fleet member update \
--resource-group $GROUP \
--fleet-name $FLEET \
--name member1 \
--update-group group-1
Creación de una estrategia de actualización
Una estrategia de actualización consta de una o varias fases, donde una fase puede contener uno o varios grupos de actualizaciones.
En Azure Portal, vaya al recurso de Azure Kubernetes Fleet Manager.
En el menú de servicios, en Configuración, seleccione Actualización de varios clústeres>Estrategias, y a continuación, Crear.
Escriba un nombre para la estrategia.
La primera vez que vea la página, se muestra un diagrama de explicación de la estrategia de actualización que puede ayudar a visualizar cómo funcionan las estrategias.
Seleccione Crear fase y escriba:
- Nombre de la fase: asigne un nombre a la fase; debe ser único en todos los nombres de fase de la estrategia.
- (Opcional) Aprobaciones de fase: seleccione esta opción si desea esperar una aprobación antes de que se inicie esta fase o después de que se complete. Para obtener más información, consulte Agregar aprobaciones para actualizar grupos y fases.
- (Opcional) Pausar después de la fase: seleccione esta opción si desea definir una pausa antes de pasar a la siguiente fase.
- (Opcional) Pausar duración: seleccione una duración predefinida o escriba un valor personalizado en segundos.
Asigne uno o varios grupos de actualización a la fase y, a continuación, seleccione Crear.
Nota:
El número máximo de grupos de actualizaciones en cada fase de actualización es 50.
En este escenario, creamos fases y grupos para que coincidan con los detalles usados para el proceso de Azure Portal.
Cree un archivo JSON para definir las fases y grupos de la ejecución de la actualización. Las fases se ejecutan secuencialmente en el orden en que aparecen en el archivo JSON. Los grupos se ejecutan en paralelo dentro de cada fase, por lo que la ordenación no es importante. El siguiente archivo de ejemplo (example-stages.json) define una estrategia con dos fases e incluye
maxConcurrencyopciones ymaxAllowedFailuresopciones:{ "stages": [ { "name": "stage-1", "maxConcurrency": "7", "maxAllowedFailures": "2", "groups": [ { "name": "group-1", "maxConcurrency": "3", "maxAllowedFailures": "1" }, { "name": "group-2", "maxConcurrency": "50%", "maxAllowedFailures": "25%" } ], "afterStageWaitInSeconds": 300 }, { "name": "stage-2", "maxConcurrency": "100%", "maxAllowedFailures": "0", "groups": [ { "name": "group-3", "maxConcurrency": "2", "maxAllowedFailures": "0" } ] } ] }maxConcurrencyEl
maxConcurrencycampo es opcional y controla el número de clústeres que se pueden actualizar simultáneamente en el nivel de fase o grupo. Use un valor mayor para actualizar clústeres más rápido a través de la flota o un valor menor para un lanzamiento más controlado que limite el radio de explosión si surgen problemas.En este ejemplo,
stage-1asignamaxConcurrencya"7", lo que permite que hasta"7"clústeres en esta etapa se actualicen simultáneamente. Dentro destage-1,group-1limita la simultaneidad a los clústeres"3", lo que significa que hasta"3"en este grupo se pueden actualizar simultáneamente.group-2permite que los"50%"clústeres se actualicen simultáneamente (por ejemplo, si el grupo contiene 4 clústeres, hasta 2 pueden actualizarse al mismo tiempo).Los valores pueden ser un entero fijo (por ejemplo,
"3") o un porcentaje (por ejemplo,"100%"). Si se omite, el sistema aplica valores predeterminados. Para más información sobre cómo se resuelven estos valores y sus límites superiores, consulte Simultaneidad máxima (versión preliminar).maxAllowedFailuresEl campo
maxAllowedFailureses opcional y controla cuántos errores en la actualización de clústeres miembros se toleran antes de que el grupo o la fase se marque como fallido. De forma predeterminada (cuando no se establece o"0"), un único error detiene toda la ejecución de la actualización.Esta configuración solo evalúa el recuento de errores. No aplica una tasa de éxito mínima. Por lo tanto, un grupo o una fase pueden, por tanto, finalizar en
Completedincluso si algunos o todos sus miembros hayan fallado, siempre que no se hubiera superado el umbral de fallos cuando Fleet tomó sus decisiones de planificación.En este ejemplo,
stage-1configuramaxAllowedFailuresen"2", tolerando hasta dos fallos de miembros en toda la fase. Dentro destage-1,group-1tolera el fallo de"1"ygroup-2tolera el fallo de"25%"de sus miembros (por ejemplo, si el grupo contiene 4 clústeres, se tolera hasta 1 fallo).stage-2establecemaxAllowedFailuresa"0", lo que significa que cualquier fallo detiene inmediatamente la ejecución y suele ser útil en fases de producción.Para la mayoría de los despliegues, es preferible usar valores porcentuales porque se adaptan mejor a distintos tamaños de grupo. Evite establecer el valor igual al recuento total de miembros, a menos que desee de forma intencionada un comportamiento de "nunca falla" para ese segmento.
Los valores pueden ser un entero fijo (por ejemplo,
"3") o un porcentaje (por ejemplo,"25%"). Para más información sobre cómo se resuelven estos valores, consulte Errores máximos permitidos (versión preliminar).Cree una nueva estrategia de actualización con el comando
az fleet updatestrategy createcon la marca--stagesestablecida en el nombre del archivo JSON.az fleet updatestrategy create \ --resource-group $GROUP \ --fleet-name $FLEET \ --name $STRATEGY \ --stages example-stages.json
Pasos siguientes
Puede usar una estrategia de actualización como parte de una ejecución de actualización manual o un perfil de actualización automática. Vea:
- Procedimientos: Actualización de varios clústeres mediante la actualización de Kubernetes Fleet Manager se ejecuta.
- Procedimiento para agregar aprobaciones a estrategias de actualización de Fleet Manager de Azure Kubernetes.
- Procedimientos: actualice automáticamente varios clústeres mediante Kubernetes Fleet Manager.
- Preguntas más frecuentes sobre las actualizaciones de varios clústeres.