盡量縮短 VM 啟動時間

如果需要 VM 盡快啟動,請按照本頁的操作說明,盡可能縮短虛擬機器 (VM) 的啟動時間。縮短開始時間的代價是資源效率,專案會耗用額外資源,且安全性介面會增加。

本文適用對象為平台管理員或應用程式操作人員群組中的開發人員,負責在 Distributed Cloud 環境中設定 VM 執行個體開始時間。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。

事前準備

如要使用 gdcloud 指令列介面 (CLI) 指令,請務必下載、安裝及設定 gdcloud CLI。Distributed Cloud 的所有指令都使用 gdcloud 或 kubectl CLI,且需要作業系統 (OS) 環境。

取得 kubeconfig 檔案路徑

如要對 Management API 伺服器執行指令,請確認您具備下列資源:

  1. 如果您沒有 Management API 伺服器的 kubeconfig 檔案,請登入並產生該檔案。

  2. 請使用 Management API 伺服器的 kubeconfig 檔案路徑,取代這些操作說明中的 MANAGEMENT_API_SERVER。

要求 IAM 角色

如要盡可能縮短 VM 的開始時間,請與 IAM 專案管理員聯絡,要求取得虛擬機器專案管理員 (project-vm-admin) 角色。

所有 VM 角色都必須繫結至 VM 所在專案的命名空間。按照步驟驗證存取權。

保持磁碟連線

VM 啟動時,從 VM 節點到 VM 磁碟的連線需要幾秒鐘才能建立。如要加快 VM 啟動速度,VM 關閉時必須保持磁碟連線,這樣後續啟動 VM 時就不會重新啟動磁碟連線。為此,當您執行指令啟用磁碟連線持續運作功能時,系統會自動建立虛擬 Pod,掛接所有 VM 的磁碟。

啟用磁碟連線持續運作

如要為專案 PROJECT 中名為 VM_NAME 的 VM 保持磁碟連線,請執行下列指令。完成後,系統會自動建立虛擬 Pod:

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n PROJECT \
  patch virtualmachines.virtualmachine.gdc.goog VM_NAME \
  --type merge --patch $'
metadata:
  annotations:
    disk.virtualmachine.gdc.goog/enable-connection-keep-alive: "true"
'

請根據下列定義,替換這些操作說明中的變數。

變數定義
MANAGEMENT_API_SERVER Management API 伺服器 kubeconfig 檔案。
VM_NAME VM 的名稱。
PROJECT VM 所在的 GDC 專案。

啟用磁碟連線 Keep-Alive 後,系統會在 VM 所在的專案中建立名為 disk-connection-keep-alive-VM_NAME 的 Pod。Pod 會維持 VM 的磁碟連線,因此下次重新啟動 VM 和後續啟動時間都會縮短。

設定磁碟連線持續連線親和性

Kubernetes 排程器可能會在 VM 重新啟動時選取其他節點。為降低這種情況發生的機率,請在 VM 和 keep-alive Pod 之間設定 VM 間親和性規則。如要設定自動執行這項操作,請按照下列步驟操作:

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n PROJECT \
  patch virtualmachines.virtualmachine.gdc.goog VM_NAME \
  --type merge --patch $'
metadata:
  annotations:
    disk.virtualmachine.gdc.goog/add-connection-keep-alive-affinity: "true"
'

這會在 VM 上新增偏好親和性設定,指向 keep-alive Pod。

注意事項

保持磁碟連線時,請注意以下兩點:

  • keep-alive Pod 會產生額外的資源用量:
    • 會計入每個節點的 Pod 數量上限。
    • 它會使用 Kubernetes 指派的其他 IP 位址。
    • 這項功能只會耗用極少量的 CPU 和記憶體。
  • 安全防護範圍會擴大,因為即使 VM 關閉,keep-alive Pod 所在的節點仍會連接 VM 的磁碟。

使用 BIOS 韌體

在 GDC 中,使用統一可延伸韌體介面 (UEFI) 韌體啟動 VM 的速度,比使用 BIOS 韌體啟動 VM 慢。

  1. 為確保開始時間最短,請將 VM 的韌體類型設為 BIOS:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      patch virtualmachines.virtualmachine.gdc.goog VM_NAME \
      -type merge --patch $'
    spec:
      firmware:
        type: bios
        enableSecureBoot:
    '
    
  2. 如果 VM 正在運作,請按照重新啟動 VM 的操作說明重新啟動。

注意事項

使用 BIOS 韌體的缺點是不支援安全啟動。

使用大型開機磁碟

如要盡可能縮短 VM 開始時間,請將大小為 500 GB 以上的開機磁碟附加至 VM。