Skip to content

antony@notes:~/rancher$ cat "Harvester-air-gapped-upgrade.md"

Harvester air-gapped upgrade

2024-06-14· rancher ·Harvester

Harvester air-gapped upgrade

1. 升級前備份、準備和應注意事項

1.1. Check Upgrade support matrix

Upgrade From VersionSupported New Version(s)
v1.2.1v1.2.2
v1.1.2/v1.2.0v1.2.1
v1.1.1/v1.1.2v1.1.3
v1.1.0/v1.1.1v1.1.2

1.2. 備份重要的 VM

1.3. 升級注意事項

:::danger

  • 升級過程中請勿對 Cluster 進行操作。例如,建立新虛擬機器、上傳新 Container Images 等。
  • 確保叢集中的每個 Node 至少有 30 GiB 的可用系統分區空間。如果 Cluster 中任何 node 的可用系統分區空間小於 30 GiB,升級將被拒絕。
    • 在叢集中每一台 node 執行 df -h /usr/local/ 檢查
  • 確保所有節點的時間同步。
    • 在叢集中每一台 node 執行 sudo timedatectl status 檢查 :::

1.4. 準備 air-gapped 升級

  1. 到以下網址下載新版本的 Harvester ISO 檔案
  2. 根據以下步驟建立 Http Server 並把 Harvester ISO 檔案放到網站中
# 以下操作步驟為從 v1.2.1 升級至 v1.2.2 
## 2.1. SSH 連線至任意 Harvester node
$ ssh rancher@<Harvester node>

#@ 2.2. 建立與啟動 Web Server
$ docker run -d -p 8080:80 --name nginx-web rancher/mirrored-library-nginx:1.21.1-alpine

## 2.3. 檢查 Web Server 的運作狀態
$ docker ps -a --filter name="nginx-web"
CONTAINER ID    IMAGE                                                     COMMAND                   CREATED          STATUS    PORTS                   NAMES
9282651624a9    docker.io/rancher/mirrored-library-nginx:1.21.1-alpine    "/docker-entrypoint.…"    3 seconds ago    Up        0.0.0.0:8080->80/tcp    nginx-web

## 2.4.  將 Harvester ISO 檔案放到 Web Server 中
$ docker cp /home/rancher/harvester-v1.2.2-amd64.iso nginx-web:/usr/share/nginx/html/

## 2.5. 更改 Harvester ISO 檔案的權限為 644
$ docker exec nginx-web chmod 644 /usr/share/nginx/html/harvester-v1.2.2-amd64.iso

## 2.6. 檢查是否符合預期
$ docker exec nginx-web ls -l /usr/share/nginx/html/harvester-v1.2.2-amd64.iso

## 2.7. 撰寫升級版本的檔案
### 注意! 要修改 isoURL 的位置
$ cat <<EOF > hvx_v1.2.2.yaml
apiVersion: harvesterhci.io/v1beta1
kind: Version
metadata:
  name: v1.2.2
  namespace: harvester-system
spec:
  isoChecksum: 'e069d456517006690d3f4046d88c09e5440dc70be348ca2c42490d86e69ca413c0ad2a28c246b0a2fe445e91e5b36a9598ba9d5efb568cea9e91cec540f8a7a4'
  isoURL: http://192.168.61.12:8080/harvester-v1.2.2-amd64.iso
  releaseDate: '20240516'
EOF

## 2.8. 建立新版本
$ kubectl create -f hvx_v1.2.2.yaml
# 要從 v1.2.2 升級至 v1.3.0 再執行以下操作

$ docker rm -f nginx-web

$ docker run -d -p 8080:80 --name nginx-web rancher/mirrored-library-nginx:1.24.0-alpine

$ docker cp /home/rancher/harvester-v1.3.0-amd64.iso nginx-web:/usr/share/nginx/html/

$ docker exec nginx-web chmod 644 /usr/share/nginx/html/harvester-v1.3.0-amd64.iso

$ docker exec nginx-web ls -l /usr/share/nginx/html/harvester-v1.3.0-amd64.iso


$ cat <<EOF > hvx_v1.3.0.yaml
apiVersion: harvesterhci.io/v1beta1
kind: Version
metadata:
  name: v1.3.0
  namespace: harvester-system
spec:
  isoChecksum: '045e3ec2394ac621c72487db8d6f3328228a32bee4ac1ce43b740fafcc8194039e7213f8905020b52f31373d99057c483863e72cca55f8607029bf9cf1362a55'
  isoURL: http://192.168.61.12:8080/harvester-v1.3.0-amd64.iso
  releaseDate: '20240516'
EOF

$ kubectl create -f hvx_v1.3.0.yaml

2. 開始升級

  1. 連線至 Harvester GUI 並點擊儀表板頁面上的 Upgrade 按鈕。
  2. 選擇版本開始升級
  3. 點擊頁面頂部的綠色圓圈即可顯示升級進度。