跳至主要内容

離線環境

本節說明如何在離線環境中使用 Harvester。一些使用案例可能是 Harvester 將在離線狀態下安裝、在防火牆後面或在代理伺服器後面。

Harvester ISO 映像包含使其在離線環境中運作所需的所有套件。

在 HTTP Proxy 後面運作​

在某些環境中,從伺服器或 VM 連接到外部服務需要 HTTP(S) proxy。

在安裝期間設定 HTTP Proxy​

您可以在 ISO 安裝期間設定 HTTP(S) proxy,如下圖所示:

iso-proxy

在 Harvester 設定中設定 HTTP Proxy​

您可以在 Harvester 儀表板的設定頁面中設定 HTTP(S) proxy:

  1. 前往 Harvester UI 的設定頁面。
  2. 找到 http-proxy 設定,點擊 ⋮ > Edit setting
  3. 輸入 http-proxy、https-proxy 和 no-proxy 的值。

proxy-setting

備註

Harvester 會將必要的位址附加到使用者設定的 no-proxy,以確保內部流量正常運作。

即 localhost,127.0.0.1,0.0.0.0,10.0.0.0/8,longhorn-system,cattle-system,cattle-system.svc,harvester-system,.svc,.cluster.local。harvester-system 自 v1.1.2 起已新增到清單中。

當叢集中的節點不使用 proxy 相互通訊時,需要在第一個節點成功安裝後將 CIDR 新增到 http-proxy.noProxy。請參閱由於錯誤的 http-proxy 設定導致部署多節點叢集失敗。

客體叢集映像​

安裝和執行 Harvester 所需的所有映像都方便地打包到 ISO 中,無需在裸機節點上預先載入映像。Harvester 叢集在幕後獨立且有效地管理它們。

然而,重要的是要了解,由 Harvester node driver 建立的客體 K8s 叢集(例如 RKE2 叢集)是與 Harvester 叢集不同的實體。客體叢集在 VM 內運作,需要從網際網路或私有 registry 拉取映像。

如果客體 K8s 叢集中的 Cloud Provider 選項設定為 Harvester,它會部署 Harvester cloud provider 和容器儲存介面(CSI)驅動程式。

cluster-registry

因此,我們建議在您的離線環境中監控每個 RKE2 版本,並將所需的映像拉取到您的私有 registry 中。請參閱 Harvester 支援矩陣頁面上的 Harvester CCM & CSI Driver with RKE2 Releases 部分,以獲得最佳的 Harvester cloud provider 和 CSI 驅動程式功能支援。

與外部 Rancher 整合​

每當匯入 Harvester 叢集時,Rancher 會決定要使用的 rancher-agent 映像。如果該映像未包含在 Harvester ISO 中,則必須從網際網路拉取並載入到每個節點上,或推送到 Harvester 叢集的 registry。

# 在可以同時存取網際網路和 Harvester 叢集的電腦上執行以下命令。
docker pull rancher/rancher-agent:<version>
docker save rancher/rancher-agent:<version> -o rancher-agent-<version>.tar

# 將映像 TAR 檔案複製到離線環境。
scp rancher-agent-<version>.tar rancher@<harvester-node-ip>:/tmp

# 使用 SSH 連接到 Harvester 節點,然後載入映像。
ssh rancher@<harvester-node-ip>
sudo -i
docker load -i /tmp/rancher-agent-<version>.tar

Harvester UI extension 與 Rancher 整合​

在 Rancher v2.10.x 及更新版本中,需要 Harvester UI Extension 才能存取 Harvester UI。然而,在離線環境中無法透過網路安裝擴充功能,因此您必須執行以下解決方法:

  1. 拉取具有最新標籤的映像 rancher/ui-plugin-catalog。

  2. 在 Rancher UI 上,前往 Extensions,然後選擇 ⋮ > Manage Extension Catalogs。

  3. 指定所需的資訊。

    • Catalog Image Reference:指定私有 registry URL 和映像儲存庫。

    • Image Pull Secrets:當需要使用者名稱和密碼時,指定用於存取 registry 的 secret。您必須在 cattle-ui-plugin-system 命名空間中建立該 secret。使用 kubernetes.io/dockercfg 或 kubernetes.io/dockerconfigjson 作為 type 的值。

      範例:

      apiVersion: v1
      kind: Secret
      metadata:
      name: my-registry-secret-rancher
      namespace: cattle-ui-plugin-system
      type: kubernetes.io/dockerconfigjson
      data:
      .dockerconfigjson: {base64 encoded data}
  4. 點擊 Load,然後等待擴充功能載入完成。

  5. 在 Available 標籤頁上,找到名為 Harvester 的擴充功能,然後點擊 Install。

  6. 選擇與 Harvester 叢集匹配的版本,然後點擊 Install。

    更多資訊請參閱 Harvester UI Extension 支援矩陣。

  7. 前往 Virtualization Management > Harvester Clusters。

    您現在可以匯入 Harvester 叢集並存取 Harvester UI。

時間需求​

可靠的網路時間協定(NTP)伺服器對於在 Kubernetes 叢集中的所有節點上維護正確的系統時間至關重要,尤其是在執行 Harvester 時。Kubernetes 依賴 etcd(一個分散式鍵值存放區),它需要精確的時間同步來確保資料一致性,並防止領導者選舉、日誌複製和叢集穩定性方面的問題。

在無法使用外部時間來源的離線環境中,維護準確且同步的時間變得更加重要。如果沒有適當的時間同步,叢集節點可能會遇到身份驗證失敗、排程問題,甚至資料損壞。為了降低這些風險,組織應該部署一個強健的內部 NTP 伺服器,在網路內的所有系統之間同步時間。

確保叢集中準確且一致的時間對於可靠性、安全性和整體系統完整性至關重要。

故障排除​

UI Extensions 未顯示​

如果 Extensions 畫面為空,請前往 Repositories(⋮ > Manage Repositories),然後點擊 Refresh。

安裝失敗​

如果您在安裝期間遇到錯誤,請檢查 uiplugins 資源。

範例:

bash-4.4# k get uiplugins -A
NAMESPACE NAME PLUGIN NAME VERSION STATE
cattle-ui-plugin-system harvester harvester 1.0.3 pending

bash-4.4# k get uiplugins harvester --namespace cattle-ui-plugin-system -o yaml
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
# skip
name: harvester
namespace: cattle-ui-plugin-system
spec:
plugin:
endpoint: http://ui-plugin-catalog-svc.cattle-ui-plugin-system:8080/plugin/harvester-1.0.3

確保 svc.namespace 可從 Rancher 存取。如果該端點無法存取,您可以直接使用叢集 IP,例如 10.43.33.58:8080/plugin/harvester-1.0.3。