盡量縮短 VM 啟動時間

如要盡快啟動 VM,請按照本頁的說明,盡量縮短虛擬機器 (VM) 的啟動時間。縮短啟動時間會犧牲資源效率,也就是說,專案會消耗額外資源,且安全漏洞會增加。

本文適用於平台管理員或應用程式作業人員群組的開發人員,這類人員會在 Distributed Cloud 環境中設定 VM 執行個體啟動時間。詳情請參閱 GDC 實體隔離說明文件的目標對象

事前準備

如要使用 gdcloud 指令列介面 (CLI) 指令,請務必下載、安裝及設定 gdcloud CLI。Distributed Cloud 的所有指令都使用 gdcloudkubectl 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 時就不會重新啟動磁碟連線。為此,當您執行指令來啟用磁碟連線 keep-alive 時,系統會自動建立虛擬 Pod,掛接所有 VM 的磁碟。

啟用磁碟連線 keep-alive

如要讓專案 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 時會更快,後續的啟動時間也會縮短。

設定磁碟連線的 keep-alive 相依性

Kubernetes 排程器可能會在 VM 重新啟動時,為 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 上新增偏好的親和性設定,以保留 Pod。

注意事項

請注意以下兩件事:

  • keep-alive Pod 會增加資源用量:
    • 這會計入每個節點的 Pod 數量上限。
    • 並使用 Kubernetes 指派的額外 IP 位址。
    • 這項功能只會耗用極少的額外 CPU 和記憶體。
  • 由於存在 Keep-Alive Pod 的節點一律會附加 VM 的磁碟 (即使 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。