協助程式部署 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

協助程式部署

當您建立或更新協助程式時,Amazon ECS 會執行滾動部署,以在相關聯容量提供者中的所有執行個體上執行協助程式任務。本節說明協助程式部署的運作方式,以及如何設定部署行為。

協助程式部署的運作方式

協助程式部署遵循 drain-provision-replace 模式。當您在具有現有執行個體的容量提供者上建立協助程式,或將協助程式更新為新的任務定義修訂版時,Amazon ECS 會耗盡一批執行個體、使用更新的協助程式佈建替換執行個體,並自動取代應用程式任務。此程序會重複執行,直到所有執行個體執行新的協助程式修訂版為止。

部署生命週期會轉換到下列狀態:

  1. PENDING - Amazon ECS 已建立部署並準備開始。

  2. IN_PROGRESS - Amazon ECS 正積極耗盡執行個體和佈建替換。

  3. SUCCESSFUL - 所有執行個體都在執行目標協助程式修訂。

  4. STOPPED - Amazon ECS 已停止部署,因為它失敗或被新部署取代。協助程式可能處於混合狀態,其中某些執行個體執行舊修訂版,而其他執行個體則執行新修訂版。

如果部署斷路器偵測到故障或在部署期間觸發 CloudWatch 警示,Amazon ECS 會自動轉返至先前的協助程式修訂版。

部署組態參數

您可以在建立或更新協助程式時使用 deploymentConfiguration 參數自訂部署行為。

  • drainPercent (1.0–100.0) - 部署期間要同時耗盡的執行個體百分比。較高的值可加速部署,但可能會暫時減少可用容量。例如, 的值一次20.0耗盡 20% 的執行個體。若沒有指定,則預設為 25.0

  • alarms (DaemonAlarmConfiguration) - 在部署期間要監控的 CloudWatch 警示。Amazon ECS 會在部署期間評估指定的警示,並在任何警示進入 ALARM 狀態時自動轉返。部署開始時,Amazon ECS 會忽略已處於 ALARM 狀態的警示。

  • bakeTimeInMinutes (0–1440) - Amazon ECS 在將所有執行個體更新為新的常駐程式修訂版後,在完成部署之前等待的分鐘數。在此期間,Amazon ECS 會監控 CloudWatch 警示,並在觸發任何警示時自動復原部署。若沒有指定,則預設為 0

部署組態的範例:

aws ecs create-daemon \ --cluster-arn arn:aws:ecs:us-east-1:123456789012:cluster/my-daemon-cluster \ --daemon-name my-monitoring-daemon \ --daemon-task-definition-arn arn:aws:ecs:us-east-1:123456789012:daemon-task-definition/my-daemon-task:1 \ --capacity-provider-arns arn:aws:ecs:us-east-1:123456789012:capacity-provider/my-daemon-capacity-provider \ --deployment-configuration '{"drainPercent":20.0,"bakeTimeInMinutes":5}'

監控部署

使用下列命令追蹤部署進度:

aws ecs list-daemon-deployments \ --daemon-arn arn:aws:ecs:us-east-1:123456789012:daemon/my-daemon-cluster/my-monitoring-daemon
aws ecs describe-daemon-deployments \ --daemon-deployment-arns arn:aws:ecs:us-east-1:123456789012:daemon-deployment/my-daemon-cluster/abc123

describe-daemon-deployments 回應包含部署狀態、目標協助程式修訂版,以及指出有多少執行個體執行目標協助程式的 totalRunningInstanceCount 欄位。

協助程式部署案例

本節會逐步解說 Managed Daemons 的常見部署案例。

在空容量提供者上部署協助程式

在此案例中,您會在沒有現有執行個體的容量提供者上部署協助程式。執行個體會在您排程應用程式任務時啟動。

先決條件:叢集和沒有執行中執行個體的 Amazon ECS 受管執行個體容量提供者。

  1. 註冊您的協助程式任務定義。

  2. 建立協助程式。即使還沒有執行個體,Amazon ECS 也會立即完成建立。

    aws ecs create-daemon \ --cluster-arn arn:aws:ecs:us-east-1:123456789012:cluster/my-daemon-cluster \ --daemon-name my-monitoring-daemon \ --daemon-task-definition-arn arn:aws:ecs:us-east-1:123456789012:daemon-task-definition/my-daemon-task:1 \ --capacity-provider-arns arn:aws:ecs:us-east-1:123456789012:capacity-provider/my-daemon-capacity-provider
  3. 建立使用相同容量提供者的服務。當 Amazon ECS 為服務佈建執行個體時,它會先啟動協助程式任務,然後將應用程式任務轉換為 RUNNING

    aws ecs create-service \ --cluster my-daemon-cluster \ --service-name my-app-service \ --task-definition my-app-task \ --desired-count 2 \ --capacity-provider-strategy capacityProvider=my-daemon-capacity-provider,weight=1
  4. 使用 describe-daemons命令或 主控台中的 Daemons 索引標籤,確認協助程式任務是否在每個執行個體上執行。

注意

當 Amazon ECS 佈建執行個體並啟動協助程式任務時,協助程式部署可能會短暫保持 PENDING 狀態。等待部署到達,SUCCESSFUL再驗證協助程式任務置放。

使用現有執行個體在容量提供者上部署協助程式

在此案例中,您會在已執行執行個體和應用程式任務的容量提供者上部署協助程式。

先決條件:具有執行中執行個體之 Amazon ECS 受管執行個體容量提供者的叢集。

  1. 註冊您的協助程式任務定義。

  2. 建立協助程式。Amazon ECS 會啟動滾動部署,在所有現有的執行個體上放置協助程式任務。

    aws ecs create-daemon \ --cluster-arn arn:aws:ecs:us-east-1:123456789012:cluster/my-daemon-cluster \ --daemon-name my-monitoring-daemon \ --daemon-task-definition-arn arn:aws:ecs:us-east-1:123456789012:daemon-task-definition/my-daemon-task:1 \ --capacity-provider-arns arn:aws:ecs:us-east-1:123456789012:capacity-provider/my-daemon-capacity-provider \ --deployment-configuration '{"drainPercent":25.0,"bakeTimeInMinutes":3}'

    Amazon ECS 會耗盡一批現有的執行個體 (根據 drainPercent)、使用 協助程式佈建取代執行個體,以及取代應用程式任務。此程序會重複執行,直到所有執行個體執行協助程式為止。

  3. 監控部署進度:

    aws ecs list-daemon-deployments \ --daemon-arn arn:aws:ecs:us-east-1:123456789012:daemon/my-daemon-cluster/my-monitoring-daemon

將容量提供者新增至現有的協助程式

在此案例中,您會將第二個容量提供者新增至現有的協助程式。協助程式會自動部署到新容量提供者中的執行個體。

先決條件:在第一個容量提供者上執行的協助程式,以及建立與叢集相關聯的第二個容量提供者。

  1. 更新協助程式以包含兩個容量提供者:

    aws ecs update-daemon \ --daemon-arn arn:aws:ecs:us-east-1:123456789012:daemon/my-daemon-cluster/my-monitoring-daemon \ --daemon-task-definition-arn arn:aws:ecs:us-east-1:123456789012:daemon-task-definition/my-daemon-task:1 \ --capacity-provider-arns \ arn:aws:ecs:us-east-1:123456789012:capacity-provider/my-daemon-capacity-provider \ arn:aws:ecs:us-east-1:123456789012:capacity-provider/my-daemon-capacity-provider-2
  2. 監控部署,並確認協助程式任務在兩個容量提供者的執行個體上執行。

將協助程式更新為新的修訂版

在此案例中,您會更新現有的協助程式,以使用新的任務定義修訂。

  1. 使用更新的容器映像或組態註冊協助程式任務定義的新修訂版。

  2. 更新協助程式以使用新的修訂:

    aws ecs update-daemon \ --daemon-arn arn:aws:ecs:us-east-1:123456789012:daemon/my-daemon-cluster/my-monitoring-daemon \ --daemon-task-definition-arn arn:aws:ecs:us-east-1:123456789012:daemon-task-definition/my-daemon-task:2

    Amazon ECS 會執行滾動部署。它會耗盡執行舊修訂版的執行個體、使用新修訂版佈建取代執行個體,以及自動取代應用程式任務。如果斷路器偵測到故障,Amazon ECS 會回復到先前的修訂版。

  3. 監控部署並確認所有執行個體都執行新的修訂版:

    aws ecs describe-daemon-deployments \ --daemon-deployment-arns arn:aws:ecs:us-east-1:123456789012:daemon-deployment/my-daemon-cluster/deployment-id