Share via


教學課程:調整容器應用程式

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.AppMicrosoft.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 入口網站 中的縮放比例(選擇性)

  1. 登入 Azure 入口網站
  2. 在頂端的 [ 搜尋 ] 列中,輸入 my-container-app
  3. 在搜尋結果的 [資源] 底下,選取 my-container-app
  4. 在左側的導覽列中,展開 [應用程式 ],然後選取 [ 調整和複本]。
  5. 在 [ 調整和複本] 頁面中,選取 [ 複本]。
  6. 您的容器應用程式現在有一個以上的複本正在執行。

容器應用程式復本的螢幕快照。

您可能需要選取 [ 重新 整理] 以查看新的複本。

  1. 在左側導覽列中,展開 [監視] ,然後選取 [ 計量]。

  2. 在 [計量] 頁面中,將 [計量] 設定為 [要求]。

  3. 選取 [套用分割]

  4. 展開 [ ] 下拉式清單並檢查 [複本]。

  5. 選取藍色複選標記圖示以完成編輯分割。

  6. 此圖表顯示容器應用程式收到的要求,依復本分割。

    容器應用程式計量圖表,其中顯示依復本分割的要求。

  7. 根據預設,圖表擴展會設定為過去 24 小時,時間粒度為 15 分鐘。 選取縮放比例,並將其變更為過去 30 分鐘,時間粒度為 1 分鐘。 選取 [套用] 按鈕。

  8. 選取圖形並拖曳,以反白顯示容器應用程式收到的要求最近增加。

容器應用程式計量圖表的螢幕快照,其中顯示依復本分割的要求,其規模為 30 分鐘,且時間粒度為 1 分鐘。

下列螢幕快照顯示縮放檢視,其中顯示容器應用程式所接收要求在複本之間如何分割。

容器應用程式計量圖表的螢幕快照,其中顯示縮放檢視中依複本分割的要求。

清除資源

如果您不打算繼續使用此應用程式,請執行下列命令來刪除資源群組,以及本教學課程中建立的所有資源。

警告

下列命令會刪除指定的資源群組和其中包含的所有資源。 如果本教學課程範圍以外的資源存在於指定的資源群組中,則也會一併刪除。

az group delete --name my-container-apps

提示

有問題嗎? 在 Azure 容器應用程式存放庫中提出問題,讓我們在 GitHub 上了解該問題。

下一步