Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Actualiza de v1.3.2 a v1.4.0

Información general

Un botón Upgrade aparece en la pantalla Panel siempre que una nueva SUSE Virtualization versión a la que puedes actualizar esté disponible. Para más información, consulta Iniciar una actualización de versión.

Para entornos aislados, consulta Preparar una actualización en entorno aislado.

Evita la corrupción de imágenes de máquinas virtuales durante las actualizaciones de versión

Antes de comenzar la actualización de versión, asegúrate de que el BackingImage CRD esté actualizado a la SUSE Storage v1.7.2 versión.

Omitir la actualización del CRD puede llevar a la corrupción de la imagen de respaldo, como se describe en #10644.

Realiza los siguientes pasos antes de comenzar la actualización de versión.

  1. Aplica un parche al SUSE Virtualization objeto ManagedChart para evitar errores y advertencias relacionados.

    kubectl patch managedchart harvester \
    -n fleet-local \
    --type='json' \
    -p='[
      {
        "op":"add",
        "path":"/spec/diff/comparePatches/-",
        "value": {
          "apiVersion":"apiextensions.k8s.io/v1",
          "jsonPointers":["/spec","/metadata/annotations", "/metadata/labels", "/status"],
          "kind":"CustomResourceDefinition",
          "name":"backingimages.longhorn.io"
        }
      }
    ]'
  2. Aplica el SUSE Storage v1.7.2 BackingImage CRD.

    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        controller-gen.kubebuilder.io/version: v0.15.0
      labels:
        app.kubernetes.io/name: longhorn
        app.kubernetes.io/instance: longhorn
        app.kubernetes.io/version: v1.7.2
        longhorn-manager: ""
      name: backingimages.longhorn.io
    spec:
      conversion:
        strategy: Webhook
        webhook:
          clientConfig:
            service:
              name: longhorn-conversion-webhook
              namespace: longhorn-system
              path: /v1/webhook/conversion
              port: 9501
          conversionReviewVersions:
          - v1beta2
          - v1beta1
      group: longhorn.io
      names:
        kind: BackingImage
        listKind: BackingImageList
        plural: backingimages
        shortNames:
        - lhbi
        singular: backingimage
      scope: Namespaced
      versions:
      - additionalPrinterColumns:
        - description: The backing image name
          jsonPath: .spec.image
          name: Image
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        name: v1beta1
        schema:
          openAPIV3Schema:
            description: BackingImage is where Longhorn stores backing image object.
            properties:
              apiVersion:
                description: |-
                  APIVersion defines the versioned schema of this representation of an object.
                  Servers should convert recognized schemas to the latest internal value, and
                  may reject unrecognized values.
                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
                type: string
              kind:
                description: |-
                  Kind is a string value representing the REST resource this object represents.
                  Servers may infer this from the endpoint the client submits requests to.
                  Cannot be updated.
                  In CamelCase.
                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                type: string
              metadata:
                type: object
              spec:
                x-kubernetes-preserve-unknown-fields: true
              status:
                x-kubernetes-preserve-unknown-fields: true
            type: object
        served: true
        storage: false
        subresources:
          status: {}
      - additionalPrinterColumns:
        - description: The system generated UUID
          jsonPath: .status.uuid
          name: UUID
          type: string
        - description: The source of the backing image file data
          jsonPath: .spec.sourceType
          name: SourceType
          type: string
        - description: The backing image file size in each disk
          jsonPath: .status.size
          name: Size
          type: string
        - description: The virtual size of the image (may be larger than file size)
          jsonPath: .status.virtualSize
          name: VirtualSize
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        name: v1beta2
        schema:
          openAPIV3Schema:
            description: BackingImage is where Longhorn stores backing image object.
            properties:
              apiVersion:
                description: |-
                  APIVersion defines the versioned schema of this representation of an object.
                  Servers should convert recognized schemas to the latest internal value, and
                  may reject unrecognized values.
                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
                type: string
              kind:
                description: |-
                  Kind is a string value representing the REST resource this object represents.
                  Servers may infer this from the endpoint the client submits requests to.
                  Cannot be updated.
                  In CamelCase.
                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                type: string
              metadata:
                type: object
              spec:
                description: BackingImageSpec defines the desired state of the Longhorn
                  backing image
                properties:
                  checksum:
                    type: string
                  diskFileSpecMap:
                    additionalProperties:
                      properties:
                        evictionRequested:
                          type: boolean
                      type: object
                    type: object
                  diskSelector:
                    items:
                      type: string
                    type: array
                  disks:
                    additionalProperties:
                      type: string
                    description: Deprecated. We are now using DiskFileSpecMap to assign
                      different spec to the file on different disks.
                    type: object
                  minNumberOfCopies:
                    type: integer
                  nodeSelector:
                    items:
                      type: string
                    type: array
                  secret:
                    type: string
                  secretNamespace:
                    type: string
                  sourceParameters:
                    additionalProperties:
                      type: string
                    type: object
                  sourceType:
                    enum:
                    - download
                    - upload
                    - export-from-volume
                    - restore
                    - clone
                    type: string
                type: object
              status:
                description: BackingImageStatus defines the observed state of the Longhorn
                  backing image status
                properties:
                  checksum:
                    type: string
                  diskFileStatusMap:
                    additionalProperties:
                      properties:
                        lastStateTransitionTime:
                          type: string
                        message:
                          type: string
                        progress:
                          type: integer
                        state:
                          type: string
                      type: object
                    nullable: true
                    type: object
                  diskLastRefAtMap:
                    additionalProperties:
                      type: string
                    nullable: true
                    type: object
                  ownerID:
                    type: string
                  size:
                    format: int64
                    type: integer
                  uuid:
                    type: string
                  virtualSize:
                    description: Virtual size of image, which may be larger than physical
                      size. Will be zero until known (e.g. while a backing image is uploading)
                    format: int64
                    type: integer
                type: object
            type: object
        served: true
        storage: true
        subresources:
          status: {}

Problemas conocidos

1. Actualización atascada en el estado "Pre-drenaje".

Una máquina virtual con un disco de contenedor no puede ser migrada debido a una limitación de la función de migración en vivo. Esto provoca que el proceso de actualización se quede atascado en el estado "Pre-drenaje".

Termina manualmente las máquinas virtuales para continuar con el proceso de actualización.

Problema relacionado: #7005

2. Actualización de versión atascada esperando el paquete

Este problema es causado por una condición de carrera cuando el SUSE® Rancher Prime: Continuous Delivery agente (fleet-agent) es vuelto a desplegar. Los siguientes mensajes de error indican que el problema existe.

> kubectl get bundles -n fleet-local
NAME                                          BUNDLEDEPLOYMENTS-READY   STATUS
mcc-harvester                                 0/1                       ErrApplied(1) [Cluster fleet-local/local: encountered 2 deletion errors. First is: admission webhook "validator.harvesterhci.io" denied the request: Internal error occurred: no route match found for DELETE /v1, Kind=Secret harvester-system/sh.helm.release.v1.harvester.v2]
mcc-harvester-crd                             0/1                       ErrApplied(1) [Cluster fleet-local/local: admission webhook "validator.harvesterhci.io" denied the request: Internal error occurred: no route match found for DELETE /v1, Kind=Secret harvester-system/sh.helm.release.v1.harvester-crd.v1]

Puedes ejecutar el siguiente guion para solucionar el problema.

#!/bin/bash

patch_fleet_bundle() {
  local bundleName=$1
  local generation=$(kubectl get -n fleet-local bundle ${bundleName} -o jsonpath='{.spec.forceSyncGeneration}')
  local new_generation=$((generation+1))
  patch_manifest="$(mktemp)"
  cat > "$patch_manifest" <<EOF
{
  "spec": {
    "forceSyncGeneration": $new_generation
  }
}
EOF
  echo "patch bundle to new generation: $new_generation"
  kubectl patch -n fleet-local bundle ${bundleName}  --type=merge --patch-file $patch_manifest
  rm -f $patch_manifest
}

echo "removing harvester validating webhook"
kubectl delete validatingwebhookconfiguration harvester-validator

for bundle in mcc-harvester-crd mcc-harvester
do
  patch_fleet_bundle ${bundle}
done

echo "removing longhorn services"
kubectl delete svc longhorn-engine-manager -n longhorn-system --ignore-not-found=true
kubectl delete svc longhorn-replica-manager -n longhorn-system --ignore-not-found=true

3. Actualización atascada esperando a SUSE® Rancher Prime: Continuous Delivery.

Al actualizar de v1.3.2 a v1.4.0, el proceso de actualización puede quedar atascado esperando a que SUSE® Rancher Prime: Continuous Delivery esté listo. Este problema es causado por una condición de carrera cuando SUSE Rancher Prime se vuelve a desplegar.

Revisa los registros de SUSE Virtualization y el historial de SUSE® Rancher Prime: Continuous Delivery en busca de los siguientes indicadores:

  • El pod del manifiesto está atascado en el estado de deployed.

  • La actualización está pendiente con una versión de chart que ha sido desplegada.

Ejemplo:

> kubectl logs -n harvester-system -l harvesterhci.io/upgradeComponent=manifest
wait helm release cattle-fleet-system fleet fleet-104.0.2+up0.10.2 0.10.2 deployed

> helm history -n cattle-fleet-system fleet
REVISION    UPDATED                     STATUS             CHART                    APP VERSION    DESCRIPTION
26          Tue Dec 10 03:09:13 2024    superseded         fleet-103.1.5+up0.9.5    0.9.5          Upgrade complete
27          Sun Dec 15 09:26:54 2024    superseded         fleet-103.1.5+up0.9.5    0.9.5          Upgrade complete
28          Sun Dec 15 09:27:03 2024    superseded         fleet-103.1.5+up0.9.5    0.9.5          Upgrade complete
29          Mon Dec 16 05:57:03 2024    deployed           fleet-103.1.5+up0.9.5    0.9.5          Upgrade complete
30          Mon Dec 16 05:57:13 2024    pending-upgrade    fleet-103.1.5+up0.9.5    0.9.5          Preparing upgrade

Puedes ejecutar el siguiente comando para solucionar el problema.

helm rollback fleet -n cattle-fleet-system <last-deployed-revision>

4. La actualización se reinicia inesperadamente después de hacer clic en el botón "Desestimarlo".

Cuando utilizas Rancher para actualizar SUSE Virtualization, la interfaz de usuario de Rancher muestra un diálogo con un botón etiquetado como "Desestimarlo". Hacer clic en este botón puede resultar en los siguientes problemas:

  • La sección status del CR de harvesterhci.io/v1beta1/upgrade se borra, causando la pérdida de toda la información importante sobre la actualización de versión.

  • El proceso de actualización de versión se reinicia inesperadamente.

Este problema afecta a Rancher v2.10.x, que utiliza v1.0.2, v1.0.3 y v1.0.4 de la Extensión de UI de Harvester. Todas las versiones de la UI de SUSE Virtualization no están afectadas. El problema se soluciona en la Extensión de UI de Harvester v1.0.5 y v1.5.0.

Para evitar este problema, realiza cualquiera de las siguientes acciones:

  • Utiliza la UI de SUSE Virtualization para realizar actualizaciones. Hacer clic en el botón "Desestimarlo" en la UI de SUSE Virtualization no resulta en un comportamiento inesperado.

  • En lugar de hacer clic en el botón en la UI de Rancher, ejecuta el siguiente comando contra el clúster:

    kubectl -n harvester-system label upgrades -l harvesterhci.io/latestUpgrade=true harvesterhci.io/read-message=true

Problema relacionado: #7791

5. Las máquinas virtuales que utilizan volúmenes RWX migrables se reinician inesperadamente

Las máquinas virtuales que utilizan volúmenes RWX migrables se reinician inesperadamente cuando se reinician los pods del plugin CSI. Este problema afecta a SUSE Virtualization v1.4.x, v1.5.0 y v1.5.1.

La solución alternativa es desactivar la configuración Eliminar automáticamente el pod de carga de trabajo cuando el volumen se desconecta inesperadamente en la interfaz de usuario SUSE Storage antes de iniciar la actualización. Debes habilitar la configuración de nuevo una vez que se complete la actualización.

El problema se solucionará en SUSE Storage v1.8.3, v1.9.1 y versiones posteriores. SUSE Virtualization v1.6.0 incluirá SUSE Storage v1.9.1.

Problemas relacionados: #8534 y #11158