antony@notes:~/rancher$ cat "Harvester-air-gapped-upgrade.md"
Harvester air-gapped upgrade
Harvester air-gapped upgrade
1. 升級前備份、準備和應注意事項
1.1. Check Upgrade support matrix
| Upgrade From Version | Supported New Version(s) |
|---|---|
| v1.2.1 | v1.2.2 |
| v1.1.2/v1.2.0 | v1.2.1 |
| v1.1.1/v1.1.2 | v1.1.3 |
| v1.1.0/v1.1.1 | v1.1.2 |
1.2. 備份重要的 VM
1.3. 升級注意事項
:::danger
- 升級過程中請勿對 Cluster 進行操作。例如,建立新虛擬機器、上傳新 Container Images 等。
- 確保叢集中的每個 Node 至少有 30 GiB 的可用系統分區空間。如果 Cluster 中任何 node 的可用系統分區空間小於 30 GiB,升級將被拒絕。
- 在叢集中每一台 node 執行
df -h /usr/local/檢查
- 在叢集中每一台 node 執行
- 確保所有節點的時間同步。
- 在叢集中每一台 node 執行
sudo timedatectl status檢查 :::
- 在叢集中每一台 node 執行
1.4. 準備 air-gapped 升級
- 到以下網址下載新版本的 Harvester ISO 檔案
- 根據以下步驟建立 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.yaml2. 開始升級
- 連線至 Harvester GUI 並點擊儀表板頁面上的 Upgrade 按鈕。
- 選擇版本開始升級
- 點擊頁面頂部的綠色圓圈即可顯示升級進度。