全部產品
Search
文件中心

Serverless App Engine:設定應用生命週期管理

更新時間:Sep 12, 2025

如果您精通K8s,且需要在應用程式容器啟動前或者關閉前執行相關操作,例如運行前部署資源或者停止前優雅下線應用,可以設定應用生命週期管理。本文主要介紹如何在SAE應用中配置PostStart、PreStop和TerminationGracePeriodSeconds。

功能介紹

  • Pod hook(容器鉤子)是由Kubernetes管理的kubelet組件發起的機制,用於在容器的生命週期的關鍵階段執行自訂任務。這些階段包括容器進程啟動前(preStart)和終止前(preStop)。鉤子的引入使Kubernetes能夠更加靈活和精細地管理容器的生命週期。更多資訊,請參見Container Lifecycle Hooks

    • 啟動後處理(PostStart設定):是容器生命週期中的一種鉤子,該鉤子在容器被建立後立刻觸發,通知容器它已經被建立。該鉤子不需要向其所對應的hook handler傳入任何參數。如果該鉤子對應的hook handler執行失敗,則該容器會被關閉,並根據該容器的重啟策略決定是否重啟該容器。

    • 停止前處理(PreStop設定):是容器生命週期中的一種鉤子,該鉤子在容器終止前觸發,通常用於執行清理操作或優雅地關閉服務。其對應的hook handler必須在Kubernetes向容器發送終止訊號(如 SIGTERM)之前完成。無論hook handler的執行結果如何,一旦其完成,Kubernetes將向容器發送SIGTERM訊號以終止容器,並根據配置等待一段時間後強制移除容器。

  • 優雅下線逾時設定(TerminationGracePeriodSeconds):其主要作用是為容器的優雅終止提供時間保障,確保應用能夠在被強制停止之前完成必要的清理和關閉操作。這不僅有助於提升系統的穩定性和可靠性,還能避免因強制終止導致的資料丟失、請求失敗和服務不可用等問題。結合 PreStop鉤子可以實現完整的優雅下線流程。

功能入口

操作入口在不同情境下有差異:

建立應用

  1. 登入SAE控制台,在左側導覽列選擇應用管理 > 應用列表,然後選擇目標地區和目標命名空間,最後單擊建立應用

  2. 應用基本資料嚮導頁面進行配置後,單擊下一步:進階設定

  3. 進階設定頁面,找到並展開應用生命週期管理地區。

對正在啟動並執行應用進行變更

警告

重新部署應用後,該應用將會被重啟。為避免業務中斷等不可預知的錯誤,請在業務低峰期執行部署操作。

  1. 登入SAE控制台,在左側導覽列選擇應用管理 > 應用列表,然後選擇目標地區和目標命名空間,最後單擊目標應用程式名稱。

  2. 在目標應用的基礎資訊頁面,單擊部署應用

  3. 部署應用頁面,找到並展開應用生命週期管理地區。

對已停止的應用進行變更

  1. 登入SAE控制台,在左側導覽列選擇應用管理 > 應用列表,然後選擇目標地區和目標命名空間,最後單擊目標應用程式名稱。

  2. 在目標應用的基礎資訊頁面,單擊修改應用配置

  3. 修改應用配置頁面,找到並展開應用生命週期管理地區。

操作步驟

應用生命週期管理地區,按需配置啟動後處理(PostStart設定)停止前處理(PreStop設定)優雅下線逾時設定(TerminationGracePeriodSeconds)

建議您把三者全部進行配置,以實現容器完整的生命週期管控閉環,保障服務平滑啟停、資源有序釋放及業務零中斷。

啟動後處理(PostStart設定)

應用生命週期管理地區的啟動後處理(PostStart設定)頁簽配置PostStart。

說明

SAE提供了兩種不同的Shell解譯器可供您選擇,分別是:

  • >_ /bin/sh

  • >_ /bin/bash

例如應用啟動前,需要將Hello from the postStart handler內容寫入/usr/share/message檔案。

在生產環境中,請根據實際業務情境進行配置。本文提供的樣本僅為最小化驗證配置功能可用性,不可直接用於生產環境。

oNFSDw9bjS

結果驗證:

應用建立或重新部署完成後,使用Webshell進入應用執行個體的字元介面,查看/usr/share/message檔案是否存在並寫入了相應的內容。

R5oYr5WL5f

停止前處理(PreStop設定)

應用生命週期管理地區的停止前處理(PreStop設定)頁簽配置PreStop。

說明

SAE提供了兩種不同的Shell解譯器可供您選擇,分別是:

  • >_ /bin/sh

  • >_ /bin/bash

例如在容器終止前執行Perform cleanup操作並將其寫入到/cleanup.log檔案中,然後等待100秒以便進行驗證。

在生產環境中,請根據實際業務情境進行配置。本文提供的樣本僅為最小化驗證配置功能可用性,不可直接用於生產環境。

je7qGGznHp

結果驗證:

在應用的基礎資訊頁面,單擊停止應用,然後使用Webshell進入應用執行個體的字元介面,查看/cleanup.log檔案是否存在並寫入了相應的內容。

fEznm2T8Jm

優雅下線逾時設定(TerminationGracePeriodSeconds)

應用生命週期管理地區的優雅下線逾時設定(TerminationGracePeriodSeconds)頁簽配置優雅下線逾時時間。

如果您設定的優雅下線逾時時間小於容器優雅終止的時間(包括PreStop鉤子執行耗時和容器處理SIGTERM耗時),則在優雅下線逾時時間耗盡時強制終止(訊號名稱:SIGKILL,退出碼:137)容器,導致優雅終止流程中斷。例如容器優雅終止的時間為100秒,而設定的優雅逾時時間為60秒,那麼容器會在優雅終止之前被殺死。

bXgkgc94CQ

結果驗證:

本樣本中,設定的優雅逾時時間小於容器優雅下線時間,以便結果驗證。

在應用的基礎資訊頁面,單擊停止應用,然後使用Webshell進入應用執行個體的字元介面,查看容器是否會報137的退出碼。

容器在優雅下線階段,容器會一直處於Terminating狀態,直到超過設定的優雅逾時時間。

51N2ViXRg9