托管版 Kubernetes 集群 需要您手动创建集群,并添加 ECS 作为 Kubernetes 集群的节点。
相关文档请参考:https://help.aliyun.com/document_detail/86737.html
ECI 为阿里云产品,旨在用户无需管理底层服务器,也无需关心运行过程中的容量规划,只需要提供打包好的Docker镜像,即可运行容器,并仅为容器实际运行消耗的资源付费。
相关文档地址为:https://help.aliyun.com/document_detail/89129.html
聚石塔集成 ECI,为您提供更为方便的集成,以及管控能力
真实节点:运行在集群中的 ECS 上的节点。
虚拟节点:来源于Kubernetes社区的Virtual Kubelet技术,容量相当与无限大,不会使用集群中的 ECS 资源。
ECI:在虚拟节点上启动的 pod。
ECI 实例的公网 ip:需要使用 VPC绑定NAT网关+EIP 方式进行公网访问,公网 ip 由绑定的 EIP 确定。
ECI 实例的内网 ip:由应用所在的集群的 交换机 的 IPv4网段 确定,ECI 实例的 内网ip,在此范围内给出。
ECI 与 非集群内的 ECS 通信:需要将 集群的安全组 授权给 ECS安全组。
不要通过 弹性容器实例 删除 ECI ,这样只会删除 ECI 资源,但是 pod 相关配置并不会跟着一起被删除。
通过 运维中心-插件管理-插件列表
进入 集群管理页面
如下图:
请先安装 ECI节点
,安装成功后再进行 虚拟节点自动伸缩
的安装 ,点击 安装
进入如下页面:
在 集群
下拉框选项中,选择需要集成 ECI 能力的集群,部署参数为空即可,最后点击 部署
。
通过 运维中心-容器集群-资源分配策略
进入 资源分配策略列表页
,通过 新建策略
或者 管理
已经存在的策略进入 新建/编辑策略
页面,如下图:
调度到虚拟节点
选择 可以
,部分页面如下
需要填写 ECI 使用的 CPU
和 内存
的上限,也就是说,该应用所使用的 单个 ECI 资源的大小不会超过此处设置的上限,一旦超过,则不允许使用 ECI(部署配置通过 yaml 方式的除外,并且此处限制只针对修改后发布的服务进行限制,正在运行的服务不做限制)。
新版应用视图中可以通过 环境管理-实例管理
页面进行修改。
ECI 的大小可以通过两种方式进行设置:
① 填写 ECI CPU请求
和 ECI 内存请求
,则会以此处填写的值为准;
② 不填写 ECI CPU请求
和 ECI 内存请求
,则会以 CPU请求
和 内存请求
的值为准。
例如:
CPU请求:2 内存请求:8192 ECI CPU请求:1 ECI 内存请求:2048
最终以 CPU=1,内存=2048 为准。
注意:ECI实例级别需要满足CPU和内存约束。对于未满足的情况,系统会进行规整,计费按照规整后CPU和内存值进行计费(ECI支持的规格见文末部分 ECI实例规格,有关于实际使用规格的计算方式请参见本文的 规格计算 部分)。
新版应用视图中可以通过 环境管理-环境配置
页面对 yaml 配置文件进行修改。
首先需要在配置中添加 容忍 。
tolerations: - key: taint.jst.com/eci operator: Exists
接下来需要配置ECI规格,配置方式主要有以下两种:
注意:每个ECI实例内支持最多20个容器,实例内每个容器的资源支持自定义配置,但汇总到ECI实例级别需要满足CPU和内存约束。对于未满足的情况,ECI会执行 自动规整 操作,计费按照规整后CPU和内存值进行计费(ECI支持的规格见文末部分 ECI实例规格)。?
说明:对于大于4vCPU规格,为了减少因操作失误造成规整,浪费计费资源,您需要在OpenAPI中严格声明相同的规格资源,否则接口会返回规格非法错误。 推荐对于大于4vCPU规格的资源,使用指定ECI实例CPU和内存规格的方式进行资源申请。
Kubernetes原生方式使用,直接定义对应container的request即可。
apiVersion apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind Deployment metadata name nginx-deployment-basic labels app nginx spec replicas2 selector matchLabels app nginx template metadata labels app nginx spec containers name nginx image nginx 1.7.9 # replace it with your exactly <image_name:tags> ports containerPort80 resources requests cpu"500m" memory"1024Mi" name busybox image busybox latest # replace it with your exactly <image_name:tags> ports containerPort80 resources requests cpu"500m" memory"1024Mi"
增加k8s.aliyun.com/eci-use-specs
注解, 创建Pod时允许使用的实例规格列表,遇到没库存时,按照顺序遍历规格列表购买ECI实例,应对库存问题。
k8s.aliyun.com/eci-use-specs的值,支持列表,使用逗号分隔,列表中元素的格式:
${cpu}-${mem}Gi
:例如: 2-4Gi;表示创建一个2核4G
的ECI实例。模糊匹配仅支持普通规格,对于本地SSD、GPU等实例需设置明确的实例规格。
模糊配置方式:
apiVersion apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind Deployment metadata name vk-cos-use labels app cos spec replicas1 selector matchLabels app cos template metadata annotations "k8s.aliyun.com/eci-use-specs""2-4Gi,4-8Gi,ecs.c6.xlarge" labels app cos spec containers name u1 image"registry-vpc.cn-beijing.aliyuncs.com/lxx/cos-4g" nodeName virtual-node-eci-0
明确指定创建ECI使用的实例规格,例如:ecs.c6.xlarge,ECI支持的实例规格,请参见实例规格族。
apiVersion apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind Deployment metadata name vk-cos-use labels app cos spec replicas1 selector matchLabels app cos template metadata annotations "k8s.aliyun.com/eci-use-specs""ecs.c5.xlarge,ecs.c6.xlarge,ecs.c6.4xlarge" labels app cos spec containers name u1 image"registry-vpc.cn-beijing.aliyuncs.com/lxx/cos-4g" nodeName virtual-node-eci-0
更多详细配置请参考文档下列文档:
指定CPU和内存创建ECI:https://help.aliyun.com/document_detail/114662.html
指定ECS规格创建ECI:https://help.aliyun.com/document_detail/114664.html
多规格创建:https://help.aliyun.com/document_detail/146468.html
GPU实例:https://help.aliyun.com/document_detail/114581.html
通过 应用发布-部署配置
进入 部署配置列表页
。
下面分为两种情况:
点击 编辑
已存在的配置,进入 编辑部署配置页面
。
点击 新建Yaml部署配置
或者 编辑
已存在的配置,进入 新建/编辑部署配置页面
。
每次修改完相应配置都需要 重新发布应用 才可以生效,ECI 实例的具体规格 以及是否支持 使用 ECI,都是根据发布当时的 部署配置
以及 资源分配策略
决定的(通过 yaml 配置的方式不做任何处理,由用户自行控制)
部署配置中: ECI CPU请求:2 ECI 内存请求:2048 资源分配策略: ECI CPU上限:2 ECI 内存上限:4096
此时进行发布,发布后的应用可以正常使用 ECI ,并且 ECI 规格为 2C2G。
基于当前场景,分别进行进行以下操作:
ECI CPU请求:4 ECI 内存请求:8196
没有重新发布,则应用不受影响,可以正常使用 ECI ,并且 ECI 规格为 2C2G。
如果重新发布,则由于应用的部署配置中请求资源 超过 资源分配策略中定义的ECI资源使用上限,因此不可以使用 ECI,但是可以正常发布,应用可以在 真实节点(ECS)上正常调度使用。
ECI CPU上限:1 ECI 内存上限:2048
没有重新发布,则应用不受影响,可以正常使用 ECI ,并且 ECI 规格为 2C2G。
如果重新发布,则由于应用的部署配置中请求资源 超过 资源分配策略中定义的ECI资源使用上限,因此不可以使用 ECI,但是可以正常发布,应用可以在 真实节点 上正常调度使用。
最终发布的应用中的实例是否在虚拟节点上,可以在实例列表页查看。
数据库访问:将 ECI 实例的内网 IP 段(获取方式参见本文的特别提醒) 添加到 数据库的白名单中。
公网访问:需要使用 VPC绑定NAT网关+EIP 方式进行公网访问,公网 ip 由绑定的 EIP 确定。
默认情况下,允许使用 ECI 的应用,只有在创建 pod 时,真实节点上没有足够的资源,导致调度失败时,才会向虚拟节点调度,真正使用 ECI。也就是说,会优先使用集群内提前购买好的资源,资源不足时才会使用 ECI。
同时,是否选择集成虚拟节点,不影响 部署配置
和 资源分配策略
中对 ECI 相关属性的配置。
也就是说,通过配置 部署配置
和 资源分配策略
,应用部署后,状态为 允许使用 ECI 可能有一下两种情况:
a.有 虚拟节点,则在资源不足时,会使用 ECI;
b.没有 虚拟节点,在资源不足时,不会使用 ECI,而是成为不可调度状态。后期如果集成上虚拟节点,则可以正常使用 ECI。
为了提供能强的 调度控制能力,我们提供了 ECI 调度控制 插件。
集群已支持 ECI,即已经安装 ECI节点
与 虚拟节点自动伸缩
插件。
运维中心
- 插件管理
- 插件列表
选择 ECI调度控制
单击 安装。
选择需要安装插件的集群,单击部署即可。
在给应用配置 ECI 调度策略之前,要确保该应用已经允许使用 虚拟节点。
可以前往 运维中心
- 资源分配策略
找到对应的应用环境,单击 管理。
调度到虚拟节点
选择 可以 。
环境管理
- 详细信息
- 实例管理
在实例信息部分可以看到如下内容:
普通实例数/ECI 实例数: 分别表示,该应用环境下面运行中的 实例数量(包括下线中及其他状态的实例)。
ECI 调度策略:目前启用的策略,第一次进入应该显示为 未启用。
单击 修改策略 可以看到下图所示弹窗。
普通实例限制值:普通实例数量的阈值,当普通实例数量超过该值时,强制使用 ECI。
当实例数小于该值时,分两种情况:
强制:不论资源是否充足,都不使用 ECI(可能会存在资源不足导致实例启动失败的情况)。
非强制:资源不足的时候允许使用 ECI。
启用状态:需要设置为已启用之后点击保存,才会启用该策略。
特别提醒:
1)策略只对配置之后启动的实例生效,不会影响之前的实例分布情况。
例如:未配置策略前,普通实例数/ECI 实例数 为 10/10,普通实例限制值 为 6,不会改变现有状态,如果之后进行扩容,普通实例数已经超过限制,则后面启动的实例都会使用 ECI。
2)目前不支持优先缩容 ECI ,当前的缩容策略为,最新启动的最先缩容。
3)修改资源分配策略,关闭 ECI 之后,会同时关闭该应用环境的 ECI 调度策略。
本规格计算方式,仅针对 通过页面进行部署配置 的方式。
资源分配策略中的 ECI 内存上限
首先会转换单位为 GB,转换会按照 向下 取整进行,例如:
2049MB => 2GB 2048MB => 2GB 2047MB => 1GB
部署配置中的 CPU 和 内存 会首先以 ECI CPU请求
和 ECI 内存请求
为准,如果值为空,则以 CPU请求
和 内存请求
的值为准,并且 内存 首先会转换单位为 GB,转换会按照 向上 取整进行,例如:
2049MB => 3GB 2048MB => 2GB 2047MB => 2GB
ECI 的规格是有约束的(具体规格见本文中的 ECI实例规格 章节),所以最终的 ECI 规格需要符合给定的约束。
例:
资源限制:2C4G 资源请求:1C2G
ECI 实际规格为:1C2G。
资源限制:2C4G 资源请求:2C3G
ECI 实际规格为:2C4G。
原因:ECI 约束中资源大于等于 资源请求 2C3G 的最小规格为 2C4G,同时该规格不大于 资源限制 2C4G。
资源限制:2C6G 资源请求:2C5G
ECI 实际规格为:无(不可使用 ECI)。
原因:ECI 约束中资源大于等于 资源请求 2C5G 的最小规格为 2C8G,同时该规格大于 资源限制 2C6G。
1. 容器访问公网。暂时只支持NAT网关出公网,容器的公网出口IP为NAT网关绑定的EIP。
2. 容器访问RDS。ECI容器实例的内网IP从集群交换机网段中分得,将交换机网段设置为RDS白名单即可。
3. 容器访问VPC内ECS。默认的,serverless集群部署生成的ECI容器属于集群安全组,如果VPC内的ECS不在集群安全组内,需要进行安全组授权。1)将ECS加入集群安全组; 或者,2)ECS所在安全组授权一下集群安全组。
集群安全组:运维中心-集群管理-基本信息。
主要步骤:
1)创建VPC及VSwitch。
2)创建NAT。
3)创建EIP,并绑定到NAT。
4)为NAT配置SNAT条目。
1)创建VPC及VSwitch。在VPC 控制台完成VPC及VSwitch的创建。
2)创建NAT。创建NAT网关,创建的时候选择上一步操作创建的VPC。
3)创建EIP,并绑定到NAT。
将EIP绑定到NAT。
4)为NAT配置SNAT条目。在NAT中创建SNAT条目,以实现访问外网。
完成后,ECI创建时就可以正常拉取Docker Hub镜像了。VPC对应交换机下的所有ECI实例,都能够通过该VPC和交换机上绑定的NAT网关+EIP访问外网。如果需要通过外网来访问ECI,则还需要配置DNAT条目,具体可以参阅文档PAI Studio-Notebook使用文档。
ECI根据您申请ECI资源的方式,支持2种计费模式:
1)按CPU和内存计费。
2)按ECS规格计费。
推荐您使用CPU和内存模式使用ECI,该模式下ECI会使用ECS多个规格族,进行ECI实例的创建,保障资源的交付。例如:您申请2c4g的ECI实例,ECI会尝试使用ECS的ecs.c6.large、ecs.c5.large、ecs.sn1ne.large、ecs.sn1.large等规格进行资源的交付。
注意 每个ECI实例以您申请的资源作为计费单元,而不是业务在运行过程中实际使用的CPU利用率和内存使用率。例如:您申请一个2c4g的ECI实例,运行过程中平均CPU利用率为20%,内存使用率为60%,该实例会按照2c4g作为计量和计费单位,而不是2c x 20%和4g x 60%。
CPU和内存模式
CPU和内存模式根据你申请的CPU和内存进行计费。
说明 ECI针对不支持的CPU和内存规格,会执行自动规整操作,计费按照自动规整后规格进行计费,CPU和内存规格请参见指定容器 CPU 和内存。
计费公式:ECI实例费用 = (ECI实例CPU核数 x CPU单价 + ECI实例内存大小 x 内存单价)x ECI实例运行时长,按秒计费,实例费用不足0.01元,将补齐按照0.01元收取。
计费项 |
价格(秒价) |
分钟价 |
小时价 |
CPU(vCPU) |
0.000049 元/秒 |
0.00294 元/分钟 |
0.1764 元/小时 |
内存(GB) |
0.00000613 元/秒 |
0.0003678 元/分钟 |
0.0221 元/小时 |
ECI部分规格与ECS企业级实例价格对比:
ECI规格 |
ECI小时价格 |
5代ECS(华北2) |
6代ECS(华北2) |
1c2g |
0.221 元/小时 |
N/A |
N/A |
1c4g |
0.265 元/小时 |
N/A |
N/A |
1c8g |
0.353 元/小时 |
N/A |
N/A |
2c2g |
0.397 元/小时 |
0.59 元/小时 |
N/A |
2c4g |
0.441 元/小时 |
0.62 元/小时 |
0.39 元/小时 |
2c8g |
0.529 元/小时 |
0.89 元/小时 |
0.5 元/小时 |
2c16g |
0.706 元/小时 |
1.13 元/小时 |
0.66 元/小时 |
4c4g |
0.794 元/小时 |
1.18 元/小时 |
N/A |
4c8g |
0.882 元/小时 |
1.24 元/小时 |
0.78 元/小时 |
4c16g |
1.059 元/小时 |
1.77 元/小时 |
1 元/小时 |
4c32g |
1.412 元/小时 |
2.26 元/小时 |
1.33 元/小时 |
说明:ECS价格未包含系统盘价格,40G高效系统盘 0.02 元/小时;40G ESSD系统盘 0.08 元/小时。ECI实例默认使用ESSD系统盘,包含在ECI小时价格中。
ECS规格模式
ECI支持根据实例规格族进行资源申请,价格参考各地域ECS按量价格。您可以根据需要,指定ECI实例底层使用的ECS规格族,获得各规格族的指定能力,例如:指定使用ecs.sn1ne规格族,来使用网络增强能力。
计费公式:ECI实例费用 = ECI实例指定的ECS规格单价 x ECI实例运行时长,实例按秒计费。
网络
如果您的ECI实例需要访问公网,需要通过您VPC内的NAT网关绑定弹性公网IP(EIP)地址访问公网,NAT及EIP的计费说明,请参见计费说明和包年包月。
存储
ECI支持多种类的存储类型,不同存储类型的计费规则如下:
1)计量项和计费说明;
2)按量计费;
3)块存储计费说明;
镜像缓存(快照和云盘)
若您需要使用ECI镜像缓存功能,会产生快照和存储费用。
1)快照的收费规则请参见快照计费方式。
2)使用镜像加速功能的每个ECI实例会使用一块基于快照产生的云盘,云盘默认使用ESSD类型、20GB容量,计费规格请参考 ESSD磁盘价格(PL1)。
您需要每小时运行一次定时任务,定期处理历史文件,需要使用2个ECI实例,每个ECI实例使用1vCPU和2G内存,每次运行5分钟(300秒)。
单次费用
单次CPU费用:
CPU费用 = 实例数 x vCPU数 x 每vCPU*秒价格 x 每小时vCPU持续时间(秒)
CPU费用 = 2 x 1 x 0.000049 x 300 = 0.0294 元
单次内存费用 :
内存费用 = 实例数 x 内存数(GB) x 每GB价格 x 每小时内存持续时间(秒)
内存费用 = 2 x 2 x 0.00000613 x 300 = 0.0074 元
单次ECI费用 :
小时ECI费用 = 小时CPU费用 + 小时内存费用
小时ECI费用 = 0.0294 元 + 0.0074 元 = 0.04 元
月度运行费用
月度ECI费用 = 每小时ECI费用 x 月度执行总次数
月度ECI费用 = 0.04 x ( 24 x 30 ) = 28.8元
说明 若您使用ECS实例,该定时任务需要使用1台ecs.c5.large,需要支付179元(ECS包月模式)或者37.2元(ECS按量模式)月度运行费用,通过使用ECI,可以极大的节省您的运行成本。
您需要每天2:00运行1个统计报表任务,使用10个ECI实例,每个ECI实例使用2vCPU和8GiB内存,每次运行1个小时(3600秒)。
单次费用
单次CPU费用:
CPU费用 = 实例数 x vCPU 数 x 每vCPU*秒价格 x 每小时vCPU持续时间(秒)
CPU费用 = 10 x 2 x 0.000049 x 3600 = 3.528 元
单次内存费用:
内存费用 = 实例数 x 内存数 (GB) x 每GB价格 x 每小时内存持续时间(秒)
内存费用 = 10 x 8 x 0.00000613 x 3600 = 1.765 元
单次ECI费用:
小时ECI费用 = 小时CPU费用 + 小时内存费用
小时ECI费用 = 3.528 元 + 1.765 元 = 5.29 元
月度运行费用
月度ECI费用 = 每小时ECI费用 x 月度执行总次数
月度ECI费用 = 5.29 x 30 = 158.7 元
说明:若您使用ECS实例,该任务需要使用10台ecs.g5.large,需要支付2422.5元(包月模式)或者267元(按量模式)月度运行费用,通过使用ECI,可以极大的节省您的运行成本。
1)您的账户需要有 100 元的余额并通过实名认证,否则无法创建 ECI 实例。
2)目前 ECI 只支持 Linux 容器。
3)目前 ECI 只支持 VPC 网络。
4)不支持在虚拟节点上运行DaemonSet Pod。
5)不支持hostPath/hostPid。
6)不支持privileged权限开放。
7)不支持过大的configmap和secret volume挂载(上限256KB,很难达到该上限)。
8)不支持NodePort类型的Service。
9)不支持Network Policy。
10)单个 ECI 实例 CPU 最大规格 64 vCPU。
11)单个 ECI 实例数据卷数量 100 个(很难达到该上限)。
12)单个 ECI 实例内支持最大的容器数 20 个。
13)支持的容器最大镜像 layer 50 个。
14)单个虚拟节点支撑 3000 个ECI Pod。
账号能够创建的ECI数量,依赖于账号的vCPU限额,vCPU限额的查询办法参考这里。所有ECI实例的vCPU之和,不能超过vCPU限额,如果需要超过,请提交工单申请。
https://help.aliyun.com/document_detail/89155.html
vCPU |
内存(GiB) |
emptyDir空间大小(GiB) |
网络带宽能力(出/入)(Gbit/s) |
网络收发包能力(出/入)(万PPS) |
支持IPv6 |
多队列 |
弹性网卡(包括一块主网卡) |
0.25 |
0.5、1 |
20 |
0.1 |
4 |
否 |
1 |
1 |
0.5 |
1、2 |
20 |
0.2 |
5 |
否 |
1 |
1 |
1 |
2、4、8 |
20 |
0.5 |
5 |
否 |
1 |
1 |
2 |
2、4、8、16 |
20 |
1 |
30 |
否 |
2 |
1 |
4 |
4、8、16、32 |
20 |
1.5 |
50 |
否 |
2 |
1 |
8 |
8、16、32、64 |
20 |
2.0 |
80 |
否 |
4 |
1 |
12 |
12、24、48、96 |
20 |
2.5 |
90 |
否 |
4 |
1 |
16 |
16、32、64 、128 |
20 |
3.0 |
100 |
否 |
4 |
1 |
24 |
48、96、192 |
20 |
4.5 |
150 |
否 |
6 |
1 |
32 |
64、128、256 |
20 |
6.0 |
200 |
否 |
8 |
1 |
52 |
96、192、384 |
20 |
12.5 |
300 |
否 |
32 |
1 |
64 |
128、256、512 |
20 |
20.0 |
400 |
否 |
16 |
1 |
默认情况下是这样的。但是也可以通过添加标签选择功能实现,一下有两种方案:
应用全部使用 ECI:通过标签选择器,使应用指定到 虚拟节点 上,这样就可以直接使用 ECI 了。
应用同时使用 集群资源以及 ECI:给集群中一个或多个节点加上特定标签,同时给 虚拟节点 也加上相同标签,这样添加相应标签选择器的应用会优先使用 普通节点上的资源,在资源不足的时候 会使用 ECI 资源。使用该方案时,建议在 普通节点 上添加污点,并给应用添加相应 容忍,防止其他应用使用该节点。
目前提供了 sidecar dns 解决方案,该方案需要开通白名单,请在答疑群中 @照前 ,进行白名单添加。
可以优先使用 共享带宽 的方案,一个共享带宽可以添加多个 EIP,相应的可以增加带宽峰值。如果该方案依然无法解决请在答疑群中 @照前。