在 Compute Engine 執行個體中啟用正常關機功能

本文說明如何在新的或現有的 Compute Engine 執行個體中啟用正常關機功能。

在運算執行個體啟用正常關機功能後,當您停止或刪除運算執行個體時,客體 OS 最多有六小時的時間可以完全關機。如果應用程式需要更多時間完成執行中的工作,這項操作有助於防止資料遺失或檔案系統損毀。如要進一步瞭解正常關閉運算執行個體時適用的規定和限制,請參閱「關於正常關機」。

事前準備

  • 如果尚未設定驗證,請先完成設定。驗證程序會確認您的身分,以便授予 Cloud de Confiance by S3NS 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:

    請根據您打算如何使用本頁範例,選取對應的分頁標籤:

    控制台

    使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,您不需要設定驗證機制。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。 登入後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init
  • 設定預設區域和可用區。
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」一節。

必要的角色

如要取得在運算執行個體中啟用正常關機功能所需的權限,請要求管理員授予您專案的 Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備在運算執行個體中啟用正常關機所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

您必須具備下列權限,才能在運算執行個體啟用正常關機功能:

  • 如要建立運算執行個體,請按照下列步驟操作:
    • 專案的 compute.instances.create 權限
    • 如要使用自訂映像檔建立 VM,請在映像檔上執行 compute.images.useReadOnly
    • 如要使用快照建立 VM,請在快照上compute.snapshots.useReadOnly
    • 如要使用執行個體範本建立 VM,請在執行個體範本上按一下「compute.instanceTemplates.useReadOnly」
    • 如要將舊版網路指派給 VM,請在專案中執行 compute.networks.use
    • 如要為 VM 指定靜態 IP 位址,請在專案中執行 compute.addresses.use
    • 如要在使用舊版網路時,為 VM 指派外部 IP 位址,請在專案中執行 compute.networks.useExternalIp
    • 如要為 VM 指定子網路,請在專案或所選子網路上執行 compute.subnetworks.use
    • 如要在使用虛擬私有雲網路時,將外部 IP 位址指派給 VM,請在專案或所選子網路上,指派 compute.subnetworks.useExternalIp 角色
    • 如要為專案中的 VM compute.instances.setMetadata 設定 VM 執行個體中繼資料,請按照下列步驟操作:
    • 如要設定 VM 的標記,請在 VM 上執行 compute.instances.setTags
    • 如要設定 VM 的標籤,請在 VM 上執行 compute.instances.setLabels
    • 如要設定 VM 使用的服務帳戶,請在 VM 上執行 compute.instances.setServiceAccount
    • 如要為 VM 建立新磁碟:compute.disks.create
    • 如要以唯讀或讀寫模式連接現有磁碟,請在磁碟上compute.disks.use
    • 如要以唯讀模式連接現有磁碟:在磁碟上compute.disks.useReadOnly
  • 如要建立執行個體範本,請在專案中執行 compute.instanceTemplates.create
  • 如要在現有運算執行個體中啟用正常關機功能,請在運算執行個體上執行 compute.instances.update

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

啟用正常關機

如要在運算執行個體中啟用正常關機功能,請使用下列其中一種方法:

在現有運算執行個體啟用正常關機功能

如要在現有運算執行個體啟用正常關機功能,請按照本節說明重新啟動運算執行個體。

如要在現有運算執行個體中啟用正常關機功能,請選取下列其中一個選項:

控制台

  1. 前往 Cloud de Confiance 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 在「Name」(名稱) 欄中,按一下要啟用正常關機功能的運算執行個體名稱。運算執行個體的詳細資料頁面隨即開啟。

  3. 按一下「Edit」(編輯)。

  4. 在「Management」(管理) 部分,執行下列操作:

    1. 勾選「Gracefully shut down the VM」(按適當流程關閉 VM) 核取方塊。

    2. 在隨即顯示的「Maximum duration」(時間長度上限) 欄位中,輸入正常關機作業的持續時間 (以分鐘或秒為單位)。值必須介於 1 秒至 360 分鐘 (6 小時) 之間。

  5. 按一下 [儲存]。

gcloud

如要在現有運算執行個體中啟用正常關機功能,請使用 gcloud compute instances update 指令,並加上 --graceful-shutdown 和 --graceful-shutdown-max-duration 旗標:

gcloud compute instances update INSTANCE_NAME \
    --graceful-shutdown \
    --graceful-shutdown-max-duration=MAX_DURATION \
    --zone=ZONE

更改下列內容:

  • INSTANCE_NAME:運算執行個體的名稱。

  • MAX_DURATION:正常關機的最長持續時間。值的格式必須是小時、分鐘或秒數,後面分別加上 h、m 和 s。例如,指定 1h 代表一小時,或指定 20m10s 代表 20 分鐘 10 秒。值必須介於一秒至六小時之間。

  • ZONE:運算執行個體所在的可用區。

REST

  1. 建立空白 JSON 檔案。

  2. 如要查看現有運算執行個體的屬性,請向 instances.get 方法發出 GET 要求:

    GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
    

    更改下列內容:

    • PROJECT_ID:運算執行個體所在的專案 ID。

    • ZONE:運算執行個體所在的可用區。

    • INSTANCE_NAME:現有運算執行個體的名稱。

  3. 在先前步驟建立的空白 JSON 檔案中,執行下列操作:

    1. 輸入 GET 要求輸出內容中的運算執行個體設定詳細資料。

    2. 在 scheduling 欄位中,新增 gracefulShutdown 欄位,如下所示:

      {
        ...
        "scheduling": {
          ...
          "gracefulShutdown": {
            "enabled": true,
            "maxDuration": {
              "seconds": "MAX_DURATION"
            }
          }
        },
        ...
      }
      

      將 MAX_DURATION 替換為正常關機的最長持續時間 (以秒為單位)。這個值必須介於 1 (1 秒) 和 21600 (21,600 秒,即 6 小時) 之間。

  4. 如要更新運算執行個體並重新啟動,請向 instances.update 方法提出 PUT 要求。在要求中執行下列操作:

    • 在要求網址中,加入設為 RESTART 的 mostDisruptiveAllowedAction 查詢參數。

    • 在要求主體中,加入您在先前步驟建立及更新的 JSON 檔案中的運算執行個體屬性。

    更新運算執行個體的 PUT 要求大致如下:

    PUT https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=RESTART
    
    {
      ...
      "scheduling": {
        ...
        "gracefulShutdown": {
          "enabled": true
        }
      },
      ...
    }
    

如要進一步瞭解如何更新運算執行個體的屬性,請參閱「更新執行個體屬性」。

在建立運算執行個體時啟用正常關機功能

如要建立已啟用正常關機功能的運算執行個體,請選取下列其中一個選項:

控制台

  1. 前往 Cloud de Confiance 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 按一下「Create instance」(建立執行個體)。「Create an instance」(建立執行個體) 頁面會隨即開啟。

  3. 在「Name」(名稱) 欄位中,輸入運算執行個體的名稱。

  4. 在「Region」(區域) 和「Zone」(可用區) 清單中,輸入要建立運算執行個體的區域和可用區。

  5. 指定運算執行個體的機型。

  6. 展開「 VM provisioning model advanced settings」(VM 佈建模式進階設定) 專區,然後執行下列操作:

    1. 勾選「Gracefully shut down the VM」(按適當流程關閉 VM) 核取方塊。

    2. 在隨即顯示的「Maximum duration」(時間長度上限) 欄位中,輸入正常關機作業的持續時間 (以分鐘或秒為單位)。值必須介於 1 秒至 360 分鐘 (6 小時) 之間。

  7. 點選「建立」。

gcloud

如要建立已啟用正常關機功能的運算執行個體,請使用 gcloud compute instances create 指令並加上 --graceful-shutdown 旗標:

gcloud compute instances create INSTANCE_NAME \
    --graceful-shutdown \
    --graceful-shutdown-max-duration=MAX_DURATION \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE

更改下列內容:

  • INSTANCE_NAME:運算執行個體的名稱。

  • MAX_DURATION:正常關機的最長持續時間。值的格式必須是小時、分鐘或秒數,後面分別加上 h、m 和 s。例如,指定 1h 代表一小時,或指定 20m10s 代表 20 分鐘 10 秒。值必須介於一秒至六小時之間。

  • MACHINE_TYPE:運算執行個體要使用的機器類型。

  • ZONE:要建立運算執行個體的可用區。

REST

如要建立已啟用正常關機功能的運算執行個體,請向 instances.insert 方法發出 POST 要求。在要求主體中加入 gracefulShutdown 欄位:

POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "scheduling": {
    "gracefulShutdown": {
      "enabled": true,
      "maxDuration": {
        "seconds": "MAX_DURATION"
      }
    }
  }
}

更改下列內容:

  • PROJECT_ID:要建立運算執行個體的專案 ID。

  • ZONE:要建立運算執行個體的可用區。

  • INSTANCE_NAME:運算執行個體的名稱。

  • MACHINE_TYPE:運算執行個體的機型。

  • IMAGE_PROJECT:含有映文件的映文件專案,例如 debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。

  • IMAGE:指定下列其中一項:

    • 特定版本的 OS 映像檔,例如 debian-12-bookworm-v20240617。

    • 映像檔系列,格式必須為 family/IMAGE_FAMILY。這種格式會指定最新、未淘汰的 OS 映像檔。舉例來說,如果指定 family/debian-12,系統會使用 Debian 12 映像檔系列中的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • MAX_DURATION:正常關機的最長持續時間,以秒為單位。這個值必須介於 1 (一秒) 和 21600 (21,600 秒,或六小時) 之間。

如要進一步瞭解如何建立運算執行個體,請參閱「建立及啟動 Compute Engine 執行個體」。

在建立執行個體範本時啟用正常關機功能

建立啟用正常關機功能的執行個體範本時,正常關機的預設時間長度為 10 分鐘。您也可以指定一秒到六小時之間的自訂時間長度。使用執行個體範本建立的所有運算執行個體,都會啟用正常關機功能。

如要建立已啟用正常關機功能的執行個體範本,請選取下列其中一個選項:

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance templates」(執行個體範本) 頁面。

    前往「Instance templates」(執行個體範本) 頁面

  2. 按一下「Create instance template」(建立執行個體範本)。「Create an instance template」(建立執行個體範本) 頁面隨即顯示。

  3. 在「Name」(名稱) 欄位中,輸入執行個體範本的名稱。

  4. 在「Location」(位置) 區段,根據用途選取要建立區域性或全域執行個體範本:

    • 如要減少跨區域依附元件,請按照下列步驟建立區域執行個體範本:

      1. 選取「區域」。

      2. 在「Region」(區域) 欄位中,選取要建立執行個體範本的區域。

    • 如要跨區域使用執行個體範本,請選取「Global」(全域)。

  5. 在「機器設定」部分,指定機型。

  6. 展開「 VM provisioning model advanced settings」(VM 佈建模式進階設定) 專區,然後執行下列操作:

    1. 勾選「Gracefully shut down the VM」(按適當流程關閉 VM) 核取方塊。

    2. 在隨即顯示的「Maximum duration」(時間長度上限) 欄位中,輸入正常關機作業的持續時間 (以分鐘或秒為單位)。值必須介於 1 秒至 360 分鐘 (6 小時) 之間。

  7. 點選「建立」。

gcloud

如要建立已啟用正常關機功能的執行個體範本,請使用 gcloud compute instance-templates create 指令,並加上 --graceful-shutdown 旗標。

舉例來說,如要建立已啟用正常關機功能的區域執行個體範本,請執行下列指令。如要建立全域執行個體範本,請使用相同指令,但不加上 --instance-template-region 旗標。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --graceful-shutdown \
    --graceful-shutdown-max-duration=MAX_DURATION
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE

更改下列內容:

  • INSTANCE_TEMPLATE_NAME:運算執行個體範本的名稱。

  • MAX_DURATION:正常關機的最長持續時間。值的格式必須是小時、分鐘或秒數,後面分別加上 h、m 和 s。例如,指定 1h 代表一小時,或指定 20m10s 代表 20 分鐘 10 秒。值必須介於一秒至六小時之間。

  • REGION:要建立運算執行個體範本的區域。

  • MACHINE_TYPE:使用執行個體範本建立的運算執行個體機型。

REST

如要建立已啟用正常關機功能的執行個體範本,請向下列其中一種方法提出 POST 要求:

舉例來說,如要建立已啟用正常關機功能的區域執行個體範本,請提出 POST 要求,如下所示:

POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "gracefulShutdown": {
        "enabled": true,
        "maxDuration": {
          "seconds": "MAX_DURATION"
        }
      }
    }
  }
}

更改下列內容:

  • PROJECT_ID:要建立執行個體範本的專案 ID。

  • REGION:建立運算執行個體範本的區域。

  • INSTANCE_TEMPLATE_NAME:運算執行個體範本的名稱。

  • IMAGE_PROJECT:含有映文件的映文件專案,例如 debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。

  • IMAGE:指定下列其中一項:

    • 特定版本的 OS 映像檔,例如 debian-12-bookworm-v20240617。

    • 映像檔系列,格式必須為 family/IMAGE_FAMILY。這種格式會指定最新、未淘汰的 OS 映像檔。舉例來說,如果指定 family/debian-12,系統會使用 Debian 12 映像檔系列中的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • MACHINE_TYPE:使用執行個體範本建立的運算執行個體機型。

  • MAX_DURATION:正常關機的最長持續時間,以秒為單位。這個值必須介於 1 (一秒) 和 21600 (21,600 秒,或六小時) 之間。

如要瞭解建立執行個體範本時的其他設定選項,請參閱「建立執行個體範本」。

後續步驟