如要盡快啟動 VM,請按照本頁的說明,盡量縮短虛擬機器 (VM) 的啟動時間。縮短啟動時間會導致資源效率降低,因為專案會消耗額外資源,且安全漏洞也會增加。
本文適用於平台管理員或應用程式作業人員群組的開發人員,這類人員會在 Distributed Cloud 環境中設定 VM 執行個體啟動時間。詳情請參閱 GDC 氣隙環境適用的目標對象說明文件。
事前準備
如要使用 gdcloud 指令列介面 (CLI) 指令,請務必下載、安裝及設定 gdcloud CLI。Distributed Cloud 的所有指令都使用 gdcloud 或 kubectl CLI,且需要作業系統 (OS) 環境。
取得 kubeconfig 檔案路徑
如要對 Management API 伺服器執行指令,請確認您具備下列資源:
登入並產生 Management API 伺服器的 kubeconfig 檔案 (如果沒有)。
使用 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 與 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 慢。
如要盡量縮短啟動時間,請將 VM 的韌體類型設為 BIOS:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ patch virtualmachines.virtualmachine.gdc.goog VM_NAME \ -type merge --patch $' spec: firmware: type: bios enableSecureBoot: '如果 VM 正在執行,請按照重新啟動 VM 的操作說明重新啟動。
注意事項
使用 BIOS 韌體的缺點是不支援安全啟動。
使用大型開機磁碟
如要盡量縮短 VM 啟動時間,請將大小為 500 GB 以上的開機磁碟掛接到 VM。