虛擬化管理
透過 Rancher 的虛擬化管理功能,您可以匯入和管理多個 Harvester 叢集。它提供了一個解決方案,從單一介面統一虛擬化和容器管理。
此外,Harvester 利用 Rancher 的現有功能,例如身份驗證和 RBAC 控制,以提供完整的多租戶支援。
請參閱 Harvester & Rancher 支援矩陣以找到所需的 Rancher 版本。您可以使用以下其中一個指南,透過您選擇的提供者來部署和佈建 Rancher 及 Kubernetes 叢集:
- AWS(使用 Terraform)
- AWS Marketplace(使用 Amazon EKS)
- Azure(使用 Terraform)
- DigitalOcean(使用 Terraform)
- GCP(使用 Terraform)
- Hetzner Cloud(使用 Terraform)
- Vagrant
- Equinix Metal
- Outscale(使用 Terraform)
- 手動安裝
匯入 Harvester 叢集
- UI
- API
-
檢查並準備容器映像。
為了便於匯入任務,將在 Harvester 叢集上建立一個名為
cattle-cluster-agent-***的新 pod。用於此 pod 的容器映像取決於您的 Rancher 伺服器版本(例如,如果您執行的是 Rancher v2.7.9,則會使用映像rancher/rancher-agent:v2.7.9)。此外,此動態映像未打包到 Harvester ISO 中,而是在匯入期 間從儲存庫中拉取。如果您的 Harvester 叢集無法直接存取網際網路,請執行以下其中一項操作:
- 為叢集設定私有 registry 並新增該映像。Harvester 將自動從此 registry 拉取映像。
- 如果您設定了用於存取外部服務的 HTTP proxy,請驗證它是否按預期運作。您在 Harvester 設定中指定的 DNS 伺服器應該能夠解析網域名稱
docker.io。 - 使用命令
docker pull rancher/rancher-agent:v2.7.9 && docker save -o rancher-agent.tar rancher/rancher-agent:v2.7.9下載映像。接下來,在每個叢集節點中建立下載映像的副本,然後使用命令sudo -i ctr --namespace k8s.io image import rancher-agent.tar將映像匯入 containerd。最後,在每個節點上執行sudo -i crictl image ls | grep "rancher-agent"以確保映像已準備就緒。
-
Rancher 伺服器啟動並執行後,登入並點擊漢堡選單,然後選擇 Virtualization Management 標籤頁。選擇 Import Existing 將下游 Harvester 叢集匯入 Rancher 伺服器。

-
指定
Cluster Name並點擊 Create。然後您將看到註冊指南;請開啟目標 Harvester 叢集的儀表板並按照指南操作。
-
代理節點準備就緒後,您應該能夠從 Rancher 伺服器檢視和存取已匯入的 Harvester 叢集,並相應地管理您的 VM。

每當代理節點卡住時,請在 Harvester 叢集上執行命令
kubectl get pod cattle-cluster-agent-*** -n cattle-system -oyaml。如果顯示以下訊息,請檢查步驟 1 中的資訊,刪除此 pod,然後將自動建立新的 pod 以重新啟動匯入程序。...
state:
waiting:
message: Back-off pulling image "rancher/rancher-agent:v2.7.9"
reason: ImagePullBackOff
... -
從 Harvester UI,您可以點擊漢堡選單以導航回 Rancher 多叢集管理頁面。

-
在 Rancher Kubernetes 叢集中,建立新的
Cluster資源。範例:
apiVersion: provisioning.cattle.io/v1
kind: Cluster
metadata:
name: harvester-cluster-name
namespace: fleet-default
labels:
provider.cattle.io: harvester
annotations:
field.cattle.io/description: Human readable cluster description
spec:
agentEnvVars: [] -
Cluster資源的狀態更新後,從.status.clusterName屬性取得叢集 ID(格式:c-m-foobar)。 -
在與叢集 ID 同名的命名空間中,使用叢集 ID 建立
ClusterRegistrationToken。您必須在 token 的.spec.clusterName欄位中指定叢集 ID。範例:
apiVersion: management.cattle.io/v3
kind: ClusterRegistrationToken
metadata:
name: default-token
namespace: c-m-foobar
spec:
clusterName: c-m-foobar -
ClusterRegistrationToken的狀態更新後,取得 token 的.status.manifestUrl屬性值。 -
在 Harvester 叢集中,修補設定
cluster-registration-url,並在value欄位中指定從叢集註 冊 token 的.status.manifestUrl屬性取得的 URL。範例:
apiVersion: harvesterhci.io/v1beta1
kind: Setting
metadata:
name: cluster-registration-url
value: https://rancher.example.com/v3/import/abcdefghijkl1234567890-c-m-foobar.yaml
升級
若要升級已匯入的 Harvester 叢集,您必須按照特定順序升級 Rancher、Harvester UI Extension 和 Harvester。在 Rancher v2.10.x 及更新版本中,需要 Harvester UI Extension 才能存取 Rancher 中的 Harvester UI。
-
檢查支援矩陣以確定與 Harvester 叢集匹配的 Rancher 和 Harvester UI Extension 版本。
-
升級 Rancher。
-
有關在離線環境中升級擴充功能的資訊,請參閱 Harvester UI extension 與 Rancher 整合。
-
升級 Harvester。
警告Harvester v1.5.0 及更新版本中的功能在 Harvester UI Extension 中實現。如果您不升級 Rancher 和 Harvester UI Extension,這些功能可能無法使用。
故障排除
多租戶
在 Harvester 中,我們利用了現有的 Rancher RBAC 授權,讓使用者可以根據其叢集和專案角色權限來檢視和管理一組資源。
在 Rancher 中,每個人都以使用者身份進行身份驗證,這是一個授予使用者存取 Rancher 權限的登入。如身份驗證中所述,使用者可以是本機使用者或外部使用者。
使用者登入 Rancher 後,其授權(也稱為存取權限)由全域權限以及叢集和專案角色決定。
全域權限和叢集及專案角色都建立在 Kubernetes RBAC 之上。因此,權限和角色的執行由 Kubernetes 執行。
- 叢集擁有者對叢集及其內部的所有資源擁有完全控制權,例如主機、VM、磁碟區、映像、網路、備份和設定。
- 專案使用者可以被分配到特定專案,並擁有管理專案內資源的權限。
強烈建議使用內建角色範本和專案範圍的 RBAC 來管理使用者存取權限。
Harvester 在 Kubernetes 和 KubeVirt 之上實現了自己的 RBAC 模型,整合了 Rancher 風格的專案和多租戶邏輯。在 升級或重新設定期間,僅參照 kubevirt.io 角色的自訂 RoleBindings 可能會遺失、重設或與 Harvester 的內部狀態不一致。
多租戶範例
以下範例很好地說明了多租戶功能的運作方式:
-
首先,透過 Rancher
Users & Authentication頁面新增新使用者。然後點擊Create以新增兩個獨立的新使用者,例如分別為project-owner和project-readonly。project-owner是有權管理特定專案(例如 default 專案)資源清單的使用者。project-readonly是對特定專案(例如 default 專案)具有唯讀權限的使用者。

-
導航到 Harvester UI 後,點擊其中一個已匯入的 Harvester 叢集。
- 點擊
Projects/Namespaces標籤頁。 - 選擇一個專案(例如
default),然後點擊Edit Config選單,以適當的權限將使用者分配到此專案。例如,project-owner使用者將被分配專案擁有者角色。

- 點擊
-
繼續將
project-readonly使用者以唯讀權限新增到同一專案,然後點擊 Save。
-
開啟無痕瀏覽器並以
project-owner身份登入。 -
以
project-owner使用者身份登入後,點擊 Virtualization Management 標籤頁。您應該能夠看到您被分配到的叢集和專案。 -
點擊 Images 標籤頁以檢視先前上傳到
harvester-public命名空間的映像清單。如果需要,您也可以上傳自己的映像。 -
使用您上傳的其中一個映像建立 VM。
-
以另一個使用者(例如
project-readonly)登入,該使用者將只有被分配專案的唯讀權限。
harvester-public 命名空間是一個預先定義的命名空間,所有被分配到此叢集的使用者都可以存取。