Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

Dépannage de la mise à niveau

Pour un aperçu général du cycle de vie de la mise à niveau et des composants, veuillez vous référer au document associé.

Côté Rancher

Dans cet exemple, nous avons mis à niveau les nœuds du cluster avec la définition suivante de ManagedOSImage :

apiVersion: elemental.cattle.io/v1beta1
kind: ManagedOSImage
metadata:
  name: my-upgrade
  namespace: fleet-default
spec:
  # Set to the new {elemental-product-name} version you would like to upgrade to or track the latest tag
  osImage: "registry.suse.com/rancher/sle-micro/5.5:latest"
  clusterTargets:
    - clusterName: my-cluster

Une fois que le ManagedOSImage est appliqué, le elemental-operator le vérifiera et générera un Bundle associé. Le nom du Bundle sera préfixé par mos puis par le nom du ManagedOSImage. Dans ce cas mos-my-upgrade.

Dans la définition du Bundle, vous trouverez les détails concernant le plan de mise à niveau et la cible souhaitée. Par exemple :

kubectl -n fleet-default get bundle mos-my-upgrade -o yaml
Cliquez ici pour plus de détails
apiVersion: fleet.cattle.io/v1alpha1
kind: Bundle
metadata:
  creationTimestamp: "2023-06-16T09:01:47Z"
  generation: 1
  name: mos-my-upgrade
  namespace: fleet-default
  ownerReferences:
  - apiVersion: elemental.cattle.io/v1beta1
    controller: true
    kind: ManagedOSImage
    name: my-upgrade
    uid: e468ed21-23bb-487a-a022-dbc7ef753720
  resourceVersion: "1038645"
  uid: 35e83fc4-28c8-4b10-8059-cae6cdff2cda
spec:
  resources:
  - content: '{"kind":"ClusterRole","apiVersion":"rbac.authorization.k8s.io/v1","metadata":{"name":"os-upgrader-my-upgrade","creationTimestamp":null},"rules":[{"verbs":["update","get","list","watch","patch"],"apiGroups":[""],"resources":["nodes"]},{"verbs":["list"],"apiGroups":[""],"resources":["pods"]}]}'
    name: ClusterRole--os-upgrader-my-upgrade-296a3abf3451.yaml
  - content: '{"kind":"ClusterRoleBinding","apiVersion":"rbac.authorization.k8s.io/v1","metadata":{"name":"os-upgrader-my-upgrade","creationTimestamp":null},"subjects":[{"kind":"ServiceAccount","name":"os-upgrader-my-upgrade","namespace":"cattle-system"}],"roleRef":{"apiGroup":"rbac.authorization.k8s.io","kind":"ClusterRole","name":"os-upgrader-my-upgrade"}}'
    name: ClusterRoleBinding--os-upgrader-my-upgrade-f63eaecde935.yaml
  - content: '{"kind":"ServiceAccount","apiVersion":"v1","metadata":{"name":"os-upgrader-my-upgrade","namespace":"cattle-system","creationTimestamp":null}}'
    name: ServiceAccount-cattle-system-os-upgrader-my-upgrade-ce93d-01096.yaml
  - content: '{"kind":"Secret","apiVersion":"v1","metadata":{"name":"os-upgrader-my-upgrade","namespace":"cattle-system","creationTimestamp":null},"data":{"cloud-config":""}}'
    name: Secret-cattle-system-os-upgrader-my-upgrade-a997ee6a67ef.yaml
  - content: '{"kind":"Plan","apiVersion":"upgrade.cattle.io/v1","metadata":{"name":"os-upgrader-my-upgrade","namespace":"cattle-system","creationTimestamp":null},"spec":{"concurrency":1,"nodeSelector":{},"serviceAccountName":"os-upgrader-my-upgrade","version":"latest","secrets":[{"name":"os-upgrader-my-upgrade","path":"/run/data"}],"tolerations":[{"operator":"Exists"}],"cordon":true,"upgrade":{"image":"registry.suse.com/suse/sle-micro/5.5","command":["/usr/sbin/suc-upgrade"]}},"status":{}}'
    name: Plan-cattle-system-os-upgrader-my-upgrade-273c2c09afca.yaml
  targets:
  - clusterName: my-cluster
.
.
.

SUSE® Rancher Prime: OS Manager Côté cluster

Tout nœud SUSE® Rancher Prime: OS Manager correctement enregistré et faisant partie du cluster cible récupérera le bundle et commencera à l’appliquer.
Cette opération est effectuée par le system-upgrade-controller de Rancher s’exécutant sur le cluster SUSE® Rancher Prime: OS Manager.
Pour surveiller le bon fonctionnement de ce contrôleur, vous pouvez consulter ses journaux :

kubectl -n cattle-system logs deployment/system-upgrade-controller

Si tout est correct, le system-upgrade-controller créera un plan de mise à niveau sur le cluster :

kubectl -n cattle-system get plans

Pour chaque plan, le contrôleur orchestrera les tâches qui l’appliqueront sur chaque nœud ciblé.
Les noms des tâches utiliseront le nom du plan (os-upgrader-my-upgrade) et le nom d’hôte de la machine cible (my-host) pour une découverte facile.
Par exemple : apply-os-upgrader-my-upgrade-on-my-host-7a25e
Vous pouvez surveiller ces tâches avec :

kubectl -n cattle-system get jobs

Chaque tâche utilisera un conteneur privileged: true avec l’image SLE Micro spécifiée dans la définition ManagedOSImage. Ce conteneur tentera de mettre à niveau le système et d’effectuer un redémarrage.

Si le travail échoue, vous pouvez vérifier son statut en examinant les journaux :

kubectl -n cattle-system logs job.batch/apply-os-upgrader-my-upgrade-on-my-host-7a25e
Processus de tâches en deux étapes

Notez que le processus de mise à niveau s’effectue en deux étapes.
Vous remarquerez que la même tâche est exécutée deux fois et que la première se termine avec le statut Unknown et ne sera pas complétée.
Ceci est à prévoir, car SUSE® Rancher Prime: OS Manager dépend du fait que la tâche soit exécutée à nouveau après le redémarrage de la machine, afin de vérifier que la nouvelle version a été installée correctement.
Vous remarquerez une seconde exécution de la tâche, cette fois-ci complétant correctement.

kubectl -n cattle-system get jobs
NAMESPACE       NAME                                            COMPLETIONS   DURATION   AGE
cattle-system   apply-os-upgrader-my-upgrade-on-my-host-0b392   1/1           2m34s      6m23s
cattle-system   apply-os-upgrader-my-upgrade-on-my-host-7a25e   0/1           6m23s      6m23s
kubectl -n cattle-system get pods
NAME                                            READY   STATUS      RESTARTS      AGE
apply-os-upgrader-my-upgrade-on-my-host-zbkrh   0/1     Completed   0             9m40s
apply-os-upgrader-my-upgrade-on-my-host-zvrff   0/1     Unknown     0             12m

Récupération après des échecs

Il est possible que le processus de mise à niveau de ManagedOSImage échoue, laissant un ou plusieurs nœuds dans un état défectueux. Par exemple, si l’image à mettre à niveau n’est pas trouvée dans le registre ou est autrement corrompue, la tâche de mise à niveau exécutée sur les clusters en aval ne réussira pas.

Lorsque c’est le cas, les nœuds exécutant la tâche de mise à niveau qui a échoué resteront isolés. Vous pouvez mettre à jour le ManagedOSImage avec un osImage fonctionnel, ou alternativement le supprimer pour arrêter toute nouvelle tentative de mise à niveau. Dans tous les cas, afin de les restaurer et de pouvoir également planifier les mises à niveau suivantes, les nœuds affectés doivent être désisolés manuellement.