跳至主要内容

虛擬化管理

透過 Rancher 的虛擬化管理功能,您可以匯入和管理多個 Harvester 叢集。它提供了一個解決方案,從單一介面統一虛擬化和容器管理。

此外,Harvester 利用 Rancher 的現有功能,例如身份驗證和 RBAC 控制,以提供完整的多租戶支援。

請參閱 Harvester & Rancher 支援矩陣以找到所需的 Rancher 版本。您可以使用以下其中一個指南,透過您選擇的提供者來部署和佈建 Rancher 及 Kubernetes 叢集:

匯入 Harvester 叢集​

  1. 檢查並準備容器映像。

    為了便於匯入任務,將在 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" 以確保映像已準備就緒。
  2. Rancher 伺服器啟動並執行後,登入並點擊漢堡選單,然後選擇 Virtualization Management 標籤頁。選擇 Import Existing 將下游 Harvester 叢集匯入 Rancher 伺服器。

  3. 指定 Cluster Name 並點擊 Create。然後您將看到註冊指南;請開啟目標 Harvester 叢集的儀表板並按照指南操作。

  4. 代理節點準備就緒後,您應該能夠從 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
    ...
  5. 從 Harvester UI,您可以點擊漢堡選單以導航回 Rancher 多叢集管理頁面。

升級​

若要升級已匯入的 Harvester 叢集,您必須按照特定順序升級 Rancher、Harvester UI Extension 和 Harvester。在 Rancher v2.10.x 及更新版本中,需要 Harvester UI Extension 才能存取 Rancher 中的 Harvester UI。

  1. 檢查支援矩陣以確定與 Harvester 叢集匹配的 Rancher 和 Harvester UI Extension 版本。

  2. 升級 Rancher。

  3. 升級 Harvester UI Extension。

    有關在離線環境中升級擴充功能的資訊,請參閱 Harvester UI extension 與 Rancher 整合。

  4. 升級 Harvester。

    警告

    Harvester v1.5.0 及更新版本中的功能在 Harvester UI Extension 中實現。如果您不升級 Rancher 和 Harvester UI Extension,這些功能可能無法使用。

故障排除​

請參閱將 Harvester 叢集匯入 Rancher。

多租戶​

在 Harvester 中,我們利用了現有的 Rancher RBAC 授權,讓使用者可以根據其叢集和專案角色權限來檢視和管理一組資源。

在 Rancher 中,每個人都以使用者身份進行身份驗證,這是一個授予使用者存取 Rancher 權限的登入。如身份驗證中所述,使用者可以是本機使用者或外部使用者。

使用者登入 Rancher 後,其授權(也稱為存取權限)由全域權限以及叢集和專案角色決定。

  • 全域權限:
    • 定義任何特定叢集範圍之外的使用者授權。
  • 叢集和專案角色:
    • 定義使用者被分配角色的特定叢集或專案內的使用者授權。

全域權限和叢集及專案角色都建立在 Kubernetes RBAC 之上。因此,權限和角色的執行由 Kubernetes 執行。

  • 叢集擁有者對叢集及其內部的所有資源擁有完全控制權,例如主機、VM、磁碟區、映像、網路、備份和設定。
  • 專案使用者可以被分配到特定專案,並擁有管理專案內資源的權限。
important

強烈建議使用內建角色範本和專案範圍的 RBAC 來管理使用者存取權限。

Harvester 在 Kubernetes 和 KubeVirt 之上實現了自己的 RBAC 模型,整合了 Rancher 風格的專案和多租戶邏輯。在升級或重新設定期間,僅參照 kubevirt.io 角色的自訂 RoleBindings 可能會遺失、重設或與 Harvester 的內部狀態不一致。

多租戶範例​

以下範例很好地說明了多租戶功能的運作方式:

  1. 首先,透過 Rancher Users & Authentication 頁面新增新使用者。然後點擊 Create 以新增兩個獨立的新使用者,例如分別為 project-owner 和 project-readonly。

    • project-owner 是有權管理特定專案(例如 default 專案)資源清單的使用者。
    • project-readonly 是對特定專案(例如 default 專案)具有唯讀權限的使用者。

  2. 導航到 Harvester UI 後,點擊其中一個已匯入的 Harvester 叢集。

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

  3. 繼續將 project-readonly 使用者以唯讀權限新增到同一專案,然後點擊 Save。

  4. 開啟無痕瀏覽器並以 project-owner 身份登入。

  5. 以 project-owner 使用者身份登入後,點擊 Virtualization Management 標籤頁。您應該能夠看到您被分配到的叢集和專案。

  6. 點擊 Images 標籤頁以檢視先前上傳到 harvester-public 命名空間的映像清單。如果需要,您也可以上傳自己的映像。

  7. 使用您上傳的其中一個映像建立 VM。

  8. 以另一個使用者(例如 project-readonly)登入,該使用者將只有被分配專案的唯讀權限。

備註

harvester-public 命名空間是一個預先定義的命名空間,所有被分配到此叢集的使用者都可以存取。

刪除已匯入的 Harvester 叢集​

使用者可以透過 Virtualization Management > Harvester Clusters 從 Rancher UI 刪除已匯入的 Harvester 叢集。選擇您要移除的叢集,然後點擊 Delete 按鈕以刪除已匯入的 Harvester 叢集。

您還需要在關聯的 Harvester 叢集上重設 cluster-registration-url 設定,以清理 Rancher 叢集代理。

delete-cluster

警告

請勿執行 kubectl delete -f ... 命令來刪除已匯入的 Harvester 叢集,因為這將移除整個 cattle-system 命名空間,而 Harvester 叢集需要此命名空間。