VM をできるだけ早く起動する必要がある場合は、このページの手順に沿って仮想マシン(VM)の起動時間を最小限に抑えます。起動時間を最小限に抑えるには、リソース効率を犠牲にする必要があります。プロジェクトで追加のリソースが消費され、セキュリティ サーフェスが増加します。
始める前に
gdcloud
コマンドライン インターフェース(CLI)コマンドを使用するには、gdcloud
CLI をダウンロード、インストール、構成していることを確認してください。Distributed Cloud のすべてのコマンドは gdcloud
または kubectl
CLI を使用し、オペレーティング システム(OS)環境が必要です。
kubeconfig ファイルのパスを取得する
Management API サーバーに対してコマンドを実行するには、次のリソースがあることを確認します。
Management API サーバーの kubeconfig ファイルがない場合は、ログインして生成します。
これらの手順では、Management API サーバーの kubeconfig ファイルのパスを使用して
MANAGEMENT_API_SERVER
を置き換えます。
権限とアクセス権をリクエストする
このページに記載されているタスクを行うには、プロジェクトの VirtualMachine 管理者ロールが必要です。VM が存在するプロジェクトの名前空間にプロジェクト VirtualMachine 管理者(project-vm-admin
)ロールがあることを確認する手順に沿って操作します。
ディスク接続を維持する
VM が起動すると、VM のノードから VM のディスクへの接続の開始に数秒かかります。VM の起動を高速化するには、VM のシャットダウン時にディスク接続を維持して、後続の VM 起動時にディスク接続が再開されないようにする必要があります。これを実現するために、ディスク接続のキープアライブを有効にするコマンドを実行すると、システムはすべての VM のディスクをマウントするダミー Pod を自動的に作成します。
ディスク接続のキープアライブを有効にする
プロジェクト PROJECT
の VM_NAME
という VM のディスク接続を維持するには、次のコマンドを実行します。この操作を行うと、システムは自動的にダミー Pod を作成します。
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT --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 プロジェクト。 |
ディスク接続のキープアライブが有効になっている場合、VM と同じプロジェクトに disk-connection-keep-alive-VM_NAME
という名前の Pod が作成されます。VM のディスク接続は Pod によって維持されるため、次の VM の再起動は高速になり、以降の起動時間も短縮されます。
ディスク接続のキープアライブ アフィニティを設定する
Kubernetes スケジューラは、再起動時に VM に別のノードを選択する場合があります。このような事態が発生する可能性を減らすには、VM とキープアライブ Pod の間に VM 間アフィニティ ルールを構成します。自動的に実行されるように構成します。
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT --type merge --patch $'
metadata:
annotations:
disk.virtualmachine.gdc.goog/add-connection-keep-alive-affinity: "true"
'
これにより、VM の優先アフィニティ設定がキープアライブ Pod に追加されます。
注意点
ディスク接続を維持するうえで、次の 2 つの注意点があります。
- キープアライブ Pod では、追加のリソース使用量が発生します。
- これは、ノードあたりの Pod 数の上限にカウントされます。
- Kubernetes によって割り当てられた追加の IP アドレスを使用します。
- CPU とメモリの使用量はごくわずかです。
- キープアライブ Pod が存在するノードには、VM がシャットダウンされている場合でも VM のディスクが常にアタッチされているため、セキュリティ サーフェスが増加します。
BIOS ファームウェアを使用する
GDC では、Unified Extensible Firmware Interface(UEFI)ファームウェアで VM を起動する方が、BIOS ファームウェアで VM を起動するよりも時間がかかります。
起動時間を最小限に抑えるには、VM のファームウェア タイプを BIOS に設定します。
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT --type merge --patch $' spec: firmware: type: bios enableSecureBoot: '
VM が実行されている場合は、VM を再起動するの手順に沿って再起動します。
注意点
BIOS ファームウェアを使用する際の注意点として、セキュアブートがサポートされていないことが挙げられます。
大容量のブートディスクを使用する
VM の起動時間を最小限に抑えるには、サイズが 500 GB 以上のブートディスクを VM にアタッチします。