跳至主要内容

上傳映像檔

目前支援三種建立映像檔的方式:透過 URL 上傳映像檔、透過本地檔案上傳映像檔,以及透過卷冊 (volumes) 建立映像檔。

透過 URL 上傳映像檔​

若要在 Images (映像檔) 頁面匯入虛擬機器映像檔,請輸入可從叢集存取的 URL。描述和標籤為選填項目。

備註
  • 映像檔名稱將使用 URL 位址的檔案名稱自動填入。您可以隨時自訂映像檔名稱。
  • 避免使用每日建置 (daily build) URL(例如 Ubuntu Jammy daily build)。當 Longhorn backing image 的所有複本遺失時,Longhorn 會嘗試再次下載檔案以進行自我修復。使用每日建置 URL 會產生問題,因為 URL 本身會變更,導致校驗和 (checksum) 不符與衝突,進而導致複本遺失。
警告

當您使用第三方 StorageClass,且下載 URL 託管於不支援 HTTP 範圍請求 (HTTP range requests) 的伺服器(例如 Python 的 http.server)時,大型映像檔可能會在 Harvester 中導致記憶體問題。為了確保下載可靠,請改用 NGINX 或 Apache。

此問題已在 v1.6.1 中修復。

透過本地檔案上傳映像檔​

目前支援 qcow2、raw 和 ISO 映像檔。

備註
  • 在檔案上傳完成之前,請勿重新整理頁面。

Rancher 多叢集管理中的 HTTP 413 錯誤​

您可以從 Rancher UI 上的 Multi-Cluster Management (多叢集管理) 畫面為 Harvester 叢集上傳映像檔。當映像檔狀態為 Uploading (上傳中),但進度指示器長時間顯示為 0% 時,請檢查 HTTP 回應狀態碼。413 表示請求主體 (request body) 的大小超過限制。

最大請求主體大小應針對託管 Rancher 的叢集進行設定(例如,RKE2 叢集的預設限制為 1 MB,但 K3s 叢集則沒有此限制)。

目前的變通方法是從 Harvester UI 上傳映像檔。如果您選擇從 Rancher UI 上傳映像檔,則可能需要在 Ingress 伺服器上設定相關設定(例如 NGINX 中的 proxy-body-size)。

如果 Rancher 部署在 RKE2 叢集上,請執行以下步驟:

  1. 編輯 Rancher Ingress。

    $ kubectl -n cattle-system edit ingress rancher
  2. 為 nginx.ingress.kubernetes.io/proxy-body-size 指定一個值。

範例:

  1. 刪除卡住的映像檔,然後重新開始上傳程序。

Rancher 多叢集管理中大型映像檔上傳時間過長​

如果您從 Rancher UI 上的 Multi-Cluster Management 畫面為 Harvester 叢集上傳非常大的映像檔(超過 10 GB),操作時間可能會比平常更長,且映像檔狀態(Uploading)可能不會改變。

此行為與 Ingress 設定中的 proxy-request-buffering 有關,這也是針對託管 Rancher 的叢集特定的。

目前的變通方法是從 Harvester UI 上傳映像檔。如果您選擇從 Rancher UI 上傳映像檔,則可能需要在 Ingress 伺服器上設定相關設定(例如 NGINX 中的 proxy-request-buffering)。

如果 Rancher 部署在 RKE2 叢集上,請執行以下步驟:

  1. 編輯 Rancher Ingress。

    $ kubectl -n cattle-system edit ingress rancher
  2. 關閉 nginx.ingress.kubernetes.io/proxy-request-buffering。

範例:

  1. 刪除卡住的映像檔,然後重新開始上傳程序。

上傳先前從 Harvester 下載的映像檔​

從 v1.5.5 開始,Longhorn 會壓縮 backing images 以供下載。如果您嘗試上傳已壓縮的 backing image,Harvester 會拒絕該嘗試並顯示訊息 Upload failed: the uploaded file size xxxx should be a multiple of 512 bytes since Longhorn uses directIO by default(上傳失敗:上傳的檔案大小 xxxx 應為 512 位元組的倍數,因為 Longhorn 預設使用 directIO),這是因為壓縮資料違反了 Longhorn 的資料對齊要求。

上傳前,請使用指令 $ gzip -d <file name> 解壓縮 backing images。

透過卷冊建立映像檔​

在 Volumes (卷冊) 頁面上,點擊 Export Image (匯出映像檔)。輸入映像檔名稱並選取 StorageClass 以建立映像檔。

映像檔 StorageClass​

建立映像檔時,您可以選取一個 StorageClass 並使用其預先定義的參數,如複本數量 (replicas)、節點選擇器 (node selectors) 和磁碟選擇器 (disk selectors)。

備註

映像檔不會直接使用此處選取的 StorageClass。這只是一個 StorageClass 範本。

相反地,它會在幕後建立一個名稱前綴為 longhorn- 的特殊 StorageClass。這是由 Harvester 後端自動完成的,但它會繼承您選取的 StorageClass 的參數。

映像檔標籤 (Image Labels)​

您可以為映像檔新增標籤,這將有助於更準確地識別 OS 類型。此外,如果需要,您也可以新增任何自訂標籤以進行過濾。

如果您的映像檔名稱或 URL 包含任何有效資訊,UI 會自動為您識別 OS 類型和映像檔類別。如果沒有,您也可以在 UI 上手動指定那些相應的標籤。