Cuando instalas una versión nueva de bmctl
, puedes actualizar los clústeres existentes que se crearon con una versión anterior. La actualización de un clúster a la versión más reciente de Google Distributed Cloud agrega funciones y correcciones adicionales a tu clúster. También garantiza que tu clúster permanezca compatible.
Puedes actualizar los clústeres de administrador, híbrido, independiente o de usuario con el comando bmctl upgrade cluster
o usar kubectl
.
Para obtener más información sobre el proceso de actualización y las reglas de control de versiones, consulta Ciclo de vida y etapas de las actualizaciones de clústeres.
Esta página está destinada a administradores, arquitectos y operadores que administran el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud, consulta Tareas y roles comunes de los usuarios de GKE Enterprise.
Planifica la actualización
En esta sección, se incluye información y vínculos a información que debes tener en cuenta antes de actualizar un clúster. Para obtener más información sobre las actualizaciones, incluidas las reglas de control de versiones para clústeres y grupos de nodos, consulta Ciclo de vida y etapas de las actualizaciones de clústeres.
Prácticas recomendadas
Para obtener información que te ayude a prepararte para una actualización de clúster, consulta Prácticas recomendadas para las actualizaciones de clústeres de Google Distributed Cloud.
Verificaciones previas a la actualización
Las verificaciones previas se ejecutan como parte de la actualización del clúster para validar el estado de los clústeres y los nodos. La actualización del clúster no continúa si las verificaciones previas fallan. Para obtener más información sobre las verificaciones previas, consulta Comprende las verificaciones previas.
Para verificar si los clústeres están listos para una actualización, ejecuta la verificación preliminar antes de ejecutar la actualización. Para obtener más información, consulta Verificaciones previas a la actualización.
Problemas conocidos
Para obtener información sobre posibles problemas relacionados con las actualizaciones de clústeres, consulta Problemas conocidos de Google Distributed Cloud para Bare Metal y selecciona la categoría de problemas Actualizaciones.
Configura las opciones de actualización
Antes de comenzar una actualización de clúster, puedes configurar las siguientes opciones de actualización que controlan el funcionamiento del proceso de actualización:
Actualizaciones selectivas de grupos de nodos trabajadores: Actualiza grupos de nodos trabajadores específicos por separado del resto del clúster.
Actualizaciones en paralelo: Configura el proceso de actualización para actualizar grupos de nodos o grupos de nodos de forma simultánea.
Estas opciones pueden reducir el riesgo de interrupciones en las aplicaciones y los servicios críticos, y reducir significativamente el tiempo de actualización general. Estas opciones son especialmente útiles para clústeres grandes con numerosos nodos y grupos de nodos que ejecutan cargas de trabajo importantes. Para obtener más información sobre lo que hacen estas opciones y cómo usarlas, consulta las siguientes secciones.
Actualizaciones selectivas de grupos de nodos trabajadores
De forma predeterminada, la operación de actualización del clúster actualiza todos los nodos y grupos de nodos del clúster. Una actualización de clúster puede ser disruptiva y llevar mucho tiempo, ya que cada nodo se vacía y todos los pods asociados se reinician y se reprograman. En esta sección, se describe cómo puedes incluir o excluir grupos de nodos trabajadores seleccionados para una actualización de clúster para minimizar las interrupciones de la carga de trabajo. Esta función solo se aplica a los clústeres de usuario, híbridos y autónomos, ya que los clústeres de administrador no permiten grupos de nodos trabajadores.
Puedes usar actualizaciones de grupos de nodos selectivos en las siguientes situaciones:
Para aplicar correcciones de seguridad sin interrumpir las cargas de trabajo: Puedes actualizar solo los nodos del plano de control (y los nodos del balanceador de cargas) para aplicar correcciones de vulnerabilidades de Kubernetes sin interrumpir los grupos de nodos trabajadores.
Para confirmar el funcionamiento correcto de un subconjunto actualizado de nodos trabajadores antes de actualizar todos los nodos trabajadores: Puedes actualizar tus grupos de nodos trabajadores de forma selectiva para asegurarte de que las cargas de trabajo se ejecuten correctamente en un grupo de nodos actualizado antes de actualizar otro grupo de nodos.
Para reducir el período de mantenimiento: La actualización de un clúster grande puede llevar mucho tiempo y es difícil predecir con precisión cuándo se completará una actualización. El tiempo de actualización del clúster es proporcional a la cantidad de nodos que se actualizarán. Si excluyes los grupos de nodos, se reduce la cantidad de nodos que se actualizan, lo que reduce el tiempo de actualización. Realizas actualizaciones varias veces, pero los períodos de mantenimiento más pequeños y predecibles pueden ayudarte con la programación.
Sesgo de versión de grupo de nodos de dos versiones secundarias
En el caso de los clústeres de la versión 1.28 y versiones posteriores, la versión de un grupo de nodos trabajadores puede tener hasta dos versiones secundarias anteriores a la versión del clúster (plano de control). Con la compatibilidad con el sesgo de versiones de n-2, también puedes omitir una versión de actualización menor de lanzamiento cuando actualizas un grupo de nodos trabajadores de dos versiones secundarias anteriores al clúster a la misma versión secundaria que el clúster.
Esta compatibilidad con el sesgo de versión n-2 para los grupos de nodos trabajadores te brinda más flexibilidad para planificar las actualizaciones de tu flota.
Por ejemplo, si tienes un clúster de la versión 1.30, puedes tener grupos de nodos trabajadores en las versiones 1.30, 1.29 y 1.28 seleccionadas.
Antes de poder actualizar un clúster, todos los grupos de nodos trabajadores deben tener una versión que sea compatible con la versión actual del clúster y la versión de destino.
Por ejemplo, si tienes un clúster en la versión 1.29 y grupos de nodos trabajadores en las versiones 1.29, 1.28 y 1.16, debes actualizar los grupos de nodos de la versión 1.16 a la versión 1.28 o 1.29 antes de poder actualizar el clúster a la versión 1.30.
Para obtener más información, incluidas las listas de versiones de grupos de nodos trabajadores compatibles con una versión determinada del clúster (aplicable a la versión 1.29 y versiones anteriores), consulta Reglas de control de versiones de grupos de nodos.
1.30
En la versión 1.30, la compatibilidad con la versión n-2 de los grupos de nodos trabajadores es de disponibilidad general para todos los tipos de clústeres. Esta función está habilitada de forma predeterminada para los clústeres de la versión 1.30.
Los grupos de nodos de cualquier versión de parche de las versiones secundarias 1.28 y 1.29 se pueden actualizar a cualquier versión de parche de 1.30, si la versión del grupo de nodos es la misma o inferior a la del clúster.
1.29
En la versión 1.29, la compatibilidad con la versión n-2 de los grupos de nodos trabajadores es la versión GA para todos los tipos de clústeres. Esta función está habilitada de forma predeterminada para los clústeres de la versión 1.29.
A medida que llevamos esta función de la versión preliminar pública a la versión general, los clústeres híbridos aún requieren la anotación de vista previa en la siguiente situación. Si tienes un clúster híbrido de la versión 1.28.x con un grupo de nodos trabajadores de la versión 1.16.y, debes agregar la anotación preview.baremetal.cluster.gke.io/two-minor-version-node-pool: enable
al clúster antes de actualizarlo a la versión 1.29.z:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: baremetal-demo
namespace: cluster-baremetal-demo
annotations:
preview.baremetal.cluster.gke.io/two-minor-version-node-pool: enable
spec:
type: hybrid
profile: default
anthosBareMetalVersion: 1.28.400-gke.77
...
1.28
La compatibilidad con la versión n-2 para grupos de nodos trabajadores está disponible en la versión preliminar de la versión 1.28. Para habilitar esta
función de vista previa, agrega la
anotación preview.baremetal.cluster.gke.io/two-minor-version-node-pool: enable
al archivo de configuración del clúster:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: baremetal-demo
namespace: cluster-baremetal-demo
annotations:
preview.baremetal.cluster.gke.io/two-minor-version-node-pool: enable
spec:
...
Si no habilitas esta función de la versión preliminar, el sesgo de versiones máximo entre un grupo de nodos trabajadores y el clúster es de una versión menor.
Para obtener más información sobre las reglas de control de versiones para actualizar de forma selectiva los grupos de nodos de trabajo, consulta Reglas de control de versiones de grupos de nodos en Ciclo de vida y etapas de las actualizaciones de clústeres.
Actualiza el plano de control del clúster y los grupos de nodos seleccionados
Para actualizar de forma selectiva los grupos de nodos trabajadores en la actualización inicial del clúster, haz lo siguiente:
En el caso de los grupos de nodos trabajadores que deseas incluir en la actualización del clúster, realiza uno de los siguientes cambios en la especificación de NodePool:
- Establece
anthosBareMetalVersion
en la especificación de NodePool en la versión de actualización de destino del clúster. - Omite el campo
anthosBareMetalVersion
de la especificación de NodePool o configúralo en la cadena vacía. De forma predeterminada, los grupos de nodos trabajadores se incluyen en las actualizaciones de clústeres.
- Establece
Para los grupos de nodos trabajadores que deseas excluir de la actualización, establece
anthosBareMetalVersion
en la versión actual (anterior a la actualización) del clúster:Continúa con la actualización como se describe en Inicia la actualización del clúster.
La operación de actualización del clúster actualiza los siguientes nodos:
- Nodos del plano de control del clúster
- Grupo de nodos del balanceador de cargas, si tu clúster usa uno (
spec.loadBalancer.nodePoolSpec
). De forma predeterminada, los nodos del balanceador de cargas pueden ejecutar cargas de trabajo normales. No puedes actualizar de forma selectiva un grupo de nodos del balanceador de cargas, ya que siempre se incluye en la actualización inicial del clúster. - Los grupos de nodos trabajadores que no se excluyeron de la actualización
Por ejemplo, supongamos que tu clúster está en la versión 1.29.0 y
tiene dos grupos de nodos trabajadores: wpool01
y wpool02
. Además, supongamos que deseas actualizar el plano de control y wpool01
a la versión 1.30.100-gke.96, pero deseas que wpool02
permanezca en la versión 1.29.0.
En el siguiente extracto del archivo de configuración del clúster, se muestra cómo puedes modificar la configuración del clúster para admitir esta actualización parcial:
...
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: user001
namespace: cluster-user001
spec:
type: user
profile: default
anthosBareMetalVersion: 1.30.100-gke.96
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: wpool01
namespace: cluster-user001
spec:
clusterName: user001
anthosBareMetalVersion: 1.30.100-gke.96
nodes:
- address: 10.200.0.1
- address: 10.200.0.2
- address: 10.200.0.3
...
- address: 10.200.0.8
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: wpool02
namespace: cluster-user001
spec:
clusterName: user001
anthosBareMetalVersion: 1.29.0
nodes:
- address: 10.200.1.1
- address: 10.200.1.2
- address: 10.200.1.3
...
- address: 10.200.1.12
Actualiza los grupos de nodos a la versión actual del clúster
Si excluiste grupos de nodos de una actualización de clúster, puedes ejecutar una actualización de clúster que los actualice a la versión de destino. Los grupos de nodos trabajadores que se excluyeron de una actualización de clúster tienen el campo anthosBareMetalVersion
en su especificación NodePool
establecido en la versión anterior del clúster (antes de la actualización).
Para actualizar los grupos de nodos trabajadores a la versión actual y actualizada del clúster, haz lo siguiente:
Edita las especificaciones de
NodePool
en el archivo de configuración del clúster para los grupos de nodos trabajadores que deseas actualizar a la versión actual del clúster. EstableceanthosBareMetalVersion
en la versión actual del clúster (después de la actualización).Si se seleccionan varios grupos de nodos trabajadores para la actualización, el valor de
spec.nodePoolUpgradeStrategy.concurrentNodePools
en la especificación del clúster determina cuántos grupos de nodos se actualizan en paralelo, si los hay. Si no deseas actualizar los grupos de nodos trabajadores de forma simultánea, selecciona un grupo de nodos a la vez para actualizarlo.Continúa con la actualización como se describe en Inicia la actualización del clúster.
La operación de actualización del clúster solo actualiza los grupos de nodos trabajadores previamente excluidos para los que configuraste
anthosBareMetalVersion
a la versión actual y actualizada del clúster.
Por ejemplo, supongamos que actualizaste tu clúster a la versión 1.30.100-gke.96, pero el grupo de nodos wpool02
aún está en la versión anterior del clúster, 1.29.0. Las cargas de trabajo se ejecutan correctamente en el grupo de nodos actualizado, wpool01
, por lo que ahora también quieres actualizar wpool02
a la versión actual del clúster. Para actualizar wpool02
, puedes quitar el campo anthosBareMetalVersion
o establecer su valor en la cadena vacía.
En el siguiente extracto del archivo de configuración del clúster, se muestra cómo puedes modificar la configuración del clúster para admitir esta actualización parcial:
...
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: user001
namespace: cluster-user001
spec:
type: user
profile: default
anthosBareMetalVersion: 1.30.100-gke.96
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: wpool01
namespace: cluster-user001
spec:
clusterName: user001
anthosBareMetalVersion: 1.30.100-gke.96
nodes:
- address: 10.200.0.1
- address: 10.200.0.2
- address: 10.200.0.3
...
- address: 10.200.0.8
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: wpool02
namespace: cluster-user001
spec:
clusterName: user001
anthosBareMetalVersion: ""
nodes:
- address: 10.200.1.1
- address: 10.200.1.2
- address: 10.200.1.3
...
- address: 10.200.1.12
Revierte la actualización de un grupo de nodos
Hay muchas dependencias, como la compatibilidad con kubelet o complementos, que pueden afectar el rendimiento de tus cargas de trabajo. En caso de que encuentres un problema después de actualizar un grupo de nodos trabajadores, puedes revertirlo a su versión anterior.
Esta función no se encuentra en la misma fase de lanzamiento para todas las versiones de clústeres compatibles:
1.30
Para los clústeres de la versión 1.30 (clúster con nodos de plano de control en la versión 1.30), la función de reversión del grupo de nodos es de versión general y está habilitada de forma predeterminada.
1.29
La función de reversión de grupos de nodos está disponible en versión beta para los clústeres de la versión 1.29 (clúster con nodos de plano de control en la versión 1.29). Mientras esta función está en versión preliminar, debes agregar la siguiente anotación al recurso Cluster
para habilitarla:
preview.baremetal.cluster.gke.io/worker-node-pool-upgrade-rollback: enable
1.28
La función de reversión del grupo de nodos no está disponible para los clústeres con la versión menor 1.28 o versiones anteriores.
Para revertir una actualización de un grupo de nodos, sigue estos pasos:
bmctl
Cuando usas bmctl
para revertir una actualización de un grupo de nodos, editas el archivo de configuración del clúster y aplicas los cambios con el comando bmctl update
:
Edita las especificaciones de
NodePool
en el archivo de configuración del clúster para los grupos de nodos trabajadores que deseas revertir a la versión anterior. EstableceanthosBareMetalVersion
en la versión anterior (previa a la actualización) del clúster.... --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: wpool01 namespace: cluster-user001 spec: clusterName: user001 anthosBareMetalVersion: 1.29.600-gke.108 nodes: - address: 10.200.0.1 - address: 10.200.0.2 - address: 10.200.0.3 ...
Si se seleccionan varios grupos de nodos trabajadores para la reversión, el valor de
spec.nodePoolUpgradeStrategy.concurrentNodePools
en la especificación del clúster determina cuántos grupos de nodos se revierten en paralelo. Si no quieres revertir los grupos de nodos trabajadores de forma simultánea, selecciona un grupo de nodos a la vez para la reversión o actualiza la configuración denodePoolUpgradeStrategy
. Del mismo modo, el valor despec.upgradeStrategy.parallelUpgrade.concurrentNodes
en la especificaciónNodePool
determina cuántos nodos se revierten en paralelo.Usa
bmctl update
para aplicar los cambios en la especificación deNodePool
:bmctl update cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
Reemplaza lo siguiente:
CLUSTER_NAME
: Es el nombre del clúster que deseas actualizar.ADMIN_KUBECONFIG
: Es la ruta de acceso del archivo kubeconfig del clúster de administración (administrador, híbrido o independiente).
La reversión comienza automáticamente. El comando
bmctl update cluster
se cierra de inmediato, pero la reversión sigue progresando. No realices ninguna otra operación en el clúster mientras la reversión esté en curso.A medida que se ejecuta la reversión, Google Distributed Cloud realiza las siguientes actividades para cada nodo:
- Coloca el nodo en modo de mantenimiento.
- Ejecuta un trabajo de restablecimiento en el nodo para que vuelva a un estado inicial.
- Ejecuta las verificaciones previas a la activación de la máquina en el nodo.
- Ejecuta un trabajo de inicialización de la máquina en el nodo para volver a instalarlo en la versión de reversión (previa a la actualización) objetivo.
- Quita el nodo del modo de mantenimiento.
Al final de una reversión correcta, el valor de
nodePool.status.anthosBareMetalVersion
en el recursoNodePool
se establece en la versión de reversión objetivo.
kubectl
Puedes revertir una actualización de grupo de nodos con kubectl
para editar el recurso NodePool
directamente:
Para revertir un grupo de nodos trabajador, abre el recurso
NodePool
para editarlo:kubectl edit nodepool NODE_POOL_NAME \ --namespace CLUSTER_NAMESPACE \ --kubeconfig ADMIN_KUBECONFIG
Reemplaza lo siguiente:
NODE_POOL_NAME
: Es el nombre del grupo de nodos que revertirás.CLUSTER_NAMESPACE
: Es el nombre del espacio de nombres en el que se implementa el grupo de nodos. Este es el espacio de nombres del clúster.ADMIN_KUBECONFIG
: Es la ruta de acceso del archivo kubeconfig del clúster de administración (administrador, híbrido o independiente).
Cambia el valor de
spec.anthosBareMetalVersion
a la versión anterior (antes de la actualización).... --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: wpool01 namespace: cluster-user001 spec: clusterName: user001 anthosBareMetalVersion: 1.29.600-gke.108 nodes: - address: 10.200.0.1 - address: 10.200.0.2 - address: 10.200.0.3 ...
Guarda y cierra el recurso
NodePool
en el editor.La reversión comienza automáticamente. No realices ninguna otra operación en el clúster mientras la reversión esté en curso.
A medida que se ejecuta la reversión, Google Distributed Cloud realiza las siguientes actividades para cada nodo:
- Coloca el nodo en modo de mantenimiento.
- Ejecuta un trabajo de restablecimiento en el nodo para que vuelva a un estado inicial.
- Ejecuta las verificaciones previas a la activación de la máquina en el nodo.
- Ejecuta un trabajo de inicialización de la máquina en el nodo para volver a instalarlo en la versión de reversión (previa a la actualización) objetivo.
- Quita el nodo del modo de mantenimiento.
Al final de una reversión correcta, el valor de
nodePool.status.anthosBareMetalVersion
en el recursoNodePool
se establece en la versión de reversión objetivo.
Actualizaciones en paralelo
En una actualización de clúster típica y predeterminada, cada nodo del clúster se actualiza de manera secuencial, uno tras otro. En esta sección, se muestra cómo configurar el clúster y los grupos de nodos trabajador para que varios nodos se actualicen en paralelo cuando actualices el clúster. La actualización de nodos en paralelo acelera las actualizaciones de clústeres significativamente, en especial para los clústeres que tienen cientos de nodos.
Existen dos estrategias de actualización en paralelo que puedes usar para acelerar la actualización del clúster:
Actualización de nodos simultánea: Puedes configurar tus grupos de nodos trabajadores para que varios nodos se actualicen en paralelo. Las actualizaciones en paralelo de los nodos se configuran en la especificación de NodePool (
spec.upgradeStrategy.parallelUpgrade
) y solo los nodos de un grupo de nodos trabajadores se pueden actualizar en paralelo. Los nodos de los grupos de nodos del plano de control o del balanceador de cargas solo se pueden actualizar de a uno a la vez. Para obtener más información, consulta Estrategia de actualización de nodos.Actualización simultánea de grupos de nodos: Puedes configurar tu clúster para que varios grupos de nodos se actualicen en paralelo. Solo los grupos de nodos trabajadores se pueden actualizar en paralelo. Los grupos de nodos del plano de control y del balanceador de cargas solo se pueden actualizar uno a la vez.
Estrategia de actualización de nodos
Puedes configurar grupos de nodos trabajadores para que varios nodos se actualicen de forma simultánea (concurrentNodes
). También puedes establecer un umbral mínimo para la cantidad de nodos que pueden ejecutar cargas de trabajo durante el proceso de actualización (minimumAvailableNodes
). Esta configuración se realiza en la especificación de NodePool. Para obtener más información sobre estos campos, consulta la referencia de campos de configuración de clústeres.
La estrategia de actualización de nodos solo se aplica a los grupos de nodos trabajadores. No puedes especificar una estrategia de actualización de nodos para grupos de nodos del balanceador de cargas o del plano de control. Durante una actualización del clúster, los nodos del plano de control y los grupos de nodos del balanceador de cargas se actualizan
de forma secuencial, uno a la vez. Los grupos de nodos del plano de control y los grupos de nodos del
balanceador de cargas se especifican en la especificación del clúster (controlPlane.nodePoolSpec.nodes
y
loadBalancer.nodePoolSpec.nodes
).
Cuando configures actualizaciones en paralelo para los nodos, ten en cuenta las siguientes restricciones:
El valor de
concurrentNodes
no puede exceder el 50% de la cantidad de nodos en el grupo de nodos ni el número fijo 15, lo que sea menor. Por ejemplo, si tu grupo de nodos tiene 20 nodos, no puedes especificar un valor superior a 10. Si tu grupo de nodos tiene 100 nodos, 15 es el valor máximo que puedes especificar.Cuando usas
concurrentNodes
junto conminimumAvailableNodes
, los valores combinados no pueden superar la cantidad total de nodos en el grupo de nodos. Por ejemplo, si tu grupo de nodos tiene 20 nodos yminimumAvailableNodes
está configurado en 18,concurrentNodes
no puede superar los 2. Del mismo modo, siconcurrentNodes
se establece en 10,minimumAvailableNodes
no puede superar los 10.
En el siguiente ejemplo, se muestra un grupo de nodos trabajadores np1
con 10 nodos. En una actualización, los nodos se actualizan 5 a la vez y deben permanecer al menos 4 nodos disponibles para que se realice la actualización:
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: np1
namespace: cluster-cluster1
spec:
clusterName: cluster1
nodes:
- address: 10.200.0.1
- address: 10.200.0.2
- address: 10.200.0.3
- address: 10.200.0.4
- address: 10.200.0.5
- address: 10.200.0.6
- address: 10.200.0.7
- address: 10.200.0.8
- address: 10.200.0.9
- address: 10.200.0.10
upgradeStrategy:
parallelUpgrade:
concurrentNodes: 5
minimumAvailableNodes: 4
Estrategia de actualización del grupo de nodos
Puedes configurar un clúster para que varios grupos de nodos trabajadores se actualicen en
paralelo. El campo booleano nodePoolUpgradeStrategy.concurrentNodePools
en la especificación del clúster especifica si se deben actualizar o no todos los grupos de nodos trabajadores de un clúster de forma simultánea. De forma predeterminada (1
), los grupos de nodos se actualizan
de manera secuencial, uno tras otro. Cuando estableces concurrentNodePools
en 0
, cada grupo de nodos trabajadores del clúster se actualiza en paralelo.
El plano de control y los grupos de nodos de balanceo de cargas no se ven afectados por este parámetro de configuración.
Estos grupos de nodos siempre se actualizan de forma secuencial, uno a la vez. Los grupos de nodos del plano de control y los grupos de nodos del balanceador de cargas se especifican en la especificación del clúster (controlPlane.nodePoolSpec.nodes
y loadBalancer.nodePoolSpec.nodes
).
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
...
nodePoolUpgradeStrategy:
concurrentNodePools: 0
...
Cómo realizar una actualización en paralelo
En esta sección, se describe cómo configurar un clúster y un grupo de nodos trabajadores para las actualizaciones en paralelo.
Para realizar una actualización en paralelo de los grupos de nodos y los nodos trabajadores en un grupo de nodos trabajadores, haz lo siguiente:
Agrega una sección
upgradeStrategy
a la especificación de NodePool.Puedes aplicar este manifiesto por separado o como parte del archivo de configuración del clúster cuando realices una actualización del clúster.
A continuación, se presenta un ejemplo:
--- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: np1 namespace: cluster-ci-bf8b9aa43c16c47 spec: clusterName: ci-bf8b9aa43c16c47 nodes: - address: 10.200.0.1 - address: 10.200.0.2 - address: 10.200.0.3 ... - address: 10.200.0.30 upgradeStrategy: parallelUpgrade: concurrentNodes: 5 minimumAvailableNodes: 10
En este ejemplo, el valor del campo
concurrentNodes
es5
, lo que significa que 5 nodos se actualizan en paralelo. El campominimumAvailableNodes
se establece en10
, lo que significa que al menos 10 nodos deben permanecer disponibles para las cargas de trabajo durante la actualización.Agrega una sección
nodePoolUpgradeStrategy
a la especificación del clúster en el archivo de configuración del clúster.--- apiVersion: v1 kind: Namespace metadata: name: cluster-user001 --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user001 namespace: cluster-user001 spec: type: user profile: default anthosBareMetalVersion: 1.30.100-gke.96 ... nodePoolUpgradeStrategy: concurrentNodePools: 0 ...
En este ejemplo, el campo
concurrentNodePools
se establece en0
, lo que significa que todos los grupos de nodos trabajadores se actualizan de forma simultánea durante la actualización del clúster. La estrategia de actualización de los nodos en los grupos de nodos se define en las especificaciones de NodePool.Actualiza el clúster como se describe en la sección anterior Actualiza clústeres de administrador, independiente, híbrido o de usuario.
Valores predeterminados de la actualización en paralelo
Las actualizaciones en paralelo están inhabilitadas de forma predeterminada, y los campos relacionados con ellas son mutables. Puedes quitar los campos o establecerlos en sus valores predeterminados para inhabilitar la función antes de una actualización posterior en cualquier momento.
En la siguiente tabla, se enumeran los campos de actualización en paralelo y sus valores predeterminados:
Campo | Valor predeterminado | Significado |
---|---|---|
nodePoolUpgradeStrategy.concurrentNodePools (Especificación del clúster) |
1 |
Actualiza los grupos de nodos trabajadores de forma secuencial, uno tras otro. |
upgradeStrategy.parallelUpgrade.concurrentNodes (especificación de NodePool) |
1 |
Actualiza los nodos de forma secuencial, uno tras otro. |
upgradeStrategy.parallelUpgrade.minimumAvailableNodes (especificación de NodePool) |
El valor predeterminado de minimumAvailableNodes depende del valor de concurrentNodes .
|
La actualización se detiene una vez que se alcanza minimumAvailableNodes y solo continúa una vez que la cantidad de nodos disponibles es mayor que minimumAvailableNodes . |
Inicia la actualización del clúster
Esta sección contiene instrucciones para actualizar clústeres.
bmctl
Cuando descargas e instalas una versión nueva de bmctl
, puedes actualizar tus clústeres de administrador, híbridos, independientes y de usuario creados con una versión anterior.
Para una versión determinada de bmctl
, un clúster solo se puede actualizar a la misma versión.
Configura tus credenciales de usuario como credenciales predeterminadas de la aplicación (ADC):
gcloud auth application-default login
Sigue las indicaciones para seleccionar tu Cuenta de Google para ADC. Para obtener más información, consulta Configura credenciales predeterminadas de la aplicación.
Descarga la versión más reciente de
bmctl
como se describe en Descargas de Google Distributed Cloud.Actualiza
anthosBareMetalVersion
en el archivo de configuración del clúster a la versión de destino de la actualización.La versión de destino de la actualización debe coincidir con la versión del archivo
bmctl
descargado. En el siguiente fragmento del archivo de configuración del clúster, se muestra el campoanthosBareMetalVersion
actualizado a la versión más reciente:--- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: cluster1 namespace: cluster-cluster1 spec: type: admin # Anthos cluster version. anthosBareMetalVersion: 1.30.100-gke.96
Usa el comando de
bmctl upgrade cluster
para completar la actualización:bmctl upgrade cluster -c CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clúster que se actualizaráADMIN_KUBECONFIG
es la ruta al archivo kubeconfig del clúster de administrador.
La operación de actualización del clúster ejecuta verificaciones previas para validar el estado del clúster y el estado de los nodos. La actualización del clúster no continúa si las verificaciones previas fallan. Para obtener información sobre la solución de problemas, consulta Soluciona problemas de instalación o actualización de clústeres.
Cuando todos los componentes del clúster se hayan actualizado correctamente, la operación de actualización del clúster realizará verificaciones de estado del clúster. Este último paso verifica que el clúster esté en buenas condiciones de funcionamiento. Si el clúster no aprueba todas las verificaciones de estado, estas se seguirán ejecutando hasta que lo hagan. Cuando todas las verificaciones de estado se aprueben, la actualización finalizará correctamente.
Para obtener más información sobre la secuencia de eventos de las actualizaciones de clústeres, consulta Ciclo de vida y etapas de las actualizaciones de clústeres.
kubectl
Para actualizar un clúster con kubectl
, sigue estos pasos:
Edita el archivo de configuración del clúster para establecer
anthosBareMetalVersion
en la versión de destino de la actualización.Para iniciar la actualización, ejecuta el siguiente comando:
kubectl apply -f CLUSTER_CONFIG_PATH
Reemplaza
CLUSTER_CONFIG_PATH
por la ruta de acceso del archivo de configuración del clúster editado.Al igual que con el proceso de actualización con
bmctl
, las verificaciones previas se ejecutan como parte de la actualización del clúster para validar el estado del clúster y el estado del nodo. Si las comprobaciones previas fallan, la actualización del clúster se detiene. Para solucionar cualquier error, examina el clúster y los registros relacionados, ya que no se crea ningún clúster de arranque. Para obtener más información, consulta Cómo solucionar problemas de instalación o actualización de clústeres.
Aunque no necesitas la versión más reciente de bmctl
para actualizar con kubectl
, te recomendamos descargar la versión más reciente de bmctl
. Necesitas bmctl
para realizar otras tareas, como verificaciones de estado y copias de seguridad, a fin de asegurarte de que el clúster funcione correctamente.
Cómo pausar y reanudar actualizaciones
La función de pausa y reanudación de la actualización te permite pausar una actualización de clúster antes de que finalice. Cuando se pausa una actualización de clúster, no se activan actualizaciones de nodos trabajadores nuevos hasta que se reanuda la actualización.
Esta función está disponible en (versión preliminar) para clústeres con todos los nodos del plano de control en la versión menor 1.28 o una posterior. La función está disponible para todos los clústeres con todos los nodos del plano de control en la versión secundaria 1.29 o una posterior.
Es posible que quieras pausar una actualización por los siguientes motivos:
Detectaste un problema con las cargas de trabajo del clúster durante la actualización y quieres pausarla para investigar el problema
Tienes períodos de mantenimiento cortos, por lo que deseas pausar la actualización entre ellos
Mientras se pausa una actualización de clúster, se admiten las siguientes operaciones:
- Cómo agregar o quitar nodos
- Agrega o quita grupos de nodos
- Aumenta el rango de la red de servicios
- Cómo restablecer un clúster a partir de una copia de seguridad
Cuando se agrega un nodo nuevo mientras una actualización está en pausa, los trabajos de verificación de máquinas no se ejecutan en él hasta que se reanuda y completa la actualización.
Mientras la actualización del clúster está en pausa, no se admiten las siguientes operaciones de clúster:
No puedes iniciar una nueva actualización de clúster mientras una actualización de clúster activa está detenida.
Cómo habilitar la pausa y la reanudación de la actualización
Google Distributed Cloud 1.30
La función de pausa y reanudación de la actualización está habilitada de forma predeterminada para los clústeres con todos los nodos del plano de control en la versión secundaria 1.29 o una posterior.
Google Distributed Cloud 1.29
Mientras la función de pausar y reanudar la actualización esté en versión preliminar, puedes habilitarla con una anotación en el recurso de clúster.
Para habilitar la pausa y la reanudación de la actualización, sigue estos pasos:
Agrega la sección
preview.baremetal.cluster.gke.io/upgrade-pause-and-resume
al archivo de configuración del clúster.apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: baremetal-demo namespace: cluster-baremetal-demo annotations: preview.baremetal.cluster.gke.io/upgrade-pause-and-resume spec: ...
Para aplicar el cambio, actualiza el clúster:
bmctl update CLUSTER_NAME
El campo
nodePoolUpgradeStrategy.pause
es mutable. Puedes agregarla y actualizarla en cualquier momento.
Cómo pausar una actualización
Para pausar una actualización de clúster, establece nodePoolUpgradeStrategy.pause
en true
en la especificación del clúster.
Para pausar una actualización de clúster activa, sigue estos pasos:
Agrega
nodePoolUpgradeStrategy.pause
al archivo de configuración del clúster y configúralo comotrue
:apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: baremetal-demo namespace: cluster-baremetal-demo ... spec: ... nodePoolUpgradeStrategy: pause: true ...
Si usaste
bmctl
para iniciar la actualización, necesitas una ventana de terminal nueva para realizar el siguiente paso.Para aplicar el cambio, actualiza el clúster:
bmctl update CLUSTER_NAME
La operación de actualización está pausada. No se activan actualizaciones de nodos nuevas.
Si usaste
bmctl
para iniciar la actualización y planeas una pausa prolongada, presiona Control + C para salir debmctl
. De lo contrario, manténbmctl
en ejecución.La CLI de
bmctl
no detecta cambios en el estado de pausa de la actualización, por lo que no se cierra automáticamente. Sin embargo, cuando sales debmctl
, se detiene el registro del progreso de la actualización en el archivo de registrocluster-upgrade-TIMESTAMP
en la carpeta del clúster de tu estación de trabajo de administrador y en Cloud Logging. Por lo tanto, para pausas breves, te recomendamos que mantengasbmctl
en ejecución. Si dejasbmctl
en ejecución durante un período prolongado mientras la actualización está pausada, se agota el tiempo de espera.
Cómo reanudar una actualización pausada
Para reanudar una actualización de clúster pausada, configura nodePoolUpgradeStrategy.pause
como false
en la especificación del clúster o quita nodePoolUpgradeStrategy.pause
de la especificación.
Para reanudar una actualización de clúster que se detuvo, sigue estos pasos:
Configura
nodePoolUpgradeStrategy.pause
en el archivo de configuración del clúster y configúralo comofalse
:apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: baremetal-demo namespace: cluster-baremetal-demo ... spec: ... nodePoolUpgradeStrategy: pause: false ...
Como alternativa, puedes quitar el campo
pause
, ya que su valor predeterminado esfalse
.Para aplicar el cambio, actualiza el clúster:
bmctl update CLUSTER_NAME
La operación de actualización se reanuda desde donde quedó.
Para verificar el estado de la actualización, primero obtén una lista de los recursos que tienen
anthosBareMetalVersion
en sustatus
:kubectl get RESOURCE --kubeconfig ADMIN_KUBECONFIG --all_namespaces
Reemplaza lo siguiente:
RESOURCE
: Es el nombre del recurso que deseas obtener. Los recursosCluster
,NodePool
yBareMetalMachine
contienen información de estado deanthosBareMetalVersion
.ADMIN_KUBECONFIG
: la ruta del archivo kubeconfig del clúster de administrador
En el siguiente ejemplo, se muestra el formato de la respuesta para los recursos personalizados de
BareMetalMachine
. CadaBareMetalMachine
corresponde a un nodo de clúster.NAMESPACE NAME CLUSTER READY INSTANCEID MACHINE ABM VERSION DESIRED ABM VERSION cluster-nuc-admin001 192.0.2.52 nuc-admin001 true baremetal://192.0.2.52 192.0.2.52 1.28.0 1.28.0 cluster-nuc-user001 192.0.2.53 nuc-user001 true baremetal://192.0.2.53 192.0.2.53 1.16.2 1.16.2 cluster-nuc-user001 192.0.2.54 nuc-user001 true baremetal://192.0.2.54 192.0.2.54 1.16.2 1.16.2
Para verificar el
status.anthosBareMetalVersion
(versión actual del recurso), recupera los detalles de los recursos individuales:kubectl describe RESOURCE RESOURCE_NAME \ --kubeconfig ADMIN_KUBECONFIG \ --namespace CLUSTER_NAMESPACE
En el siguiente ejemplo, se muestran los detalles de
BareMetalMachine
para el nodo del clúster con la dirección IP192.0.2.53
:Name: 192.0.2.53 Namespace: cluster-nuc-user001 ... API Version: infrastructure.baremetal.cluster.gke.io/v1 Kind: BareMetalMachine Metadata: Creation Timestamp: 2023-09-22T17:52:09Z ... Spec: Address: 192.0.2.53 Anthos Bare Metal Version: 1.16.2 ... Status: Anthos Bare Metal Version: 1.16.2
En este ejemplo, el nodo está en la versión 1.16.2 de Google Distributed Cloud.