共用單一用戶群節點群組與本機單一用戶群節點群組類似。舉例來說,共用節點群組的費用相同、消耗的配額相同,且位於資源階層結構中的父項專案下。
共用節點群組與本機節點群組的差異在於,貴機構中的其他專案可以在共用節點群組中佈建虛擬機器 (VM) 執行個體。
在多個專案或機構之間共用節點群組,有助於:
將您管理的節點群組整合到單一專案,然後與其他專案或整個機構共用這些節點
將各專案的 VM 合併到使用率偏低的節點群組後,刪除節點以降低成本
透過單一團隊管理單一用戶群節點
與較小的專案共用單一租戶節點,並保留這些專案之間的安全性與存取權控管界限
在同一專案的節點群組之間執行即時遷移
使用「在節點群組內遷移」維護政策,提高節點群組的使用率,並減少預留的維護節點數量
下圖顯示與其他專案共用的節點群組,以便管理這些專案中 VM 的其他部門,可以在共用節點群組中佈建 VM。
共用節點群組的運用效益
下表比較使用本機節點群組的專案,以及使用共用節點群組的專案。請注意,使用共用節點群組的專案,vCPU 使用率不足的情況會減少。
| 專案設定 | 本機節點群組 | 共用節點群組 |
|---|---|---|
| 專案 | 10 | 10 |
| 每個專案的 vCPU | 24 | 24 |
| 節點群組 | 10 | 1 |
| 節點 / 節點群組 | 1 | 3 |
| 每個節點的 vCPU | 80 | 80 |
| 使用率 / 節點群組 | 24 | 80 |
| 使用率過低 / 節點群組 | 56 | 0 |
| 總閒置時間 | 10 x 56 = 560 個 vCPU | 1 x 0 = 0 個 vCPU |
共用節點群組的設定
Compute Engine 會使用下列設定,在共用節點群組中佈建 VM,並共用節點群組:
您在建立或更新單一租戶節點群組時設定的共用設定。如要指定是否與其他專案或整個機構共用節點群組,請使用 gcloud CLI 設定 (
--share-setting、--share-with) 或 REST 設定 (shareSetting、shareWith)。您使用節點相依性標籤在共用節點群組中佈建 VM 時,預設會使用的
compute.googleapis.com/project節點相依性標籤。如要瞭解其他預設節點相依性標籤,請參閱「預設相依性標籤」一節。
維護政策考量事項
如果節點群組使用節點群組內遷移維護政策,Compute Engine 會保留至少 1 個節點供即時遷移事件使用,因此節點群組必須至少有 2 個節點。您無法在預留節點上排程 VM,因此採用這項維護政策的節點群組通常整體使用率較低。因此,需要「在節點群組內遷移」維護政策的工作負載很適合共用節點群組,因為這類工作負載通常最能從提升使用率中獲益。
IAM 角色和權限
分享節點群組時,請注意下列有關 IAM 角色和權限的資訊:
如果節點群組與專案共用,則任何可在列出專案或機構中建立 VM 的使用者,都能從這些專案將 VM 佈建到共用節點群組,不必變更 IAM 角色或權限。
compute.soleTenantViewerIAM 角色可讓您列出及查看節點群組 (gcloud CLI/ REST)。您無法使用這個角色修改節點群組。無論 VM 的 IAM 權限為何,只要使用者具備這個角色或列出節點群組的權限,就能查看節點群組中所有 VM 的專案 ID、名稱、機型,以及本機 SSD 和 GPU 的相關資訊。
限制
法規遵循制度限制:
- 無論 VM 的 IAM 權限為何,只要使用者有權列出節點群組,就能查看節點群組中所有 VM 的專案 ID、名稱和機器類型。因此,為避免跨專案資訊揭露的風險,在共用節點群組中佈建 VM 的專案應遵守相同的法規遵循制度。
Google Cloud 主機限制:
- 如果沒有權限查看共用節點群組中的 VM,這些 VM 就不會顯示在Google Cloud 控制台「單一租戶節點」頁面的 VM 清單中。
- 在「單一租戶節點群組」頁面修改共用設定後,UI 中的「與誰共用」設定不會更新。如要查看更新後的「與誰共用」設定,請前往「單一租戶節點」頁面。
- 與機構中的所有專案或指定專案共用節點群組後,您只能從擁有專案中查看共用的節點群組,無法從共用專案中查看。如要在共用節點群組中佈建 VM,請前往節點群組共用專案的「VM instances」(VM 執行個體) 頁面,然後修改單一用戶群節點相依性標籤。
共用限制:
定價
共用節點群組中的 VM 不會產生額外費用,共用節點群組也不會產生額外費用。如要進一步瞭解單一租戶節點定價,請參閱單一租戶節點定價。
事前準備
- 建立單一租戶節點群組前,請先建立單一租戶節點範本。
- 在單一租戶節點中佈建 VM 前,請先檢查配額。視您預留的節點數量和大小而定,您可能需要申請額外配額。
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上的分頁,瞭解如何使用範例:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
- 設定預設地區和區域。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
建立新的節點群組並共用
如要建立新的節點群組,並與其他專案或整個機構共用,請使用 Google Cloud 控制台、gcloud CLI 或 REST。
控制台
建立單一租戶節點群組。詳情請參閱「建立單一租戶節點群組」。
如要設定共用設定,請在「Configure share settings」(設定共用設定)中指定下列其中一個選項:
- 如要與貴機構中的所有專案共用節點群組,請選擇「與組織中的所有專案共用這個節點群組」。
- 如要與組織中的特定專案共用節點群組,請選擇「與組織中的指定專案共用這個節點群組」。
如不想共用節點群組,請選擇「不要與其他專案共用這個節點群組」。
gcloud
如要建立共用節點群組,請使用下列gcloud compute
sole-tenancy node-groups create
指令。
gcloud compute sole-tenancy node-groups create NODE_GROUP \
--zone=ZONE \
--node-template=NODE_TEMPLATE \
--target-size=SIZE \
--share-setting=SHARE_SETTING \
--share-with=PROJECTS
更改下列內容:
NODE_GROUP:節點群組的名稱。ZONE:要在其中建立節點群組的可用區。NODE_TEMPLATE:先前建立的節點範本名稱。SIZE:節點群組中的節點數量。SHARE_SETTING:節點群組的共用設定。設為projects可與特定專案共用,設為organization則可與整個機構共用。PROJECTS:要與節點群組共用的專案 ID 或專案編號清單。只有在將SHARE_SETTING設為projects時,才需要這個屬性。
REST
如要建立共用節點群組,請使用下列nodeGroups.insert方法。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups
{
...
"name": NODE_GROUP,
"nodeTemplate": NODE_TEMPLATE,
"size": SIZE,
"shareSettings": {
"shareType": SHARE_TYPE,
"projectMap": {
string: {
"projectId": PROJECTS
},
}
}
...
}
更改下列內容:
PROJECT:要在其中建立節點群組的專案名稱。ZONE:要在其中建立節點群組的可用區。NODE_GROUP:節點群組的名稱。NODE_TEMPLATE:先前建立的節點範本名稱。SIZE:節點群組中的節點數量。SHARE_TYPE:節點群組的共用設定。設為SPECIFIC_PROJECTS可與特定專案共用,設為ORGANIZATION則可與整個機構共用。PROJECTS:要與節點群組共用的專案 ID 或專案編號清單。只有在將SHARE_TYPE設為SPECIFIC_PROJECTS時,才需要這個屬性。
在共用節點群組中佈建單一用戶群 VM
如要在共用節點群組中佈建單一租戶 VM,請使用Google Cloud 控制台、gcloud CLI 或 REST。
控制台
在 Google Cloud 控制台中,切換至您已共用節點群組的專案。
前往「VM instances」(VM 執行個體) 頁面。
點選「建立執行個體」。
在「區域」中,選擇共用節點群組的區域。
在「機器設定」>「系列」中,選擇共用單一租戶節點群組範本指定的機器類型。
展開「Advanced options」(進階選項) 區段。
展開「單一用戶群」專區。
按一下「瀏覽」。
選擇「選取專案」,然後指定含有共用節點群組的專案。
選擇單一用戶群節點群組,或該群組中的特定單一用戶群節點,以佈建 VM。
gcloud
使用節點群組名稱在共用節點群組中佈建 VM
如要使用節點群組名稱,在共用節點群組中佈建獨占租戶 VM,請使用下列 gcloud compute instances create
指令。
gcloud compute instances create VM_NAME \
--machine-type=MACHINE_TYPE \
--node-group=NODE_GROUP \
--node-project=NODE_PROJECT
更改下列內容:
VM_NAME:要在共用節點群組中建立的新單一租戶 VM 名稱MACHINE_TYPE:新單一租戶 VM 的機型NODE_GROUP:要建立單一租戶 VM 的共用節點群組名稱NODE_PROJECT:包含節點群組的專案,用於佈建 VM
使用節點相依性檔案,在共用節點群組中佈建 VM
如要使用節點親和性檔案,在共用節點群組中佈建專屬租戶 VM,請使用下列 gcloud compute instances create 指令。
gcloud compute instances create VM_NAME \
--machine-type=MACHINE_TYPE \
--node-affinity-file=NODE_AFFINITY_FILE
更改下列內容:
VM_NAME:要使用相依性標籤在共用節點群組中建立的單一租戶 VM 名稱。MACHINE_TYPE:要在共用節點群組中建立的單一租戶 VM 機型。NODE_AFFINITY_FILE:包含節點親和性資訊的.json檔案名稱。在節點相依性檔案中,將相依性標籤鍵設為"compute.googleapis.com/project",運算子設為"IN",值設為包含節點群組的專案。如要進一步瞭解如何設定節點親和性,請參閱「設定節點親和性標籤」。
REST
如要使用節點親和性檔案,在共用節點群組中佈建單一租戶 VM,請使用下列 nodeGroups.insert 方法。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances
{
...
"name": VM_NAME,
"machineType": MACHINE_TYPE,
"scheduling": {
...
"nodeAffinities": [
{
"key": KEY,
"operator": OPERATOR,
"values": [
VALUE
]
}
],
...
},
...
}
更改下列內容:
PROJECT:擁有節點群組的專案名稱。ZONE:節點群組的可用區。VM_NAME:要使用相依性標籤在共用節點群組中建立的單一租戶 VM 名稱。MACHINE_TYPE:要在共用節點群組中建立的單一租戶 VM 機型。KEY:相依性標籤。請設為"compute.googleapis.com/project"。OPERATOR:親和性標籤運算子。請設為"IN"。VALUE:包含節點群組的專案,用於佈建 VM。使用專案名稱或專案 ID 指定一個專案。
如要進一步瞭解如何設定節點親和性,請參閱「設定節點親和性標籤」。
查看節點群組的共用設定
如要查看節點群組的共用設定,請使用 Google Cloud 控制台、gcloud CLI 或 REST。
控制台
前往 Google Cloud 控制台的「單一租戶節點」頁面。
如要查看節點群組的屬性,請在「名稱」欄中,按一下節點群組的名稱。
gcloud
如要查看節點群組的共用設定,請使用下列 gcloud
compute sole-tenancy node-groups describe 指令。
gcloud compute sole-tenancy node-groups describe NODE_GROUP
將 NODE_GROUP 替換為要查看共用設定的節點群組名稱。
REST
如要查看節點群組的共用設定,請使用下列 nodeGroups.get 方法。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups
更改下列內容:
PROJECT:要查看共用設定的節點群組所在專案名稱ZONE:包含要查看共用設定的節點群組的可用區
共用現有節點群組
如要與其他專案或整個機構共用現有節點群組,請使用 Google Cloud 控制台、gcloud CLI 或 REST。
控制台
前往 Google Cloud 控制台的「單一租戶節點」頁面。
在「Name」(名稱) 欄中,按一下節點群組名稱。
如要與機構內的所有專案共用節點群組,或與機構內選取的專案共用節點群組,請依序點選「總覽」>「與以下對象共用」,然後按一下「編輯」圖示 。
gcloud
如要更新節點群組的共用設定,請使用下列gcloud
compute sole-tenancy node-groups update
指令。
gcloud compute sole-tenancy node-groups update NODE_GROUP \
--zone=ZONE \
--share-setting=SHARE_SETTING \
--share-with=PROJECTS
更改下列內容:
NODE_GROUP:要更新共用設定的節點群組名稱。SHARE_SETTING:節點群組的共用設定。設為projects可與特定專案共用,設為organization則可與整個機構共用。PROJECTS:要與節點群組共用的專案 ID 或專案編號清單。只有在將SHARE_SETTING設為projects時,才需要這個屬性。
REST
如要更新節點群組的共用設定,請使用下列nodeGroups.patch方法。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP
{
"shareSettings": {
"shareType": SHARE_TYPE,
"projectMap": {
string: {
"projectId": PROJECTS
},
}
}
}
更改下列內容:
PROJECT:要更新共用設定的節點群組所屬專案名稱。ZONE:包含要更新共用設定的節點群組的可用區。NODE_GROUP:要更新共用設定的節點群組名稱。SHARE_TYPE:節點群組的共用設定。設為projects可與特定專案共用,設為organization則可與整個機構共用。PROJECTS:要與節點群組共用的專案 ID 或專案編號清單。只有在將SHARE_SETTING設為SPECIFIC_PROJECTS時,才需要這個屬性。
停止共用節點群組
如要停止與其他專案或整個機構共用節點群組,請使用 gcloud CLI 或 REST。
控制台
前往 Google Cloud 控制台的「單一租戶節點」頁面。
按一下節點群組的「名稱」。
依序點選「總覽」>「與誰共用」,然後按一下「編輯」圖示 。
如要停止共用,請選擇「不要與其他專案共用這個節點群組」。
gcloud
如要停止與其他專案或整個機構共用節點群組,請使用下列 gcloud compute sole-tenancy node-groups update 指令。
gcloud compute sole-tenancy node-groups update NODE_GROUP \
--zone=ZONE \
--share-setting=local
將 NODE_GROUP 替換為要停止共用的節點群組名稱。
REST
如要停止與其他專案或整個機構共用節點群組,請使用下列nodeGroups.patch方法。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP
{
"shareSettings": {
"shareType": LOCAL
}
}
更改下列內容:
PROJECT:要停止共用節點群組的專案名稱ZONE:包含要停止共用節點群組的可用區NODE_GROUP:要停止共用的節點群組名稱
從擁有專案中刪除共用節點群組
如要從擁有專案中刪除共用節點群組,請使用Google Cloud 控制台、gcloud CLI 或 REST。刪除節點群組前,請先停止在節點群組中執行的所有 VM。
控制台
前往 Google Cloud 控制台的「單一租戶節點」頁面。
在「Name」(名稱) 欄中,按一下節點群組名稱。
點選「刪除」。
gcloud
如要從擁有專案中刪除共用節點群組,請使用下列 gcloud compute sole-tenancy node-groups delete 指令。
gcloud compute sole-tenancy node-groups delete NODE_GROUP
將 NODE_GROUP 替換為要刪除的節點集區名稱。
REST
如要從擁有專案中刪除共用節點群組,請使用下列 nodeGroups.delete 方法。
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP
更改下列內容:
PROJECT:要刪除節點群組的專案名稱ZONE:包含要刪除節點群組的可用區NODE_GROUP:要刪除的節點群組名稱