簡體   English   中英

帶有 EC2 和 Fargate 實例的 AWS 混合集群

[英]AWS mixed cluster with EC2 and fargate instances

我將 AWS CDK 用於我的基礎設施即代碼(下面的 C# .NET 中的 CDK 代碼片段)。

我創建了一個 VPC,如下所示:

        // vpc (testing)
        this.vpc = new Vpc(this, "vpc", new VpcProps() {
            MaxAzs = 1,
            NatGateways = 1
        });

我創建了一個集群,如下所示:

        // cluster
        this.cluster = new Cluster(this, "cluster", new ClusterProps() {
            Vpc = this.vpc
        });

我有一個 Fargate 任務的工作人員定義,如下所示:

        // worker
        this.workerDefinition = new FargateTaskDefinition(this, 
            "worker-definition", 
            new FargateTaskDefinitionProps() {
                Cpu = 256,
                MemoryLimitMiB = 512
            }
        );

我有如下的 Fargate 工作程序服務,它使用實例計數和任務定義將工作程序服務與集群聯系起來:

            var worker = new FargateService(this, "worker", new FargateServiceProps() {
                Cluster = this.cluster,
                DesiredCount = k,       // up to k worker instances
                TaskDefinition = this.workerDefinition
            });

問題:

  1. 我想至少在集群中使用 k 個預留的 EC2 實例。 我應該創建那些 EC2 實例並將它們添加到集群中嗎?
  2. 如果我使用 FARGATE 啟動類型調用 ecs.runTask(),Fargate 服務是否會在預啟動的 EC2 實例之一上啟動,直到達到 k 的限制(然后,我打算使用基於工作負載的自動縮放規則按需啟動 FARGATE_SPOT 實例)?
  3. 我對預先創建並添加到集群中的 EC2 實例將用於運行 FARGATE 任務的理解是否正確?
  4. 調度程序如何決定將任務放置在哪里? 假設我的任務是可重入的(即,我可以在同一台機器上運行多個實例),Fargate 如何知道(或者我如何指示它以便它知道)它可以在同一台機器上放置多個實例(即,Fargate 是否自動使用 CPU/IO 利用率作為在容器上打包任務的指標)?

您運行的 Fargate 任務永遠不會在您創建和管理的 EC2 實例上運行,它們將在 AWS 管理的計算容量上運行。 使用 Fargate 的好處之一是您不必擔心管理 EC2 實例。

要回答您的問題:

  1. 如果您想在您創建的 EC2 實例上運行任務,則需要使用 EC2 啟動模式啟動任務。

  2. 如果您使用 FARGATE 啟動類型,Fargate 將在 AWS 管理的計算容量上運行您的任務。 您運行的任何 EC2 實例都不會用於這些任務。

  3. 不可以,您創建並添加到集群的 EC2 實例僅用於使用 EC2 啟動類型啟動的任務。

  4. 運行服務時,ECS 服務調度程序將根據您為服務定義的擴展標准啟動或停止任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM