18 Controlador de actualización del sistema #
Consultad la documentación del controlador de actualización del sistema.
El controlador de actualización del sistema (SUC) tiene como objetivo proporcionar un controlador de actualización de propósito general y nativo de Kubernetes (para nodos). Introduce una nueva CRD, el Plan, para definir todas y cada una de vuestras políticas/requisitos de actualización. Un Plan es una intención pendiente de mutar los nodos en vuestro clúster.
18.1 ¿Cómo utiliza SUSE Edge el controlador de actualización del sistema? #
SUSE Edge utiliza SUC para facilitar diversas operaciones de "Día 2" relacionadas con las actualizaciones de la versión del SO y de Kubernetes en los clústeres de gestión y de sentido descendente.
Las operaciones de "Día 2" se definen a través de SUC Plans. Basándose en estos planes, SUC despliega cargas de trabajo en cada nodo para ejecutar la operación de "Día 2" correspondiente.
SUC también se utiliza dentro de Chapter 19, Controlador de actualización. Para obtener más información sobre las diferencias clave entre SUC y el controlador de actualización del sistema, véase Section 19.2, “Controlador de actualización frente a System Upgrade Controller”.
18.2 Instalación del controlador de actualización del sistema #
A partir de Rancher v2.10.0, el System Upgrade Controller se instala automáticamente.
Seguid los pasos a continuación solo si vuestro entorno no está gestionado por Rancher, o si vuestra versión de Rancher es inferior a v2.10.0.
Recomendamos que instaléis SUC a través de Fleet (Chapter 6, Fleet) ubicado en el repositorio suse-edge/fleet-examples.
Los recursos ofrecidos por el repositorio suse-edge/fleet-examples deben utilizarse siempre desde una versión de fleet-examples válida. Para determinar qué versión necesitáis utilizar, consultad las Notas de la versión (Chapter 41, Notas de la versión).
Si no podéis utilizar Fleet para la instalación de SUC, podéis instalarlo a través del repositorio de charts de Helm de Rancher, o incorporar el chart de Helm de Rancher en vuestro propio flujo de trabajo GitOps de terceros.
Esta sección cubre:
Instalación de Fleet (Section 18.2.1, “Instalación de Fleet del controlador de actualización del sistema”)
Instalación de Helm (Section 18.2.2, “Instalación de Helm del controlador de actualización del sistema”)
18.2.1 Instalación de Fleet del controlador de actualización del sistema #
Utilizando Fleet, hay dos recursos posibles que se pueden usar para desplegar SUC:
Recurso GitRepo: para casos de uso en los que hay disponible un servidor Git externo/local. Para obtener instrucciones de instalación, consultad Instalación del controlador de actualización del sistema - GitRepo (Section 18.2.1.1, “Instalación del controlador de actualización del sistema - GitRepo”).
Recurso Bundle: para casos de uso en entornos aislados que no admiten una opción de servidor Git local. Para obtener instrucciones de instalación, consultad Instalación del controlador de actualización del sistema - Bundle (Section 18.2.1.2, “Instalación del controlador de actualización del sistema - Bundle”).
18.2.1.1 Instalación del controlador de actualización del sistema - GitRepo #
Este proceso también puede realizarse a través de la interfaz de usuario de Rancher, si está disponible. Para obtener más información, consultad Acceso a Fleet en la interfaz de usuario de Rancher.
En vuestro clúster de gestión:
Determinad en qué clústeres queréis desplegar SUC. Esto se hace desplegando un recurso
GitRepode SUC en el espacio de trabajo de Fleet correcto en vuestro clúster de gestión. Por defecto, Fleet tiene dos espacios de trabajo:fleet-local- para recursos que deban desplegarse en el clúster de gestión.fleet-default- para recursos que deban desplegarse en clústeres sentido descendente.Para obtener más información sobre los espacios de trabajo de Fleet, consultad la documentación sentido ascendente.
Despliega el recurso
GitRepo:Para desplegar SUC en vuestro 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.6.1 paths: - fleets/day2/system-upgrade-controller repo: https://github.com/suse-edge/fleet-examples.git EOFPara desplegar SUC en vuestros clústeres de sentido descendente:
NoteAntes de desplegar el recurso siguiente, debéis proporcionar una configuración
targetsválida, para que Fleet sepa en qué clústeres de sentido descendente desplegar vuestro recurso. Para obtener información sobre cómo realizar el mapeo a clústeres de sentido descendente, consultad Mapping to Downstream Clusters.kubectl apply -n fleet-default -f - <<EOF apiVersion: fleet.cattle.io/v1alpha1 kind: GitRepo metadata: name: system-upgrade-controller spec: revision: release-3.6.1 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
Validad que el recurso
GitRepoesté 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.6.1 1/1Validad el despliegue del controlador de actualización del sistema:
kubectl get deployment system-upgrade-controller -n cattle-system NAME READY UP-TO-DATE AVAILABLE AGE system-upgrade-controller 1/1 1 1 2m20s
18.2.1.2 Instalación del controlador de actualización del sistema - Bundle #
Esta sección ilustra cómo crear y desplegar un recurso Bundle a partir de una configuración estándar de Fleet utilizando la fleet-cli.
En una máquina con acceso a la red, descarga el
fleet-cli:NoteAseguraos de que la versión de fleet-cli que descarguéis coincida con la versión de Fleet que se ha desplegado en vuestro clúster.
Para usuarios de Mac, existe una fleet-cli Homebrew Formulae.
Para usuarios de Linux y Windows, los binarios están presentes como assets en cada release de Fleet.
Linux AMD:
curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/vv0.15.2/fleet-linux-amd64Linux ARM:
curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/vv0.15.2/fleet-linux-arm64
Haced que
fleet-clisea ejecutable:chmod +x fleet-cliClonad la
suse-edge/fleet-examplesrelease que deseéis utilizar:git clone -b release-3.6.1 https://github.com/suse-edge/fleet-examples.gitNavegad al repositorio SUC fleet, ubicado en el
fleet-examples:cd fleet-examples/fleets/day2/system-upgrade-controllerDeterminad en qué clústeres queréis desplegar SUC. Esto se hace desplegando el Bundle de SUC en el espacio de trabajo de Fleet correcto dentro de vuestro clúster de gestión. Por defecto, Fleet tiene dos espacios de trabajo:
fleet-local- para recursos que deban desplegarse en el clúster de gestión.fleet-default- para recursos que deban desplegarse en clústeres downstream.Para obtener más información sobre los espacios de trabajo de Fleet, consulta la documentación sentido ascendente.
Si tenéis la intención de desplegar SUC solo en clústeres de sentido descendente, cread un archivo
targets.yamlque coincida con los clústeres específicos:cat > targets.yaml <<EOF targets: - clusterSelector: CHANGEME EOFPara obtener información sobre cómo realizar el mapeo a clústeres de sentido descendente, consultad Mapping to Downstream Clusters
Proceded a compilar el Bundle:
NoteAseguraos de no descargar fleet-cli en el directorio
fleet-examples/fleets/day2/system-upgrade-controller, de lo contrario se empaquetará con el Bundle, lo cual no es recomendable.Para desplegar SUC en vuestro clúster de gestión, ejecutad:
fleet-cli apply --compress -n fleet-local -o - system-upgrade-controller . > system-upgrade-controller-bundle.yamlPara desplegar SUC en vuestros clústeres de sentido descendente, ejecutad:
fleet-cli apply --compress --targets-file=targets.yaml -n fleet-default -o - system-upgrade-controller . > system-upgrade-controller-bundle.yamlPara obtener más información sobre este proceso, consultad Convert a Helm Chart into a Bundle.
Para obtener más información sobre el comando
fleet-cli apply, consultad fleet apply.
Transferid el Bundle
system-upgrade-controller-bundle.yamla la máquina de vuestro clúster de gestión:scp system-upgrade-controller-bundle.yaml <machine-address>:<filesystem-path>En vuestro clúster de gestión, desplegad el Bundle
system-upgrade-controller-bundle.yaml:kubectl apply -f system-upgrade-controller-bundle.yamlEn vuestro clúster de gestión, validad 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/1Según el espacio de trabajo de Fleet en el que hayáis desplegado vuestro Bundle, navegad al clúster y validad el despliegue de SUC:
NoteSUC 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
18.2.2 Instalación de Helm del controlador de actualización del sistema #
Añadid el repositorio de charts de Rancher:
helm repo add rancher-charts https://charts.rancher.io/Desplegad el chart de SUC:
helm install system-upgrade-controller rancher-charts/system-upgrade-controller --version 109.0.1 --set global.cattle.psp.enabled=false -n cattle-system --create-namespaceEsto instalará la versión v0.19.1 de SUC, necesaria para la plataforma Edge 3.6.
Validad el despliegue de SUC:
kubectl get deployment system-upgrade-controller -n cattle-system NAME READY UP-TO-DATE AVAILABLE AGE system-upgrade-controller 1/1 1 1 37s
18.3 Monitorización de los planes del controlador de actualización del sistema #
Los planes SUC pueden visualizarse de las siguientes formas:
A través de la interfaz de usuario de Rancher (Section 18.3.1, “Monitorización de los planes del controlador de actualización del sistema - Interfaz de usuario de Rancher”).
A través de monitorización manual (Section 18.3.2, “Planes del Upgrade Controller del sistema de monitorización - Manual”) dentro del clúster.
Los Pods desplegados para los planes SUC se mantienen activos 15 minutos después de una ejecución correcta. Después de eso, son eliminados por el Job correspondiente que los creó. Para tener acceso a los registros del Pod después de este periodo de tiempo, debéis habilitar el registro para vuestro clúster. Para obtener información sobre cómo hacerlo en Rancher, consultad Rancher Integration with Logging Services.
18.3.1 Monitorización de los planes del controlador de actualización del sistema - Interfaz de usuario de Rancher #
Para consultar los registros de Pod de un plan SUC específico:
En la esquina superior izquierda, ☰ → <your-cluster-name>
Seleccionad Workloads → Pods
Seleccionad el menú desplegable
Only User Namespacesy añadid el espacio de nombrescattle-systemEn la barra de filtro de Pods, escribid el nombre de vuestro Pod del plan SUC. El nombre seguirá el siguiente formato de plantilla:
apply-<plan_name>-on-<node_name>NotePuede haber Pods
CompletedyUnknownpara un plan SUC específico. Esto es normal y ocurre debido a la naturaleza de algunas de las actualizaciones.Seleccionad el pod cuyos registros queréis revisar y navegad a ⋮ → View Logs
18.3.2 Planes del Upgrade Controller del sistema de monitorización - Manual #
Los siguientes pasos asumen que kubectl se ha configurado para conectarse al clúster donde se han desplegado los SUC Plans.
Listar los planes SUC desplegados:
kubectl get plans -n cattle-systemObtener el pod para el plan SUC:
kubectl get pods -l upgrade.cattle.io/plan=<plan_name> -n cattle-systemNotePuede haber ambos pods
CompletedyUnknownpara un plan SUC específico. Esto es normal y ocurre debido a la naturaleza de algunas de las actualizaciones.Obtener los registros del pod:
kubectl logs <pod_name> -n cattle-system