GCP - Instance Template 概述
Instance Template 一個用於定義 VM instance 配置的模板,其中包括如 machine type、bootdisk、startup script 等等實例屬性,經常和 Instance Groups 結合使用來自動創建 VM instance。對應其他的雲端服務是 :
- Amazon Web Services (AWS) : Launch Template
- Microsoft Azure : 沒有直接類似的,需在 Virtual Machine Scale Sets 內直接設定 VM 所需參數設定
概念上就是做好 VM 的模板,讓 VM 啟動完成後直接就可以達到我們想要的狀態,從這個方向出發的話: Startup Script、Custom Image、Instance Template 都蠻類似的,等等都會介紹和比較一下。
Startup Script
Startup Script 是 VM 在啟動過程中執行任務的腳本,可以用來自動安裝一些應用程式,這樣就不用自己再手動去做。其腳本是會放到 metadata server ,其 Metadata key 有:
startup-script
: 注意不能超過 256 KBstartup-script-url
: 可以使用 gsutil URI 如gs://BUCKET/FILE
每個 VM 都是把其 metadata 存儲在 metadata server 上, VM 可以訪問 metadata server API ,不需要任何額外授權認證的,以 key-value pairs 方式儲存。
Startup Script 通常是 VM 在啟動後,才自動安裝我們想要的 Application ; Custom Image 則是一開始把這些事情預先做好。雖然兩個作用有點相似,但在啟動的時間點是兩個極端。 對於 VM 來說,無論是 Startup Script 還是 Custom Image 都是 launch 一台 VM 的一種設定參數。
特別注意,GCP Startup Script 會在每次重新啟動 VM 時被觸發。
Instance Template
Image 會放到 Instance Template 裡面 ; 而 Startup Script 會看需求設定。Instance Template 經常會用來建立一個單獨的 VM,或者配合使用 managed instance groups(MIG) 來建立 VM ,這樣就不必每次都手動配置,只需根據模板創建新實例 VM,但有一些需要注意的事項 :
Instance Template 的目的是建立具有相同配置的 VM,因此 Instance Template 是無法更新的,如果真的需要變更配置,只能建立新的 Instance Template。
還是由於 Instance Template 的目的是建立具有相同配置的 VM,所以建議若有使用 startup script 安裝應用,一定要記得指定 version。
Instance Template 不會被 GCP 收取任何費用
不難發現 Instance Template 能夠設定的東西基本上和 VM 是完全一樣的,故也不難想像為什麼 Azure 並沒有特地把機器設定的 Template 從 Virtual Machine Scale Sets 中拉出來,大概就是覺得很多餘吧。
比較 Machine Image 、 Snapshot 、 Custom Image 、 Instance Template 之間差別
承之前 Compute Engine 的介紹,在加上本篇描述,會發現其實有非常多種方式把 VM 啟動起來。
Machine Image
是基於整台 VM 的,從 UI 設計也可以看得出來,我們可以針對 VM Instance 來看可以執行的動作,會發現有
create new machine image
的選項。也因為一個 VM 可能會包含多個 disk,故 Machine Image 也是唯一可以一次性備份多個 disk 的方案。目前自己看起來,使用 Machine Image 來作為 migration 遷移也是比較好的選擇,因為本質上最接近 VM 的 clone ,連 startup script 和 network tag 都會一起保存。
Snapshot
是基於單一 disk 的,從頁面上要到 disk page 在針對某一個指定磁碟進行操作,概念上就是針對災難或意外情況的備份,重要的是可以進行排程,設定每隔多久要進行 backup。
Custom Image
也是基於單一 disk 的。目前自己看起來, Custom Image 現在只當作第一次啟動 VM 需要的作業系統定義檔會比較好。雖然也可以,但感覺已經不太適合用作備份概念了,因為快速輕量的 backup 比不上 snapshot ; 方便完整性也沒有 Machine Image 好。
目前自己看起來,感覺 Machine Image 就是來取代 Custom Image 在備份方面的不方便,Machine Image 包含了該台 VM 的所有 Disk、Configuration、Metadata、Permissions ; 但 OS Image 只有 Boot Disk。 或許使用 Machine Image 來做為大版本升級前的 backup 會是比較優的選擇。
Instance Template
如果從備份角度來說的,Instance Template 完全不屬於備份用途。偏向會和 Instance Group 緊密結合來做 auto-scale,目標是建立全新的 VM。