运行一个AWS ECS服务使用码头工人与持久性存储插件& Spotinst Elastigroup

阅读时间:6分钟

亚马逊最近宣布,ECS现在支持码头工人卷和卷插件。在这篇文章中,我们将介绍配置需要使用ECS之上的码头工人卷插件运行容器与持久/共享存储,同时利用Spotinst Elastigroup集群管理ECS容器实例。

我们还将讨论使用Cloudstor: AWS插件。可以使用其他几个码头工人卷插件在REX-Rey等类似的问题,Portworx,等等。然而,安装和使用可能会略有不同。Cloudstor: AWS插件运行在您的ECS容器实例和高度EBS和/或EFS卷你的任务(容器)。

Spotinst Elastigroup容器管理服务(MCS)允许您运行一个ECS集群之上Elastigroup,这是一个实体允许您运行现场实例在工业生产水平。MCS会照顾无缝替换您的实例没有任何停机时间。最重要的是,MCS提供Serverless经验自动定量并确保你总是最具成本效益的基础设施为您的工作负载而不需要管理EC2实例或规模。

MCS自动定量允许您创建一个集群ECS与多个容器实例类型和大小的盒子。它使用智能俄罗斯方块扩展是由容器资源需求驱动的,而不是节点利用率。雷竞技rabet官网最重要的是,它允许您配置空间能力将确保能力可供新工作负载在任何时候(这样你不必等待一个新实例启动时创建一个新的服务/任务)。

让我们首先创建一个Elastigroup MCS和码头工人卷插件运行

  1. 创建一个我政策为码头工人卷插件。
    “行动”(“ec2: CreateTags”、“ec2: AttachVolume”,“ec2: DetachVolume”、“ec2: CreateVolume”,“ec2: DeleteVolume”、“ec2: DescribeVolumes”、“ec2: DescribeVolumeStatus”、“ec2: CreateSnapshot”、“ec2: DeleteSnapshot”、“ec2: DescribeSnapshots”),“效果”:“允许”、“资源”:“*”
  2. 创建一个我的角色。在“权限政策”下,把“AmazonEC2ContainerServiceforEC2Role”和政策在步骤1中创建。

    请注意:

    如果你已经有了我的角色对你的ECS容器实例,确保添加权限政策从步骤1。

  3. 创建一个新的集群MCS通过导入现有的ECS集群或通过使用Spotinst CFN Elastigroup创建向导模板。一定要选择我的角色,我你之前创建容器实例的作用。
  4. 更新你的Elastigroup用户数据脚本。支持码头工人卷插件安装,我们需要更新我们的ECS代理版本和容器实例上安装插件。
    # !/bin/bash ECS_CLUSTER = < ECS-CLUSTER-NAME > > > /etc/ecs/ecs.回响配置#更新ECS代理sudo使用yum更新- y ecs-init #如果你想使用这个命令支持EBS以及EFS码头工人插件安装——别名cloudstor: aws——grantall-permissions docker4x / cloudstor: 18.03.0-ce-aws1 CLOUD_PLATFORM = aws EFS_ID_REGULAR = < YOUR_EFS_ID > EFS_ID_MAXIO = < YOUR_MAXIO_EFS_ID > AWS_REGION = < REGION_NAME EFS_SUPPORTED = 1调试= 1 #使用此命令如果你只希望支持EBS码头工人插件安装——别名cloudstor: aws——grant-all-permissions docker4x / cloudstor: 18.03.0-ce-aws1 CLOUD_PLATFORM aws AWS_REGION = < REGION_NAME > EFS_SUPPORTED = 0 = DEBUG = 1

创建一个任务定义

创建一个新的任务定义和配置请您。接下来,我们将关注配置一个持久卷和码头工人卷插件。点击“添加卷”按钮来添加和配置体积。

在本节中,我们将配置的体积为任务创建定义。有几个事情需要配置:

  • 卷名。
  • 检查“指定一个推动力”。
  • 驱动程序设置为所需的码头工人卷插件。在这种情况下,“cloudstor: aws”
  • 了这本书的范围。
    • 任务,每个任务将从这项任务的定义,一个卷将被提供。这卷将被破坏,当任务停止。
    • 共享,创建一个持久的体积。
  • 使auto-provisioning——如果体积不存在在运行任务之前,它将创建的插件。共享标记时,重要的是马克这个复选框。
  • 司机选择:这些旗帜被发送到有关卷创建插件。
    关键 价值
    大小 音量的大小。
    支持 使用“共享”为EFS卷,“浮动”EBS卷。
    ebstype 如果你使用EBS卷,你可以指定gp2, io1,死神,那么
    iops 如果需要指定ebstype io1,使供应IOPS。需要根据EBS在适当的范围。

当完成时,单击Add按钮完成音量设置。配置的体积,我们现在必须将它附加到容器(s),这个任务将运行。

添加/编辑一个容器,去存储和记录部分:

为卷创建挂载点之前创建的容器:

例如,这是任务的JSON定义附加了EBS卷的Nginx的容器:

{“requiresCompatibilities”:“EC2”,“containerDefinitions”:[{“名称”:“nginx”,“图像”:“nginx”,“记忆”:“500”,“基本”:真的,“portMappings”: [{“hostPort”:“8080”,“containerPort”:“80”,“协议”:“tcp”}],“环境”:空,“安装点”:[{“sourceVolume”:“nginx-vol”、“containerPath”:“/数据”,“readOnly”: "}),“volumesFrom”:空,“主机名”:空,“用户”:空,“workingDirectory”:空,“extraHosts”:空,“logConfiguration”:空,“ulimit”:空,“dockerLabels”:空,“repositoryCredentials”: {“credentialsParameter”:“}}],“卷”:[{“dockerVolumeConfiguration”:{“司机”:“cloudstor: aws”,“范围”:“共享”、“driverOpts”:{“大小”:“10”、“支持”:“浮动”},“标签”:空,“autoprovision”:真正的},“名字”:“nginx-vol”}],“networkMode”:空,“记忆”:空,“cpu”:空,“placementConstraints”:[],“家庭”:“nginx”}

现在,我们要做的是创建一个使用这个任务定义和ECS服务我们会好了。

现在让我们探索与ECS使用码头工人卷插件

现在,我们知道如何创建一个任务定义和服务持续的体积,让我们讨论一下如何不同的卷为我们服务和一些限制这种方法。

当使用EBS卷在多个可用性区域,我们有一个问题,因为插件工作的方式,如果一个任务在服务终止,新任务才会安排,EBS卷将被广泛应用。跨多个可用性区域工作时,如果这个任务调度容器主机上另一个可用性区域,插件将快照,迁移,并创建一个新EBS卷的快照。这个过程需要几分钟,将需要更长时间的体积变大。当使用EBS卷,它是强烈推荐设置一个约束,使这个任务(从任务定义或服务)的创建只产生一个可用性区域。

你可以设置任务位置约束的定义,服务或任务创建。

当这样做,你必须使用集群的查询语言。在下列的示例中,我们将配置当前任务运行在可用性区域“us-west-2b”。

使用独特的持久卷时,你必须为每个容器创建一个任务定义和服务,你想要运行。原因是在这一点上,你不能配置一个任务定义的“共享”码头工人卷将为每个服务创建/任务运行这个任务的定义。

自一个EBS卷只能连接到一个任务,重要的是要考虑你的架构彻底之前使用这种方法。

当使用EFS卷,因为EFS是基于区域的服务,它们很容易共享的所有任务创建的任务定义。

结论

使用Cloudstor插件提供了一种简便和有效的方法来部署与AWS ECS持久性存储集群。当将其整合与Spotinst Elastigroup MCS,你将获得最大的成本效率和简化管理ECS容器实例。

Baidu
map