托管版 Kubernetes 集群 需要您手动创建集群,并添加 ECS 作为 Kubernetes 集群的节点。
相关文档请参考:点击查看。
ECI 为阿里云产品,旨在用户无需管理底层服务器,也无需关心运行过程中的容量规划,只需要提供打包好的Docker镜像,即可运行容器,并仅为容器实际运行消耗的资源付费。
相关文档地址为:点击查看。
聚石塔集成 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 的大小可以通过两种方式进行设置:
1.填写 ECI CPU请求
和 ECI 内存请求
,则会以此处填写的值为准;
2.不填写 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: replicas: 2 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: - containerPort: 80 resources: requests: cpu: "500m" memory: "1024Mi" - name: busybox image: busybox:latest # replace it with your exactly <image_name:tags> ports: - containerPort: 80 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: replicas: 1 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: replicas: 1 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:点击查看;
指定ECS规格创建ECI:点击查看;
多规格创建:点击查看;
GPU实例:点击查看。
通过 应用发布-部署配置
进入 部署配置列表页。
下面分为两种情况:
点击 编辑
已存在的配置,进入 编辑部署配置页面。
点击 新建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 调度策略。
本规格计算方式,仅针对 通过页面进行部署配置 的方式。
1.确定 ECI 使用规格上限
资源分配策略中的 ECI 内存上限
首先会转换单位为 GB,转换会按照 向下 取整进行,例如:
2049MB => 2GB 2048MB => 2GB 2047MB => 1GB
2.确定 ECI 请求资源量
部署配置中的 CPU 和 内存 会首先以 ECI CPU请求
和 ECI 内存请求
为准,如果值为空,则以 CPU请求
和 内存请求
的值为准,并且 内存 首先会转换单位为 GB,转换会按照 向上 取整进行,例如:
2049MB => 3GB 2048MB => 2GB 2047MB => 2GB
3.确定 ECI 规格
ECI 的规格是有约束的(具体规格见本文中的 ECI实例规格 章节),所以最终的 ECI 规格需要符合给定的约束。
例:
资源限制:2C4G 资源请求:1C2G
ECI 实际规格为:1C2G
资源限制:2C4G 资源请求:2C3G
ECI 实际规格为:2C4G
原因:ECI 约束中资源大于等于 资源请求 2C3G 的最小规格为 2C4G,同时该规格不大于 资源限制 2C4G。
资源限制:2C6G 资源请求:2C5G
ECI 实际规格为:无(不可使用 ECI)
原因:ECI 约束中资源大于等于 资源请求 2C5G 的最小规格为 2C8G,同时该规格大于 资源限制 2C6G。
集群安全组:运维中心-集群管理-基本信息。
主要步骤:
ECI根据您申请ECI资源的方式,支持2种计费模式:
推荐您使用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支持多种类的存储类型,不同存储类型的计费规则如下:
镜像缓存(快照和云盘)
若您需要使用ECI镜像缓存功能,会产生快照和存储费用。
示例一
您需要每小时运行一次定时任务,定期处理历史文件,需要使用2个ECI实例,每个ECI实例使用1vCPU和2G内存,每次运行5分钟(300秒)。
单次费用
单次CPU费用:
单次内存费用 :
单次ECI费用 :
月度运行费用
说明 若您使用ECS实例,该定时任务需要使用1台ecs.c5.large,需要支付179元(ECS包月模式)或者37.2元(ECS按量模式)月度运行费用,通过使用ECI,可以极大的节省您的运行成本。
示例二
您需要每天2:00运行1个统计报表任务,使用10个ECI实例,每个ECI实例使用2vCPU和8GiB内存,每次运行1个小时(3600秒)。
单次费用
单次CPU费用:
单次内存费用:
单次ECI费用:
月度运行费用:
说明 若您使用ECS实例,该任务需要使用10台ecs.g5.large,需要支付2422.5元(包月模式)或者267元(按量模式)月度运行费用,通过使用ECI,可以极大的节省您的运行成本。
账号能够创建的ECI数量,依赖于账号的vCPU限额,vCPU限额的查询办法参考这里。所有ECI实例的vCPU之和,不能超过vCPU限额,如果需要超过,请提交工单申请。
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,相应的可以增加带宽峰值。如果该方案依然无法解决请在答疑群中 @照前。