Upgrade from v1.3.2 to v1.4.0

General information

An Upgrade button appears on the Dashboard screen whenever a new Harvester version that you can upgrade to becomes available. For more information, see Start an upgrade.

For air-gapped environments, see Prepare an air-gapped upgrade.

Known issues


1. A VM with a container disk can’t be migrated which makes the upgrade stuck in pre-drain status

Upgrade from v1.3.2 to v1.4.0 - 图1tip

Manually stop the VMs to continue the upgrade process.

When upgrading from v1.3.2 to v1.4.0, the upgrade process may become stuck if a VM with a container disk cannot be migrated. There is some limitation of live migration.

For more information, see Issue #7005.


2. Upgrade stuck on waiting harvester bundle

When upgrading from v1.3.2 to v1.4.0, the upgrade process may become stuck on waiting for the Harvester bundle to become ready. This issue is caused by a race condition when the Fleet agent (fleet-agent) is redeployed.

The following error messages indicate that the issue exists.

  1. > kubectl get bundles -n fleet-local
  2. NAME BUNDLEDEPLOYMENTS-READY STATUS
  3. 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]
  4. 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]

You can run the following script to fix the issue.

  1. #!/bin/bash
  2. patch_fleet_bundle() {
  3. local bundleName=$1
  4. local generation=$(kubectl get -n fleet-local bundle ${bundleName} -o jsonpath='{.spec.forceSyncGeneration}')
  5. local new_generation=$((generation+1))
  6. patch_manifest="$(mktemp)"
  7. cat > "$patch_manifest" <<EOF
  8. {
  9. "spec": {
  10. "forceSyncGeneration": $new_generation
  11. }
  12. }
  13. EOF
  14. echo "patch bundle to new generation: $new_generation"
  15. kubectl patch -n fleet-local bundle ${bundleName} --type=merge --patch-file $patch_manifest
  16. rm -f $patch_manifest
  17. }
  18. echo "removing harvester validating webhook"
  19. kubectl delete validatingwebhookconfiguration harvester-validator
  20. for bundle in mcc-harvester-crd mcc-harvester
  21. do
  22. patch_fleet_bundle ${bundle}
  23. done
  24. echo "removing longhorn services"
  25. kubectl delete svc longhorn-engine-manager -n longhorn-system --ignore-not-found=true
  26. kubectl delete svc longhorn-replica-manager -n longhorn-system --ignore-not-found=true