跳至主要内容

從 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 叢集。

  1. 在 Rancher UI 上,前往 local > Apps > Repositories。

  2. 找到名為 harvester 的儲存庫,然後選擇 ⋮ > Refresh。

  3. 前往 Extensions 畫面。

  4. 找到名為 Harvester 的擴充功能,然後點擊 Update。

  5. 選擇相容版本,然後點擊 Update。

  6. 等待一段時間讓擴充功能更新,然後重新整理畫面。


已知問題​

1. 升級卡在「Pre-drained」狀態​

在某些情況下,即使引擎 CR 的狀態已變更為「Stopped」,Longhorn Instance Manager 仍可能無法清理引擎實例。升級過程會卡在「Pre-drained」狀態,因為在對應的 PodDisruptionBudget (PDB) 仍然存在時,instance-manager Pod 無法被刪除。

解決方法是在確保所有卷都健康後刪除 instance-manager PDB。

相關 issue:#8977 和 #11605

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 位址。

要解決此問題,請執行以下步驟:

  1. 在 Rancher UI 上,從訪客叢集中刪除導致錯誤的節點。
  2. 在 Harvester UI 上,檢查底層虛擬機的狀態。
  3. 如有必要,重新啟動虛擬機。

虛擬機被移除後,訪客叢集會嘗試建立新節點。一旦建立節點,訪客叢集的狀態就會變更為「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":""}}'

相關 issue:#8949 和 #11479

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

5. mgmt 叢集網路上的次要 VLAN 介面失去網路連線​

在 v1.6.0 中,引入了一項功能變更,僅將必需的 VLAN 介面附加到 mgmt-br 和 mgmt-bo,而不是所有次要 VLAN。這是預期行為,旨在減少不必要的 VLAN 佈建。由於這個原因,在叢集升級到 v1.6.x 後,先前附加到 mgmt-br 橋接器和 mgmt-bo 的所有次要 VLAN 介面都會從管理主機中移除。

注意

依賴這些介面的工作負載將失去網路連線。

如需更多資訊,請參閱 issue #7650。

升級到 v1.6.x 後,請執行以下步驟:

  1. 透過在管理主機上執行以下命令來驗證附加到 mgmt-br 和 mgmt-bo 的 VLAN:

    bridge vlan show

    上述輸出僅顯示 mgmt-br 和 mgmt-bo 的主要 VLAN 部分

  2. 透過將以下命令新增到 /oem/90_custom.yaml 檔案,手動將所需的次要 VLAN 新增到 mgmt-br 橋接器和 mgmt-bo 介面:

    • /etc/wicked/scripts/setup_bond.sh 部分
    bridge vlan add vid <vlan-id> dev $INTERFACE
    • /etc/wicked/scripts/setup_bridge.sh 部分
    bridge vlan add vid <vlan-id> dev $INTERFACE self
    bridge vlan add vid <vlan-id> dev mgmt-bo
    important

    您必須為每個不同的 VLAN ID 包含一個單獨的命令。確保將 vlan-id 佔位符替換為實際 ID。

  3. 一旦 /oem/90_custom.yaml 檔案更新,請重新啟動管理主機。

  4. 透過在主機上執行以下命令來驗證所有必需的 VLAN 都已新增:

    bridge vlan show

升級情境範例​

在以下範例中,v1.5.x 叢集最初安裝時使用了主要 VLAN 介面(VLAN ID:2021)。要新增次要 VLAN 介面(VLAN ID:2113),在管理主機上建立了 /oem/99_vlan-ifcfg.yaml 檔案,內容如下:

stages:
initramfs:
- name: "Host VLAN interface mgmt-br.353"
files:
- path: /etc/sysconfig/network/ifcfg-mgmt-br.2113
owner: 0
group: 0
permissions: 384
content: |
STARTMODE='onboot'
BOOTPROTO='static'
IPADDR='10.255.113.150/24'
VLAN_ID='2113'
ETHERDEVICE='mgmt-br'
VLAN='yes'
DEFROUTE='no'

典型的預期是在 mgmt 介面(mgmt-br.2113)上建立額外的 VLAN 子介面,並分配 IPv4 位址。此外,在叢集升級到 v1.6.x 後,此子介面和主要介面(mgmt-br.2021)都預期用於 L3 連線。

然而,升級到 v1.6.0 後,實際上 VLAN 子介面雖然已建立,但次要 VLAN(VLAN ID:2113)從 mgmt-br 橋接器和 mgmt-bo 介面中移除了。重新啟動後,只有主要 VLAN ID 被分配給 mgmt-br 橋接器和 mgmt-bo 介面(使用 /oem/90_custom.yaml 檔案)。 要減輕此變更的影響,您必須執行前一節中描述的解決方法。這涉及識別次要 VLAN 介面,然後將必要的介面新增到 mgmt-br 橋接器和 mgmt-bo 介面。

6. 執行中的虛擬機顯示「需要重新啟動動作以使虛擬機設定變更生效」​

當從 v1.5.x 升級 Harvester 到 v1.6.x、將 harvester-ui-extension 更新到 v1.6.x,或使用 Rancher v2.12.x 匯入現有的 Harvester 叢集時,您可能會在某些執行中的虛擬機 (VM) 上遇到警告訊息。此訊息指示虛擬機設定已變更,需要重新啟動才能套用變更。

vm-restart-action-required

要修復此問題,您可以重新啟動虛擬機。

vm-restart

為什麼會出現關於執行中虛擬機的訊息?​

在 Harvester v1.6.0 之前,控制器在虛擬機建立期間將 MAC 位址從 VMI 修補到虛擬機規格中。這確保了虛擬機重新啟動後 MAC 位址保持一致。然而,這種方法在不需要重新啟動的情況下修改了虛擬機規格,導致 KubeVirt 控制器將「RestartRequired」條件新增到虛擬機狀態。以前,此條件未在 UI 中顯示,儘管它在虛擬機的 YAML 中可見。

從 v1.6.0 開始,為了支援 CPU 和記憶體熱插拔功能,並通知使用者某些 CPU 和記憶體變更可能不會立即生效,我們決定在 UI 中公開「RestartRequired」條件。這就是為什麼在升級 Harvester 或將 harvester-ui-extension 更新到 v1.6.x 後會出現此訊息。