22 System Upgrade Controller #
Consulte la documentación de System Upgrade Controller.
System Upgrade Controller (SUC) proporciona un controlador de actualización de uso general y nativo de Kubernetes (para nodos). Introduce una nueva CRD, llamada "plan", para definir todas sus políticas y requisitos de actualización. Un plan es una intención pendiente de mutar nodos en su clúster.
22.1 ¿Cómo se usa System Upgrade Controller en SUSE Edge? #
SUSE Edge usa SUC
para facilitar diversas operaciones de
"día 2" relacionadas con las actualizaciones de la versión del sistema
operativo y Kubernetes en los clústeres de gestión y descendentes.
Las operaciones de "día 2" se definen mediante planes de
SUC
. Según esos planes, SUC
despliega las
cargas de trabajo en cada nodo para ejecutar la operación correspondiente de
"día 2".
SUC
también se utiliza en Capítulo 23, Upgrade Controller. Para obtener más información
sobre las diferencias clave entre SUC y Upgrade Controller, consulte la
Sección 23.2, “Diferencias entre Upgrade Controller y System Upgrade Controller”.
22.2 Instalación de System Upgrade Controller #
A partir de la versión 2.10.0
de Rancher, System Upgrade Controller
se instala
automáticamente.
Siga los pasos siguientes solo si su
entorno no está gestionado por Rancher, o
si su versión de Rancher es anterior a la 2.10.0
.
Se recomienda instalar SUC mediante Fleet (Capítulo 8, Fleet), situado en el repositorio suse-edge/fleet-examples.
Los recursos ofrecidos por el repositorio
suse-edge/fleet-examples
deben utilizarse siempre desde una versión válida
de fleet-examples.
Para determinar qué versión debe utilizar, consulte las Notas de la versión
(Sección 52.1, “Resumen”).
Si no puede utilizar Fleet para la instalación de SUC, puede instalarlo mediante el repositorio de charts de Helm de Rancher o incorporar el chart de Helm de Rancher en su propio flujo de trabajo de GitOps de terceros.
En esta sección se trata lo siguiente:
Instalación con Fleet (Sección 22.2.1, “Instalación de System Upgrade Controller con Fleet”)
Instalación con Helm (Sección 22.2.2, “Instalación de System Upgrade Controller con Helm”)
22.2.1 Instalación de System Upgrade Controller con Fleet #
Hay dos posibles recursos que se pueden usar para desplegar SUC mediante Fleet:
Recurso GitRepo: para casos de uso en los que se dispone de un servidor Git externo/local. Para obtener instrucciones de instalación, consulte la sección Instalación de System Upgrade Controller - GitRepo (Sección 22.2.1.1, “Instalación de System Upgrade Controller - GitRepo”).
Recurso Bundle: para casos de uso en entornos aislados que no admiten la opción de servidor Git local. Para obtener instrucciones de instalación, consulte la sección Instalación de System Upgrade Controller - Bundle (Sección 22.2.1.2, “Instalación de System Upgrade Controller - Bundle”).
22.2.1.1 Instalación de System Upgrade Controller - GitRepo #
Este proceso también se puede realizar a través de la interfaz de usuario de Rancher, si está disponible. Para obtener más información, consulte Accessing Fleet in the Rancher UI (Acceso a Fleet en la interfaz de Rancher).
En el clúster de gestión:
Determine en qué clústeres desea desplegar SUC. Para ello, despliegue un recurso
GitRepo
de SUC en el espacio de trabajo correcto de Fleet de su clúster de gestión. De forma predeterminada, Fleet tiene dos espacios de trabajo:fleet-local
: para recursos que deben desplegarse en el clúster de gestión.fleet-default
: para recursos que deben desplegarse en clústeres descendentes.Para obtener más información sobre los espacios de trabajo de Fleet, consulte la documentación original.
Despliegue el recurso
GitRepo
:Para desplegar SUC en el clúster de gestión:
kubectl apply -n fleet-local -f - <<EOF apiVersion: fleet.cattle.io/v1alpha1 kind: GitRepo metadata: name: system-upgrade-controller spec: revision: release-3.3.0 paths: - fleets/day2/system-upgrade-controller repo: https://github.com/suse-edge/fleet-examples.git EOF
Para desplegar SUC en los clústeres descendentes:
NotaAntes de desplegar el recurso que se indica a continuación, debe proporcionar una configuración válida para
targets
, de modo que Fleet sepa en qué clústeres descendentes debe desplegar su recurso. Para obtener más información sobre cómo realizar la asignación a clústeres descendentes, consulte Mapping to Downstream Clusters (Asignación a clústeres descendentes).kubectl apply -n fleet-default -f - <<EOF apiVersion: fleet.cattle.io/v1alpha1 kind: GitRepo metadata: name: system-upgrade-controller spec: revision: release-3.3.0 paths: - fleets/day2/system-upgrade-controller repo: https://github.com/suse-edge/fleet-examples.git targets: - clusterSelector: CHANGEME # Example matching all clusters: # targets: # - clusterSelector: {} EOF
Compruebe que el recurso
GitRepo
se ha desplegado:# Namespace will vary based on where you want to deploy SUC kubectl get gitrepo system-upgrade-controller -n <fleet-local/fleet-default> NAME REPO COMMIT BUNDLEDEPLOYMENTS-READY STATUS system-upgrade-controller https://github.com/suse-edge/fleet-examples.git release-3.3.0 1/1
Compruebe que System Upgrade Controller se ha desplegado:
kubectl get deployment system-upgrade-controller -n cattle-system NAME READY UP-TO-DATE AVAILABLE AGE system-upgrade-controller 1/1 1 1 2m20s
22.2.1.2 Instalación de System Upgrade Controller - Bundle #
Esta sección muestra cómo crear y desplegar un recurso
Bundle
a partir de una configuración estándar de Fleet
utilizando fleet-cli.
En un equipo con acceso de red, descargue
fleet-cli
:NotaAsegúrese de que la versión de fleet-cli que descargue coincida con la versión de Fleet que se ha desplegado en su clúster.
Para usuarios de Mac, hay una versión propia de fleet-cli.
Para usuarios de Linux y Windows, los binarios son recursos distintos para cada versión de Fleet.
Linux AMD:
curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/v0.12.2/fleet-linux-amd64
Linux ARM:
curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/v0.12.2/fleet-linux-arm64
Permita que
fleet-cli
se pueda ejecutar:chmod +x fleet-cli
Clone la versión de
suse-edge/fleet-examples
que desee usar:git clone -b release-3.3.0 https://github.com/suse-edge/fleet-examples.git
Diríjase a la instancia de Fleet de SUC, situada en el repositorio
fleet-examples
:cd fleet-examples/fleets/day2/system-upgrade-controller
Determine en qué clústeres desea desplegar SUC. Para ello, despliegue el Bundle de SUC en el espacio de trabajo correcto de Fleet dentro de su clúster de gestión. De forma predeterminada, Fleet tiene dos espacios de trabajo:
fleet-local
: para recursos que deben desplegarse en el clúster de gestión.fleet-default
: para recursos que deben desplegarse en clústeres descendentes.Para obtener más información sobre los espacios de trabajo de Fleet, consulte la documentación original.
Si tiene intención de desplegar SUC solo en clústeres descendentes, cree un archivo
targets.yaml
que coincida con los clústeres específicos:cat > targets.yaml <<EOF targets: - clusterSelector: CHANGEME EOF
Para obtener información sobre cómo realizar la asignación a clústeres descendentes, consulte Mapping to Downstream Clusters (Asignación a clústeres descendentes).
Cree el Bundle:
NotaAsegúrese de que no ha descargado fleet-cli en el directorio
fleet-examples/fleets/day2/system-upgrade-controller
, ya que, si fuera así, se empaquetaría con el Bundle, lo cual no es recomendable.Para desplegar SUC en su clúster de gestión, ejecute:
fleet-cli apply --compress -n fleet-local -o - system-upgrade-controller . > system-upgrade-controller-bundle.yaml
Para desplegar SUC en sus clústeres descendentes, ejecute:
fleet-cli apply --compress --targets-file=targets.yaml -n fleet-default -o - system-upgrade-controller . > system-upgrade-controller-bundle.yaml
Para obtener más información sobre este proceso, consulte la sección Convert a Helm Chart into a Bundle (Conversión de un chart de Helm en un Bundle).
Para obtener más información sobre el comando
fleet-cli apply
, consulte fleet apply.
Transfiera el Bundle
system-upgrade-controller-bundle.yaml
al equipo del clúster de gestión:scp system-upgrade-controller-bundle.yaml <machine-address>:<filesystem-path>
En el clúster de gestión, despliegue el Bundle
system-upgrade-controller-bundle.yaml
:kubectl apply -f system-upgrade-controller-bundle.yaml
En el clúster de gestión, compruebe que el Bundle está desplegado:
# Namespace will vary based on where you want to deploy SUC kubectl get bundle system-upgrade-controller -n <fleet-local/fleet-default> NAME BUNDLEDEPLOYMENTS-READY STATUS system-upgrade-controller 1/1
Según el espacio de trabajo de Fleet en el que haya desplegado su Bundle, diríjase al clúster y compruebe que SUC se ha desplegado:
NotaSUC siempre se despliega en el espacio de nombres cattle-system.
kubectl get deployment system-upgrade-controller -n cattle-system NAME READY UP-TO-DATE AVAILABLE AGE system-upgrade-controller 1/1 1 1 111s
22.2.2 Instalación de System Upgrade Controller con Helm #
Añada el repositorio de charts de Rancher:
helm repo add rancher-charts https://charts.rancher.io/
Despliegue el chart de SUC:
helm install system-upgrade-controller rancher-charts/system-upgrade-controller --version 106.0.0 --set global.cattle.psp.enabled=false -n cattle-system --create-namespace
Esto instalará la versión 0.15.2 de SUC, que es la que necesita la plataforma Edge 3.3.1.
Compruebe que SUC se ha desplegado:
kubectl get deployment system-upgrade-controller -n cattle-system NAME READY UP-TO-DATE AVAILABLE AGE system-upgrade-controller 1/1 1 1 37s
22.3 Supervisión de planes de System Upgrade Controller #
Los planes de SUC se pueden consultar de las siguientes maneras:
Mediante la interfaz de usuario de Rancher (Sección 22.3.1, “Supervisión de planes de System Upgrade Controller - Interfaz de usuario de Rancher”).
Manualmente dentro del clúster (Sección 22.3.2, “Supervisión de planes de System Upgrade Controller - Manual”).
Los pods desplegados para los planes de SUC se mantienen activos 15 minutos tras una ejecución correcta. Después, son eliminados por el trabajo correspondiente que los creó. Para tener acceso a los registros del pod después de este periodo de tiempo, debe habilitar el registro para su clúster. Para obtener información sobre cómo hacerlo en Rancher, consulte Rancher Integration with Logging Services (Integración de Rancher con servicios de registro).
22.3.1 Supervisión de planes de System Upgrade Controller - Interfaz de usuario de Rancher #
Para comprobar los registros del pod para el plan de SUC específico:
En la esquina superior izquierda, ☰ → <nombre-de-su-clúster>.
Seleccione Workloads → Pods (Cargas de trabajo > Pods).
Seleccione el menú desplegable
Only User Namespaces
(Solo espacios de nombres de usuario) y añada el espacio de nombrescattle-system
.En la barra de filtro Pod, escriba el nombre de su pod del plan de SUC. El nombre tendrá el siguiente formato:
apply-<nombre_plan>-on-<nombre_nodo>
.NotaPuede haber pods con los estados
Completed
(Completado) yUnknown
(Desconocido) para un plan de SUC específico. Esto está previsto debido a la naturaleza de algunas de las actualizaciones.Seleccione el pod cuyos registros desea revisar y vaya a ⋮ → View Logs (⋮ > Ver registros).
22.3.2 Supervisión de planes de System Upgrade Controller - Manual #
Los pasos siguientes dan por supuesto que kubectl
se ha
configurado para conectarse al clúster en el que se han desplegado los
planes de SUC.
Muestre los planes de SUC desplegados:
kubectl get plans -n cattle-system
Obtenga el pod para el plan de SUC:
kubectl get pods -l upgrade.cattle.io/plan=<plan_name> -n cattle-system
NotaPuede haber pods con los estados
Completed
(Completado) yUnknown
(Desconocido) para un plan de SUC específico. Esto está previsto debido a la naturaleza de algunas de las actualizaciones.Obtenga los registros del pod:
kubectl logs <pod_name> -n cattle-system