使用主控台更新 Amazon ECS 服務 - Amazon Elastic Container Service

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

使用主控台更新 Amazon ECS 服務

您可以使用 Amazon ECS 主控台更新 Amazon ECS 服務。目前的服務組態會預先填入。您可以更新任務定義、所需任務計數、容量提供者策略、平台版本和部署組態;或這些的任意組合。

如需有關如何更新藍/綠部署組態的相關資訊,請參閱 使用主控台更新亞Amazon ECS 藍色/綠色部署

使用主控台時應考慮以下項目:

如果您要暫時停止服務,請將 [所需的工作] 設定為 0。然後,當您準備好啟動服務時,請使用原始「想要的」任務計數更新服務。

使用主控台時應考慮以下項目:

  • 您必須使用 AWS Command Line Interface 來更新使用下列任一參數的服務:

    • 藍/綠部署

    • 服務探索 — 您只能檢視您的服務探索組態。

    • 使用自訂指標追蹤政策

    • 更新服務 — 您無法更新awsvpc網路組態和健全狀況檢查寬限期。

    如需有關如何使用更新服務的資訊 AWS CLI,請參閱《AWS Command Line Interface 參考update-service中的〈〉。

  • 如果您要在任務定義中變更容器使用的連接埠,您可能需要更新容器執行個體的安全群組,才能使用更新的連接埠。

  • Amazon ECS 不會自動更新與 Elastic Load Balancing 負載平衡器或 Amazon ECS 容器執行個體相關聯的安全群組。

  • 如果您的服務使用負載平衡器,於建立時為您的服務定義的負載平衡器組態無法使用主控台變更。您可以改用 AWS CLI 或 SDK 來修改負載平衡器組態。如需如何修改組態的相關資訊,請參閱 Amazon 彈性容器服務 API 參考UpdateService中的。

  • 如果您為服務更新任務定義,則在負載平衡器組態中指定的容器名稱和容器連接埠必須保留在任務定義中。

您可以更新現有的服務,以變更某些服務組態參數,例如服務維護的任務數或任務使用的任務定義。另外,如果您使用的是 Fargate 任務類型,您可以變更任務使用的平台版本。使用 Linux 平台版本的服務無法更新為使用 Windows 平台版本,反之亦然。如果您的應用程式需要更多容量,您可以擴展您的服務。如果您有未使用的容量要縮減,您可以減少服務所需的任務數並釋出資源。

若要將更新容器映像用於任務,您可以使用該映像建立新任務定義修訂版,然後使用主控台中的 force new deployment (強制執行新部署) 選項來將其部署至服務。

服務排程器 (在服務的部署組態中) 使用運作狀態百分比下限和百分比上限參數,決定部署策略。

如果服務使用滾動更新 (ECS) 部署類型,運作狀態百分比下限代表部署期間,服務中必須維持在 RUNNING 狀態的任務數量下限,以所需任務數量的百分比表示 (無條件進位到最接近的整數)。如果服務包含的任務使用 EC2 啟動類型,即使有任何容器執行個體處於 DRAINING 狀態,此參數也適用。使用此參數進行部署,無須使用額外的叢集容量。例如,如果您的服務所需任務數量為四項,且運作狀態百分比下限為 50%,則排程器可先停止兩項現有的任務以釋出叢集容量,再啟動兩項新的任務。如果未使用負載平衡器的服務任務為 RUNNING 狀態,則視為運作良好。如果服務的任務使用負載平衡器,這些任務只要是處於 RUNNING 狀態,且負載平衡器也回報為運作良好,即視為運作良好。運作狀態百分比下限的預設值為 100%。

如果服務使用滾動更新 (ECS) 部署類型,則百分比上限參數代表在部署期間,服務中允許處於 PENDINGRUNNINGSTOPPING 狀態的任務數量上限,以所需任務數量的百分比表示 (無條件捨去小數,只保留整數)。如果服務包含的任務使用 EC2 啟動類型,即使有任何容器執行個體處於 DRAINING 狀態,此參數也適用。使用此參數來定義部署批次大小。例如,如果您的服務有所需的四個任務數目及百分比上限值 200%,則排程器可先啟動四項新任務,再停止四項舊任務。前提是有執行此操作所需的叢集資源。百分比上限的預設值為 200%。

當服務排程器於更新期間取代任務時,服務會先從負載平衡器 (如果使用) 移除任務,並等待連線耗盡。然後,對任務中執行的容器發出相當於 docker stop 的命令。這會造成 SIGTERM 信號和 30 秒逾時,並在之後傳送 SIGKILL,強制停止容器。如果容器在接收到 SIGTERM 信號後於 30 秒內從容處理完畢並結束,就不會傳送任何 SIGKILL 信號。服務排程器依據您定義的運作狀態百分比下限和百分比上限設定,啟動和停止任務。

在容器運作狀態檢查或負載平衡器目標群組運作狀態檢查失敗後,服務排程器也會取代判定為狀況不佳的任務。此取代取決於 maximumPercentdesiredCount 服務定義參數。如果任務標記為運作狀態不佳,服務排程器會先啟動替代任務。然後,會發生以下情況。

  • 如果取代工作的健全狀況狀態為HEALTHY,服務排程器會停止運作狀況不良的工作

  • 如果替代任務的運作狀態為 UNHEALTHY,排程器會停止運作狀態不佳的替代任務或現有運作狀態不佳的任務,以使任務總計數等於 desiredCount

如果 maximumPercent 參數限制排程器先啟動替代任務,排程器會隨機停止運作狀態不佳的任務,以釋放容量,然後啟動替代任務。開始和停止程序會繼續進行,直到所有運作狀態不佳的任務都會取代為運作狀態良好的 一旦已取代了所有運作狀態不佳的任務,而且只執行運作狀態良好的任務,如果任務總數超過 desiredCount,則運作良好的任務會隨機停止,直到任務總計數等於 desiredCount 為止。如需有關 maximumPercentdesiredCount 的詳細資訊,請參閱服務定義參數

重要

如果您要在任務定義中變更容器使用的連接埠,您可能需要更新容器執行個體的安全群組,才能使用更新的連接埠。

如果您為服務更新任務定義,則在服務建立時指定的容器名稱和容器連接埠必須保留在任務定義中。

Amazon ECS 不會自動更新與 Elastic Load Balancing 負載平衡器或 Amazon ECS 容器執行個體相關聯的安全群組。

更新服務 (Amazon ECS 主控台)
  1. 開啟主控台,網址為 https://console.aws.amazon.com/ecs/v2

  2. 叢集頁面上,選擇叢集。

  3. 在叢集詳細資料頁面的 [服務] 區段中,選取服務旁的核取方塊,然後選擇 [更新]。

  4. 若要讓服務啟動新部署,請選取 Force new deployment (強制執行新部署)。

  5. 任務定義中,選擇任務定義系列和修訂。

    重要

    主控台會驗證選取的工作定義系列和修訂版是否與定義的計算規劃相容。如果您收到警告,請確認您的工作定義相容性和您選取的計算組態。

  6. 針對 [想要的工作],輸入您要針對服務執行的工作數目。

  7. 針對 Min running tasks (執行中任務下限),輸入部署期間必須維持在 RUNNING 狀態的服務任務數量下限,它是所需任務數量的百分比 (無條件進位到最接近的整數)。如需詳細資訊,請參閱部署組態

  8. 針對 Max running tasks (執行中任務上限),輸入部署期間允許的處於 RUNNINGPENDING 狀態的服務任務數目上限,它是所需任務數量的百分比 (無條件捨去到最接近的整數)。

  9. 若要設定 Amazon ECS 如何偵測並處理部署失敗,請展開 Deployment failure detection (部署失敗偵測),然後選擇您的選項。

    1. 若要在任務無法啟動時停止部署,請選取 Use the Amazon ECS deployment circuit breaker (使用 Amazon ECS 部署斷路器)。

      若要讓軟體在部署斷路器將部署設定為失敗狀態時,自動將部署復原至上次完成的部署狀態,請選取「失敗時復原」。

    2. 若要停止以應用程式測量結果為基礎的部署,請選取使用 CloudWatch 警示。然後,從CloudWatch 警報名稱中選擇鬧鐘。若要建立新鬧鐘,請前往主 CloudWatch 控台。

      若要讓軟體在 CloudWatch 警示將部署設定為失敗狀態時,自動將部署回復至上次完成的部署狀態,請選取失敗時復原

  10. 若要變更運算選項,請展開 [運算組態],然後執行下列動作:

    1. 對於開啟的服務 AWS Fargate,對於平台版本,請選擇新版本。

    2. 對於使用容量提供者策略的服務,對於容量提供者策略,請執行下列動作:

      • 若要新增其他容量提供者,請選擇 Add more (新增更多)。然後,針對 Capacity provider (容量提供者),選擇容量提供者。

      • 若要移除容量提供者,請選擇容量提供者右側的 Remove (移除)。

      使用 Auto Scaling 群組容量提供者的服務無法更新為使用 Fargate 容量提供者。使用 Fargate 容量提供者的服務無法更新為使用 Auto Scaling 群組容量提供者。

  11. (選擇性) 若要設定服務 Auto Scaling,請展開服務自動擴展,然後指定下列參數。

    1. 若要使用服務自動擴展,請選取 Service auto scaling (服務自動擴展)。

    2. 對於工作數目下限,請輸入要使用的服務 auto 擴展的工作數目下限。所需的計數不會低於此計數。

    3. 針對工作數目上限,輸入要使用的服務 auto 擴展的工作數目上限。所需的計數不會高於此計數。

    4. 選擇政策類型。在「資源調整」政策類型下,選擇下列其中一個選項。

      若要使用此政策,請參閱。 執行此作業...

      目標追蹤

      1. 針對 Scaling policy type (擴展政策類型),選擇 Target tracking (目標追蹤)。

      2. 針對 Policy name (政策名稱),輸入政策的名稱。

      3. 針對 ECS service metric (ECS 服務指標),選擇下列其中一項指標。

        • ECS ServiceAverage CPU 使用率 — 服務的平均 CPU 使用率。

        • ECS ServiceAverageMemoryUtilization — 服務的平均記憶體使用率。

        • ALB RequestCountPerTarget —「Application Load Balancer」目標群組中每個目標完成的要求數目。

      4. 針對 Target value (目標值),輸入服務為選取的指標保持的值。

      5. 對於向外延展冷卻時間,請輸入在其他向外延展活動開始之前必須經過的向外延展活動 (新增任務) 之後的時間量 (以秒為單位)。

      6. 對於縮放冷卻時間,請輸入在其他縮放活動開始之前必須經過的縮放活動(刪除任務)之後的時間量(以秒為單位)。

      7. 若要防止政策執行縮減活動,請選取 Turn off scale-in (關閉縮減)。

      8. • (選用) 如果您希望擴展政策擴展以增加流量,但不需要在流量減少時擴展,請選取關閉擴展政策。

      步驟擴展
      1. 針對 Scaling policy type (擴展政策類型),選擇 Step scaling (步驟擴展)。

      2. Policy Name (政策名稱) 輸入政策的名稱。

      3. 針對 Alarm name (警示名稱),輸入警示的唯一名稱。

      4. 針對 Amazon ECS service metric (Amazon ECS 服務指標),選擇用於警示的指標。

      5. 針對 Statistic (統計資料),選擇警示統計資料。

      6. 針對 Period (期間),選擇警示的期間。

      7. 針對 Alarm condition (警示條件),選擇如何比較選取的指標與定義的閾值。

      8. 針對 Threshold to compare metrics (比較閾值與指標) 和 Evaluation period to initiate alarm (啟動警示的評估期),輸入用於警示的閾值以及評估閾值的時間長度。

      9. Scaling actions (擴展動作) 下,執行下列動作:

        • 動作中,選取是否要新增、移除或設定服務的特定所需計數。

        • 如果您選擇新增或移除工作,在「」中,輸入啟動縮放動作時要新增或移除的工作數目 (或現有工作的百分比)。如果您選擇設定所需的計數,請輸入任務數量。對於 Type (類型),選取 Value (值) 是整數或是現有所需計數的百分比值。

        • 針對 Lower bound (下限) 和 Upper bound (上限),輸入步驟擴展調整的下界限和上界限。根據預設,新增政策的下限為警示閾值,而上限為無限大正數 (+) 值。根據預設,移除政策的上限為警示閾值,而下限為無限小負數 (-) 值。

        • (選用) 新增其他擴展選項。選擇「新增縮放」動作,然後重複「縮放」動作步驟。

        • 對於冷卻時間,請輸入等待先前縮放活動生效的時間(以秒為單位)。對於新增政策,這是擴展活動之後的時間,擴展政策會封鎖擴展活動,並限制一次可向外延展的工作數目。對於移除原則,這是在縮放活動之後必須經過的時間,才能開始另一個縮放活動。

  12. (選用) 若要使用 Service Connect,請選取 Turn on Service Connect (開啟 Service Connect),然後指定下列項目:

    1. Service Connect configuration (Service Connect 組態) 下,指定用戶端模式。

      • 如果服務執行的網路用戶端應用程式只需要連線到命名空間中的其他服務,請選擇 Client side only (僅用戶端)。

      • 如果服務執行的是網路或 Web 服務應用程式,且需要為此服務提供端點,並連線至命名空間中的其他服務,請選擇 Client and server (用戶端和伺服器)。

    2. 若要使用非預設叢集命名空間的命名空間,請在 Namespace (命名空間) 欄位中選擇服務命名空間。

  13. 如果您的工作使用與部署時設定相容的資料磁碟區,您可以透過擴充磁碟區來設定磁碟區

    磁碟區名稱和磁碟區類型是在您建立工作定義修訂時設定的,而且在您更新服務時無法變更。若要更新磁碟區名稱與類型,您必須建立新的作業定義修訂版本,並使用新的修訂版本來更新服務。

    設定此磁碟區類型 執行此作業

    Amazon EBS

    1. 針對 EBS 磁碟區類型,選擇要附加至工作的 EBS 磁碟區類型。

    2. 大小 (GiB) 中,輸入磁碟區大小的有效值 (以 GiB) 為單位。您可以指定最小 1 GiB 和最大 16,384 GiB 磁碟區大小。除非您提供快照 ID,否則此值為必要值。

    3. 若為 IOPS,請輸入磁碟區應提供的最大輸入/輸出作業數 (IOPS)。此值僅適用於io1io2、和gp3磁碟區類型。

    4. 對於輸送量 (MIB/s),輸入磁碟區應提供的輸送量,以 MB/秒為單位 (MiBps或 MIB/s)。此值僅適用於gp3磁碟區類型。

    5. 對於快照 ID,請選擇現有的 Amazon EBS 磁碟區快照,或者如果要從快照建立磁碟區,請輸入快照的 ARN。您也可以不選擇或輸入快照 ID 來建立新的空白磁碟區。

    6. 在 [檔案系統類型] 中,選擇磁碟區上資料儲存和擷取要使用的檔案系統類型。您可以選擇作業系統預設值或特定檔案系統類型。Linux 的預設值為XFS。對於從快照建立的磁碟區,您必須指定與建立快照時磁碟區所使用的相同檔案系統類型。如果文件系統類型不匹配,則任務將無法啟動。

    7. 對於基礎設施角色,請選擇具有必要許可的 IAM 角色,以允許 Amazon ECS 管理任務的 Amazon EBS 磁碟區。您可以將AmazonECSInfrastructureRolePolicyForVolumes受管理的原則附加至角色,也可以使用原則做為指南,建立並附加具有符合您特定需求的權限的自己原則。如需有關必要許可的詳細資訊,請參閱 Amazon ECS 基礎設施 IAM 角色

    8. 對於加密,如果您要使用 Amazon EBS 加密的設設定,請選擇預設。如果您的帳戶預設設定了加密,則會使用設定中指定的 AWS Key Management Service (AWS KMS) 金鑰來加密磁碟區。如果您選擇預設且 Amazon EBS 預設加密並未開啟,則磁碟區將不加密。

      如果您選擇 [自訂],您可以指定您選擇 AWS KMS key 的磁碟區加密。

      如果您選擇 [],除非您預設已設定加密,或是從加密快照建立磁碟區,否則磁碟區將會取消加密。

    9. 如果您已選擇「 AWS KMS key 加自訂」,則必須指定要使用的。對於 KMS 金鑰,請選擇 AWS KMS key 或輸入金鑰 ARN。如果您選擇使用對稱的客戶管理金鑰來加密磁碟區,請確定您擁有在 AWS KMS key 政策中定義的正確權限。如需詳細資訊,請參閱 Amazon EBS 磁碟區的資料加密

    10. (選擇性) 在標籤下,您可以透過從任務定義或服務傳播標籤,或提供您自己的標籤,將標籤新增至 Amazon EBS 磁碟區。

      如果您要從工作定義傳輸標籤,請選擇「工作定義」做為「傳輸標籤來源」。如果您要從服務傳輸標記,請選擇服務做為傳輸標記來源。如果您選擇不傳播,或者如果您沒有選擇值,則不會傳播標籤。

      如果您想要提供自己的標籤,請選擇 [新增標籤],然後為您新增的每個標籤提供索引鍵和值。

      如需標記 Amazon EBS 磁碟區的詳細資訊,請參閱標記 Amazon EBS 磁碟區。

  14. (選用) 為協助識別您的服務,請展開 Tags (標籤) 區段,然後設定標籤。

    • [新增標記] 選擇 [新增標籤],然後執行下列動作:

      • 索引鍵中,輸入索引鍵名稱。

      • 中,進入索引鍵值。

    • [移除標籤] 在標籤旁邊,選擇 移除標籤

  15. 選擇更新