教學課程:調整容器應用程式
Azure 容器應用程式會透過一組宣告式調整規則來管理自動水平調整。 當容器應用程式相應放大時,會視需要建立容器應用程式的新實例。 這些執行個體稱為複本。
在本教學課程中,您會將 HTTP 調整規則新增至容器應用程式,並觀察應用程式的規模。
必要條件
需求 | 指示 |
---|---|
Azure 帳戶 | 如果您沒有 Azure 帳戶,可以建立一個免費帳戶。 您需要 Azure 訂用帳戶的參與者 許可權才能繼續進行。 如需詳細資訊,請參閱使用 Azure 入口網站 指派 Azure 角色。 |
GitHub 帳戶 | 免費取得一個。 |
Azure CLI | 安裝 Azure CLI。 |
設定
若要從 CLI 登入 Azure,請執行下列命令,並遵循提示來完成驗證程序。
az login
若要確保您執行最新版的 CLI,請執行升級命令。
az upgrade
接下來,安裝或更新 CLI 的 Azure Container Apps 擴充功能。
az extension add --name containerapp --upgrade
現在已安裝目前的擴充功能或模組,請註冊 Microsoft.App
和 Microsoft.OperationalInsights
命名空間。
注意
Azure 容器應用程式資源已從 Microsoft.Web
命名空間移轉至 Microsoft.App
命名空間。 如需詳細資訊,請參閱 2022 年 3 月將命名空間從 Microsoft.Web 移轉至 Microsoft.App。
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
建立及部署容器應用程式
使用 containerapp up
命令建立及部署容器應用程式。 此指令會建立:
- 資源群組
- 容器應用程式環境
- Log Analytics 工作區
如果其中任何資源已經存在,命令會使用現有的資源,而不是建立新的資源。
最後,命令會使用公用容器映射來建立及部署容器應用程式。
az containerapp up \
--name my-container-app \
--resource-group my-container-apps \
--location centralus \
--environment 'my-container-apps' \
--image mcr.microsoft.com/k8se/quickstart:latest \
--target-port 8080 \
--ingress external \
--query properties.configuration.ingress.fqdn \
注意
請確定 參數的值 --image
在小寫中。
將 --ingress
設定為 external
,即可讓容器應用程式可供公用要求使用。
此命令 up
會傳回容器應用程式的完整功能變數名稱(FQDN)。 將此 FQDN 複製到文字檔。 您將在 [ 傳送要求 ] 區段中使用它。 您的 FQDN 看起來像下列範例:
https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io
新增調整規則
執行 az containerapp update
命令,將 HTTP 調整規則新增至容器應用程式。
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--scale-rule-name my-http-scale-rule \
--scale-rule-http-concurrency 1
此命令會使用 的名稱 my-http-scale-rule
和並行設定 1
,將 HTTP 調整規則新增至容器應用程式。 如果您的應用程式收到多個並行 HTTP 要求,運行時間會建立應用程式的復本來處理要求。
此命令會 update
以 JSON 回應的形式傳回新的組態,以確認您的要求是否成功。
開始記錄輸出
您可以藉由檢視 Container Apps 執行時間所產生的記錄,觀察應用程式調整的效果。 az containerapp logs show
使用 命令開始接聽記錄專案。
az containerapp logs show \
--name my-container-app \
--resource-group my-container-apps \
--type=system \
--follow=true
此命令 show
會即時從容器應用程式的系統記錄傳回專案。 如下列範例所示,您可以預期回應:
{
"TimeStamp":"2023-08-01T16:49:03.02752",
"Log":"Connecting to the container 'my-container-app'..."
}
{
"TimeStamp":"2023-08-01T16:49:03.04437",
"Log":"Successfully Connected to container:
'my-container-app' [Revision: 'my-container-app--9uj51l6',
Replica: 'my-container-app--9uj51l6-5f96557ffb-5khg9']"
}
{
"TimeStamp":"2023-08-01T16:47:31.9480811+00:00",
"Log":"Microsoft.Hosting.Lifetime[14]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9481264+00:00",
"Log":"Now listening on: http://[::]:8080"
}
{
"TimeStamp":"2023-08-01T16:47:31.9490917+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9491036+00:00",
"Log":"Application started. Press Ctrl+C to shut down."
}
{
"TimeStamp":"2023-08-01T16:47:31.949723+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497292+00:00",
"Log":"Hosting environment: Production"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497325+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497367+00:00",
"Log":"Content root path: /app/"
}
如需詳細資訊,請參閱 az containerapp logs。
傳送要求
開啟新的Bash殼層。 執行下列命令,將 <YOUR_CONTAINER_APP_FQDN>
取代為您從 [建立及部署容器應用程式] 區段儲存的容器應用程式 的完整域名。
seq 1 50 | xargs -Iname -P10 curl "<YOUR_CONTAINER_APP_FQDN>"
這些命令會以10個要求的並行批次,將50個要求傳送至您的容器應用程式。
命令或自變數 | 描述 |
---|---|
seq 1 50 |
產生從 1 到 50 的數位序列。 |
| |
管道運算子會將序列傳送至 xargs 命令。 |
xargs |
使用指定的 URL 執行curl |
-Iname |
做為 輸出的 seq 佔位元。 這個自變數可防止傳回值傳送至 curl 命令。 |
curl |
呼叫指定的 URL。 |
-P10 |
指示 xargs 一次最多執行10個進程。 |
如需詳細資訊,請參閱下列檔:
在第一個殼層中,您執行 az containerapp logs show
命令時,輸出現在會包含一或多個記錄專案,如下所示。
{
"TimeStamp":"2023-08-01 18:09:52 +0000 UTC",
"Type":"Normal",
"ContainerAppName":"my-container-app",
"RevisionName":"my-container-app--9uj51l6",
"ReplicaName":"my-container-app--9uj51l6-5f96557ffb-f795d",
"Msg":"Replica 'my-container-app--9uj51l6-5f96557ffb-f795d' has been scheduled to run on a node.",
"Reason":"AssigningReplica",
"EventSource":"ContainerAppController",
"Count":0
}
檢視 Azure 入口網站 中的縮放比例(選擇性)
- 登入 Azure 入口網站。
- 在頂端的 [ 搜尋 ] 列中,輸入 my-container-app。
- 在搜尋結果的 [資源] 底下,選取 my-container-app。
- 在左側的導覽列中,展開 [應用程式 ],然後選取 [ 調整和複本]。
- 在 [ 調整和複本] 頁面中,選取 [ 複本]。
- 您的容器應用程式現在有一個以上的複本正在執行。
您可能需要選取 [ 重新 整理] 以查看新的複本。
在左側導覽列中,展開 [監視] ,然後選取 [ 計量]。
在 [計量] 頁面中,將 [計量] 設定為 [要求]。
選取 [套用分割]。
展開 [ 值 ] 下拉式清單並檢查 [複本]。
選取藍色複選標記圖示以完成編輯分割。
此圖表顯示容器應用程式收到的要求,依復本分割。
根據預設,圖表擴展會設定為過去 24 小時,時間粒度為 15 分鐘。 選取縮放比例,並將其變更為過去 30 分鐘,時間粒度為 1 分鐘。 選取 [套用] 按鈕。
選取圖形並拖曳,以反白顯示容器應用程式收到的要求最近增加。
下列螢幕快照顯示縮放檢視,其中顯示容器應用程式所接收要求在複本之間如何分割。
清除資源
如果您不打算繼續使用此應用程式,請執行下列命令來刪除資源群組,以及本教學課程中建立的所有資源。
警告
下列命令會刪除指定的資源群組和其中包含的所有資源。 如果本教學課程範圍以外的資源存在於指定的資源群組中,則也會一併刪除。
az group delete --name my-container-apps
提示
有問題嗎? 在 Azure 容器應用程式存放庫中提出問題,讓我們在 GitHub 上了解該問題。