從 v1.5.x 升級到 v1.6.x
一般資訊
每當有可供升級的新 Harvester 版本時,Dashboard 畫面上就會出現 Upgrade 按鈕。如需更多資訊,請參閱開始升級。
執行 v1.5.x 的叢集可以直接升級到 v1.6.x,因為 Harvester 允許底層元件最多升級一個次要版本。Harvester v1.5.0、v1.5.1 和 v1.5.2 使用相同的 RKE2 次要版本(v1.32),而 Harvester v1.6.0 和 v1.6.1 使用下一個次要版本(v1.33)。如需更多資訊,請參閱升級路徑。
只有受到發行說明的錯誤修復部分中列出的問題影響的客戶才必須安裝 v1.5.2。
有關在離線環境中升級 Harvester 的資訊,請參閱準備離線升級。
在 Rancher v2.12 上更新 Harvester UI Extension
您必須使用相容版本(v1.6.x)的 Harvester UI Extension 才能在 Rancher v2.12 上匯入 Harvester v1.6.x 叢集。
-
在 Rancher UI 上,前往 local > Apps > Repositories。
-
找到名為 harvester 的儲存庫,然後選擇 ⋮ > Refresh。
-
前往 Extensions 畫面。
-
找到名為 Harvester 的擴充功能,然後點擊 Update。
-
選擇相容版本,然後點擊 Update。
-
等待一段時間讓擴充功能更新,然後重新整理畫面。
已知問題
1. 升級卡在「Pre-drained」狀態
在某些情況下,即使引擎 CR 的狀態已變更為「Stopped」,Longhorn Instance Manager 仍可能無法清理引擎實例。升級過程會卡在「Pre-drained」狀態,因為在對應的 PodDisruptionBudget (PDB) 仍然存在時,instance-manager Pod 無法被刪除。
解決方法是在確保所有卷都健康後刪除 instance-manager PDB。
2. 訪客叢集卡在「Updating」狀態
在 Harvester 升級後,RKE2 訪客叢集可能會卡在「Updating」狀態。Harvester UI 上會顯示以下錯誤訊息:
Configuring etcd node(s) rke2-pool1-xdvfc-qf4vb: Node condition MemoryPressure is Unknown. Node condition DiskPressure is Unknown. Node condition PIDPressure is Unknown. Node condition Ready is Unknown, waiting for probes: calico, etcd, kube-apiserver, kube-controller-manager
當訪 客節點的 IP 位址在升級後發生變更時,就會發生此問題,導致 etcd 發生故障。這可能是因為底層虛擬機重新啟動了數次,並從 DHCP 伺服器接收到新的 IP 位址。
要解決此問題,請執行以下步驟:
- 在 Rancher UI 上,從訪客叢集中刪除導致錯誤的節點。
- 在 Harvester UI 上,檢查底層虛擬機的狀態。
- 如有必要,重新啟動虛擬機。
虛擬機被移除後,訪客叢集會嘗試建立新節點。一旦建立節點,訪客叢集的狀態就會變更為「Active」。
相關 issue:#8950
3. 已停止的虛擬機卡在「Starting」狀態
即時遷移後,Longhorn 卷可能會在「Detaching」和「Detached」狀態之間來回切換。由於卷尚未就緒,相關的虛擬機無法完全啟動。
解決方法是使用以下命令清除 Longhorn 卷的 status.currentMigrationNodeID:
kubectl patch -n longhorn-system volume <volume> \
--type=merge \
--subresource status \
-p '{"status":{"currentMigrationNodeID":""}}'
4. 因網路設定錯誤導致節點卡在「Waiting Reboot」狀態
如果符合以下條件,節點可能會在升級期間卡在 Waiting Reboot 狀態:
- 最初安裝了 Harvester v1.2.1 或更早版本,並且節點是逐步升級的。
install.management_interface設定中的vlan_id欄位設定為1或為空。
此問題的發生是因為網路設定錯誤,節點日誌中會顯示訊息 yaml: line did not find expected key。
在升級期間,/oem/90_custom.yaml 檔案會更新以反映 v1.5.x 行為的變更,該版本將 VLAN 2-4094 新增到 mgmt-br 和 mgmt-bo。該檔案中的兩個腳本(/etc/wicked/scripts/setup_bond.sh 和 /etc/wicked/scripts/setup_bridge.sh)如果使用由 gopkg.in/yaml.v2 產生的格式(在 Harvester 1.2.2 之前的安裝程式中使用),可能會被 sed 操作截斷。sed 操作會 移除行 bridge vlan add vid 2-4094 dev $INTERFACE。此截斷問題不會影響使用由 gopkg.in/yaml.v3 產生的格式的腳本。
由 gopkg.in/yaml.v2 產生的 /oem/90_custom.yaml 檔案中 /etc/wicked/scripts/setup_bond.sh 的內容:
"#!/bin/sh\n\nACTION=$1\nINTERFACE=$2\n\ncase $ACTION in\n\tpost-up)\n\t\t#
inherit MAC address\n\t\tip link set dev mgmt-br address $(ip -json link show
dev $INTERFACE | jq -j '.[0][\"address\"]')\n\n\t\t# accept all vlan, PVID=1
by default\n\t\tbridge vlan add vid 2-4094 dev $INTERFACE\n\t\t;;\n\nesac\n"
由 gopkg.in/yaml.v3 產生的 /oem/90_custom.yaml 檔案中 /etc/wicked/scripts/setup_bond.sh 的內容:
#!/bin/sh
ACTION=$1
INTERFACE=$2
case $ACTION in
post-up)
# inherit MAC address
ip link set dev mgmt-br address $(ip -json link show dev $INTERFACE | jq -j '.[0]["address"]')
#accept all vlan,PVID=1 by default
bridge vlan add vid 2-4094 dev $INTERFACE
;;
esac
由 gopkg.in/yaml.v2 產生的 /oem/90_custom.yaml 檔案中 /etc/wicked/scripts/setup_bridge.sh 的內容:
"#!/bin/sh\n\nACTION=$1\nINTERFACE=$2\n\ncase $ACTION in\n\tpre-up)\n\t\t#
enable vlan-aware\n\t\tip link set dev $INTERFACE type bridge vlan_filtering 1\n\t\t\t;;\n\n\tpost-up)\n\t\t#
accept all vlan, PVID=1 by default\n\t\tbridge vlan add vid 2-4094 dev $INTERFACE
self\n\t\tbridge vlan add vid 2-4094 dev mgmt-bo\n\t\t;;\n\nesac\n"
由 gopkg.in/yaml.v3 產生的 /oem/90_custom.yaml 檔案中 /etc/wicked/scripts/setup_bridge.sh 的內容:
#!/bin/sh
ACTION=$1
INTERFACE=$2
case $ACTION in
pre-up)
#enable vlan-aware
ip link set $INTERFACE type bridge vlan_filtering 1
;;
post-up)
#accept all vlan, PVID=1 by default
bridge vlan add vid 2-4094 dev $INTERFACE self
bridge vlan add vid 2-4094 dev mgmt-bo
;;
esac
解決方法是將 /oem/90_custom.yaml 檔案中的 /etc/wicked/scripts/setup_bond.sh 和 /etc/wicked/scripts/setup_bridge.sh 替換為從 gopkg.in/yaml.v3 產生的上述內容。檔案更新後,升級過程應該會繼續進行。
相關 issue:#9033