• 关于

    ECI

    的搜索结果

回答

操作步骤 授予账号相应的角色:访问 ECI 控制台,并点击“立即购买”,在页面中点击“前往授权”,完成 ECI 服务的授权,权限详情请查看 授权 RAM 角色 ram 创建 ECI:访问 ECI 控制台,并点击“立即购买”,进行实例创建。ECI 创建依赖 VPC 和安全组,如果需要公网访问还需要NAT或EIP 使用 Nginx 镜像创建 ECI 使用 CentOS 镜像创建 ECI 使用 ECI:访问 ECI 控制台,进行实例的查看和管理 查看 ECI 事件和日志 调试 ECI
1934890530796658 2020-03-20 15:17:02 0 浏览量 回答数 0

回答

创建带标签的ECI实例 API: CreateContainerGroup 参数:Tags 创建ECI的时候参数传入tag,创建出来的ECI就会带上对应的tag。 控制台 eci-tag-1 查询ECI实例上对应的标签 API DescribeContainerGroups 返回的Tag字段即为资源上的tag 控制台 找到对应的实例,点击标签按钮就会显示资源对应的tag。 eci-tag-2 更新ECI实例上的标签 API UpdateContainerGroup 传入新的tag即可。 控制台 点击修改,然后修改tag eci-tag-3 修改提交后查看实例: eci-tag-4 删除ECI实例上的标签 暂不支持单独删除ECI上的tag,需要随实例一起删除。 API DeleteContainerGroup 删除ECI即可,对应的tag会随实例一起删除。 标签的作用 1、通过tag过滤资源 API DescribeContainerGroups 查询的时候传入tag,就会过滤出带有特定tag的资源。 2、通过标签进行子账号资源鉴权 参考:ECI Tag鉴权
1934890530796658 2020-03-20 17:04:36 0 浏览量 回答数 0

问题

弹性容器实例ECI

弹性容器实例ECI 1、什么是弹性容器实例ECI 2、弹性容器实例ECI有哪些应用场景 3、弹性容器实例ECI有哪些使用限制 4、如何使用弹性容器实例ECI 5、如何使用Nginx镜像创建ECI 6、如何使用CentOS镜像创建ECI 7、...
黄一刀 2020-04-04 01:37:23 90 浏览量 回答数 1

回答

ECI 实例 您的账户需要有 100 元的余额并通过实名认证,否则无法创建 ECI 实例。 目前 ECI 只支持 Linux 容器,对 Windows 容器的支持在计划中。 目前 ECI 只支持 VPC 网络。 使用限制 限制项 普通用户限制描述 例外申请方式 创建 ECI 实例的用户限制 实名认证 没有例外 单个 ECI 实例 CPU 最大规格 64 vCPU 没有例外 单个 ECI 实例数据卷数量 20 没有例外 单个 ECI 实例内支持最大的容器数 20 没有例外 支持的容器最大镜像 layer 50 没有例外
1934890530796658 2020-03-20 15:14:51 0 浏览量 回答数 0

回答

ECI 全称是“Elastic Container Instance 弹性容器实例”,是 Serverless 容器 的底层基础设施,实现了容器镜像的启动。ECI 让容器成为和 ECS 一样的云上一等公民。 ECI 底层运行环境基于安全容器技术进行强隔离,每个 ECI 拥有一个独立的 OS 运行环 境,保证运行时的安全性。ECI 支持 0.25c 到 64c 的 CPU 规格,也支持 GPU,按 需创建按秒收费。和 ECS 一样,ECI 也支持 Spot 可抢占式实例,在一些场景中可以节 省 90% 的成本。ECI 实例的启动时间目前约是 10s 左右,然后开始拉取容器镜像。我 们也提供了镜像快照功能,每次容器启动时从快照中读取镜像,省去远端拉取的时间。值得 强调的是,ECI 和 ECS 共用一个弹性计算资源池,这意味着 ECI 的弹性供给能力可以 得到最大程度的充分保障,让 ECI 用户享受弹性计算资源池的规模化红利。ECI 只可以做到单个容器实例的创建,而没有编排的能力,比如让应用多副本扩容, 让 SLB 和 Ingress 接入 Pod 流量,所以我们需要在编排系统 Kubernetes 中使用 ECI。在与 Kubernetes 编排系统的集成中,我们以 Pod 的形式管理每个 ECI 容器实 例,每个 Pod 对应一个 ECI 实例, ECI Pod 之间相互隔离,一个 ECI Pod 的启动 时间约是 10s。因为是在 Kubernetes 集群中管理 ECI Pod,所以完全连接了 Kubernetes 生态,有以下几点体现:  很方便地用 Kubectl 管理 ECI Pod,可以使用标准的 Kubernetes 的 API 操作资 源;  通过 Service 和 Ingress 连接 SLB 和 ECI Pod;  使用 Deployment / Statefulset 进行容器编排,使用 HPA 进行动态扩容;  可以使用 Proms 来监控 ECI Pod;  运行 Istio 进行流量管理,Spark / Presto 做数据计算,使用 Kubeflow 进行机器 学习;  部署各种 Helm Chart。 这些都是使用 Kubernetes 管理容器实例的价值所在。需要留意的是 Kubernetes 中的 ECI Pod 是 Serverless 容器,所以与普通的 Pod 相比,不支持一些功能(比如 Daemonset),不支持 Prividge 权限,不支持 HostPort 等。除此之外,ECI Pod 与普通 Pod 能力一样,比如支持挂载云盘、NAS 和 OSS 数 据卷等。
1358896759097293 2021-03-24 14:01:13 0 浏览量 回答数 0

回答

本文主要介绍虚拟节点和ECI,以及如何通过Virtual Node Addon插件部署虚拟节点创建ECI Pod。 虚拟节点和弹性容器实例ECI 阿里云弹性容器实例ECI(Elastic Container Instance)是面向容器的无服务器弹性计算服务,提供免运维、强隔离、快速启动的容器运行环境。使用ECI无需购买和管理底层 ECS 服务器,让用户更加关注在容器应用而底层基础设施的维护工作。用户可按需创建ECI,仅为容器配置的资源付费(按量按秒计费)。 虚拟节点Virtual Node来源于Kubernetes社区的Virtual Kubelet技术,其实现了Kubernetes与弹性容器实例ECI的无缝连接,让 Kubernetes 集群轻松获得极大的弹性能力,而不必受限于集群的节点计算容量。关于Virtual Kubelet的工作原理及其架构,请参见Virtual Kubelet 因为Virtual Node可以轻松支持更高弹性和Pod容量,灵活动态的按需创建ECI Pod,免去集群容量规划的麻烦,所以它非常适合运行在如下多个场景,帮助用户极大降低计算成本,提升计算弹性效率。 在线业务的波峰波谷弹性伸缩:如在线教育、电商等行业有着明显的波峰波谷计算特征。使用虚拟节点可以显著减少固定资源池的维护,降低计算成本。 数据计算:使用虚拟节点承载Spark、Presto等计算场景,有效降低计算成本。 CI/CD Pipeline:Jenkins、Gitlab-Runner。 Job任务:定时任务、AI。 阿里云容器服务基于虚拟节点和ECI提供了多种Serverless Container产品形态,包括Serverless Kubernetes(ASK)和ACK on ECI,充分支撑各种弹性和免节点运维场景的用户诉求。virtual node 在ACK集群中部署虚拟节点Addon 说明 在Serverless Kubernetes集群中我们无需手动部署虚拟节点Addon,用户可以直接创建ECI Pod。托管版或专属版则需要先部署ack-virtual-node addon后才可以创建ECI Pod。 在容器服务Kubernetes版(ACK)集群中部署虚拟节点Addon前, 您需要创建一个 Kubernetes 托管版或者专属版集群。详情请参见创建 Kubernetes 托管版集群。 您需要开通弹性容器实例服务。登录弹性容器实例控制台开通相应的服务。 您需要确认集群所在区域在ECI支持的地域列表内。登录弹性容器实例控制台查看已经支持的地域和可用区。 登录容器服务管理控制台。 在控制台左侧导航栏中,单击市场 > 应用目录,并在右侧选中ack-virtual-node。 在应用目录-ack-virtual-node页面,单击参数,配置虚拟节点参数。 参数 参数含义 获取路径 ECI_REGION 地域名称 您可以在集群基本信息的基本信息区域中,获取地域的值。 说明 例如,华东1:cn-hangzhou ECI_VPC 集群的VPC 您可以在集群基本信息的集群资源区域中,获取虚拟专有网络 VPC的值。 ECI_VSWITCH 虚拟交换机 您可以在节点列表单击某个节点,在实例详情页签的配置信息区域中,获取虚拟交换机的值。 说明 请确认当前交换机在ECI支持的可用区列表中。 虚拟交换机支持多可用区。因此,这里可以填写多个vSwitch,例如ECI_VSWITCH: "vsw-xxxxxxx1, vsw-xxxxxxx2, vsw-xxxxxxx3"。 ECI_SECURITY_GROUP 安全组ID 您可以在节点列表单击某个节点,在本实例安全组页签的安全组列表区域中,获取安全组ID的值。 ECI_ACCESS_KEY 用户AccessKey 请参见如何获取AccessKey。 ECI_SECRET_KEY 用户SecretKey 请参见如何获取AccessKey。 ALIYUN_CLUSTERID 集群ID 您可以在集群基本信息的基本信息区域中,获取集群ID的值。 配置完成后,在右侧的创建页面,选择对应的集群,可以看到命名空间已设定为kube-system,发布名称已设定为ack-virtual-node,单击创建。创建插件 安装完成后,在控制台左侧导航栏中,单击集群 > 节点,在节点列表页面可以看到添加了虚拟节点virtual-node-eci。添加节点 执行以下命令查看virtual-node-controller和virtual-node-admision-controller部署状态。详情请参见在CloudShell上通过kubectl管理Kubernetes集群。 kubectl -n kube-system get statefulset virtual-node-eci NAME READY AGE virtual-node-eci 1/1 1m kubectl -n kube-system get deploy ack-virtual-node-affinity-admission-controller NAME READY UP-TO-DATE AVAILABLE AGE ack-virtual-node-affinity-admission-controller 1/1 1 1 1m kubectl -n kube-system get pod|grep virtual-node-eci virtual-node-eci-0 1/1 Running 0 1m kubectl get no|grep virtual-node-eci virtual-node-eci-0 Ready agent 1m v1.11.2-aliyun-1.0.207 调度Pod到虚拟节点 说明 此操作不适用于Serverless Kubernetes集群。 当集群中存在虚拟节点时,您可以把Pod调度到虚拟节点上,Virtual Node Controller将会创建出相应的ECI Pod。您可以通过以下三种方法操作。 配置Pod的nodeSelector和tolerations。 虚拟节点有特殊的Taints,Pod需要配置nodeSelector和tolerations后才能指定调度到虚拟节点上。示例如下: apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - image: nginx imagePullPolicy: Always name: nginx nodeSelector: type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Exists 配置Pod标签。 基于virtual-node-affinity-admission-controller的webhook,对于有特定label(eci=true)的Pod,webhook会将其自动调度到虚拟节点上。示例如下: kubectl run nginx --image nginx -l eci=true kubectl get pod -o wide|grep virtual-node-eci nginx-7fc9f746b6-r4xgx 0/1 ContainerCreating 0 20s 192.168.1.38 virtual-node-eci-0 配置Namespace标签。 基于virtual-node-affinity-admission-controller的webhook,对于有特定label的namespace(virtual-node-affinity-injection=enabled)中创建的Pod,webhook会将其自动调度到虚拟节点上。示例如下: kubectl create ns vk kubectl label namespace vk virtual-node-affinity-injection=enabled kubectl -n vk run nginx --image nginx kubectl -n vk get pod -o wide|grep virtual-node-eci nginx-6f489b847d-vgj4d 1/1 Running 0 1m 192.168.1.37 virtual-node-eci-0 修改虚拟节点Controller的配置 说明 此操作不适用于Serverless Kubernetes集群。 虚拟节点Controller的配置决定了其调度ECI Pod的行为和ECI运行环境配置,包括vswitch和安全组配置等。我们可以根据需要灵活的修改Controller配置,修改配置后不会影响已经运行的ECI Pod,会立即生效于新建ECI Pod。 修改虚拟节点Controller配置的方法如下。 kubectl -n kube-system edit statefulset virtual-node-eci 常用的变更操作如下。 更新virtual-node controller版本。 当需要使用更新虚拟节点功能时,需要更新virtual-node controller镜像至最新版本。例如支持ECI Pod clusterIP访问的vk镜像版本需要高于v1.0.0.2-aliyun。 修改安全组配置ECI_SECURITY_GROUP。 用户可以修改此环境变量,改变ECI Pod的安全组。 修改vswitch配置ECI_VSWITCH。 用户可以修改此环境变量,改变ECI Pod所在的vswitch。我们建议用户配置多个vswitch支持多可用区,这样当单可用区库存不足时,Controller会选择另外一个可用区创建ECI Pod。 修改kube-proxy配置ECI_KUBE_PROXY。 此环境变量默认值为true,表示ECI Pod默认可以访问集群中的ClusterIP Service。如果ECI Pod无需访问clusterIP service时,例如Job计算场景,用户可以设置此环境变量为false关闭kube-proxy功能。另外在一些规模化场景,例如集群中需要启动大量ECI Pod时,ECI中的kube-proxy和kubernetes apiserver之间的并发连接数也会大量增加,用户同样可以选择关闭kube-proxy功能,减少对apiserver的压力提升可扩展性,改用privatezone方式让ECI Pod访问集群中的service。 创建多个虚拟节点。 我们推荐使用单个虚拟节点支撑3000个ECI Pod,当需要创建更多ECI Pod时,可以创建更多的虚拟节点,这样集群中能够支撑的ECI Pod数量也会相应成倍增长。方法是修改statefulset的副本数量,其数量代表集群中虚拟节点的数量,virtual-node-controller pod与虚拟节点一一对应,分别管理虚拟节点上的ECI Pod,controller之间互不影响。所示如下: kubectl -n kube-system scale statefulset virtual-node-eci --replicas=4 statefulset.apps/virtual-node-eci scaled kubectl get no NAME STATUS ROLES AGE VERSION cn-hangzhou.192.168.1.1 Ready 63d v1.12.6-aliyun.1 cn-hangzhou.192.168.1.2 Ready 63d v1.12.6-aliyun.1 virtual-node-eci-0 Ready agent 6m v1.11.2-aliyun-1.0.207 virtual-node-eci-1 Ready agent 1m v1.11.2-aliyun-1.0.207 virtual-node-eci-2 Ready agent 1m v1.11.2-aliyun-1.0.207 virtual-node-eci-3 Ready agent 1m v1.11.2-aliyun-1.0.207 删除虚拟节点 说明 此操作不适用于Serverless Kubernetes集群。 通常情况下我们无需删除虚拟节点,虚拟节点不同与真实节点,不会占用集群计算资源。如果用户需要删除虚拟节点,我们建议手动先驱逐虚拟节点上的Pod,或者删除所有ECI Pod,然后删除Controller和节点。在ECI Pod存在时删除virtual-node controller可能会导致ECI实例的残留。 kubectl drain virtual-node-eci-0 ... kubectl -n kube-system delete statefulset virtual-node-eci kubectl delete no virtual-node-eci-0 ...
1934890530796658 2020-03-31 20:20:53 0 浏览量 回答数 0

问题

ECI与ECS关系及原理

问题背景: 根据相关资料,了解到ECI与ECS处于架构的同一层次,统一由弹性计算平台调度。但是从《容器服务serverless容器集群用户指南》中“ECI Pod管理”小节看到,指定E...
游客mnffkjt4urnum 2021-01-15 09:44:19 94 浏览量 回答数 1

回答

本文主要介绍弹性容器实例ECI Pod的配置组成,包括安全隔离、CPU/Memory资源和规格配置、镜像拉取、存储、网络、日志收集等,及ECI的使用限制。 前提条件 您需要创建在阿里云容器服务Kubernetes版(ACK)集群中部署虚拟节点,或者创建ASK(Serverless Kubernetes)集群。详情参见在ACK集群中部署虚拟节点Addon和创建 Serverless Kubernetes 集群。 您需要开通弹性容器实例服务。登录弹性容器实例控制台开通相应的服务。 安全隔离 弹性容器实例ECI作为安全可靠的Serverless容器运行环境,每个ECI实例底层通过轻量级安全沙箱技术完全强隔离,实例间互不影响。同时实例在调度时尽可能分布在不同的物理机上,进一步保障了高可用性。 CPU/Memory资源和规格配置 ECI支持多种规格配置的方式来申请资源和计费。 指定CPU和Memory 指定容器的CPU和Memory:用户可以通过Kubernetes标准方式配置单个容器的CPU和Memory(resources.limit),如不指定则默认单个容器的资源是1C2G。ECI的资源则是Pod内所有容器所需资源的总和。(注意我们会对不支持的规格进行自动规整,例如所有容器相加的资源为2C3G,那么将会自动规整为2C4G。超过4C将不会自动规整。) 指定Pod的CPU和Memory:用户可以通过Annotation的方式配置整个Pod的CPU和Memory,这种情况将不再把所有容器资源相加,而以指定的资源创建和计费。此时可以不用指定内部容器的request和limit ,各容器可以最大程度的使用Pod内计算资源。 目前ECI Pod支持的CPU和Memory规格有: vCPU Memory .25 vCPU 0.5 GB, 1 GB .5 vCPU 1 GB, 2 GB 1 vCPU 2 GB, 4 GB, 8 GB 2 vCPU 2 GB, 4 GB, 8 GB, 16 GB 4 vCPU 4 GB, 8 GB, 16 GB, 32 GB 8 vCPU 8 GB, 16 GB, 32 GB, 64 GB 12 vCPU 12 GB, 24 GB, 48 GB, 96 GB 16 vCPU 16 GB, 32 GB, 64 GB, 128 GB 24 vCPU 48 GB, 96 GB, 192 GB 32 vCPU 64 GB, 128 GB, 256 GB 52 vCPU 96 GB, 192 GB, 384 GB 64 vCPU 128 GB, 256 GB, 512 GB CPU和Memory配置其计费时长从挂载外部存储/下载容器镜像开始至ECI实例停止运行(进入Succeeded/Failed状态)结束。 计费公式:ECI Pod实例费用 =(ECI实例CPU核数 x CPU单价 + ECI实例内存大小 x 内存单价)x ECI实例运行时长,实例按秒计费。当前计费单价如下: 计费项 价格 小时价 CPU(vCPU * 秒) 0.000049 元 0.1764 元/小时 内存(GB * 秒) 0.00000613 元 0.0221 元/小时 指定Pod的ECS规格 ECI支持根据ECS实例规格族,价格参考各地域ECS按量价格。您可以根据需要,指定ECI实例底层使用的ECS规格族,获得各规格族的指定能力,例如指定使用ecs.sn1ne规格族来使用网络增强能力。 计费公式:ECI实例费用 = ECI实例指定的ECS规格单价 x ECI实例运行时长,实例按秒计费。 当指定Pod的ECS规格时,ECI可以选择使用预留实例券对ECI按规格创建实例进行抵扣,请参见预留实例券(Reserved Instance)。 ECI使用预留实例券后的费用,跟您使用ECS包月实例的费用相近。 抢占式实例 您可以通过配置Annotation使用spot可抢占式实例,大幅降低计算成本。 镜像拉取 ECI Pod默认每次启动后使用内部的containerd从远端拉取容器镜像。如果镜像为公共镜像,则需要开通VPC的NAT网关,或者给ECI Pod挂载EIP。建议您将容器镜像存储在阿里云镜像仓库(ACR),通过VPC网络减小镜像拉取时间。另外对于ACR上的私有镜像,实现了免秘拉取功能方便您使用。 同时支持了镜像快照功能。通过把容器镜像缓存到快照中,然后通过快照快速启动容器,避免再次从远端拉取镜像,适合大镜像的场景。 存储 支持多种使用存储的方式: Flexvolume: 挂载NAS Volume。同标准的Flexvolume用法相同,指定nas volume Id进行挂载。 挂载Disk Volume:同标准的Flexvolume用法相同,指定disk volume Id进行挂载。 随ECI实例自动创建disk volume:为了提供更灵活的云盘挂载能力,ECI支持创建时挂载flexvolume动态创建一个云盘,可以指定disk volume的size大小,也可以配置当ECI实例结束时是否保留disk volume。 NFS:参考示例。 PV/PVC:参考示例 网络 ECI Pod默认使用Host网络模式,占用交换机VSwitch的一个弹性网卡ENI资源。 在Kubernetes集群环境中,ECI Pod与ECS节点上的Pod互联互通,方法如下: LoadBalancer Service挂载ECI Pod:也可以支持service同时挂载ECS节点上的Pod和ECI Pod。 访问ClusterIP Service:ECI Pod可以访问集群中的clusterIP地址。 挂载EIP:支持给ECI Pod挂载EIP,可自动创建或者绑定到已有的EIP实例。 日志收集 用户可以直接配置Pod的Env收集stdout或者文件日志到阿里云日志服务SLS中。一般情况无需再部署一个logtail sidecar容器。 支持Annotation列表 说明 注意:Annotation需要配置在Pod Spec中,而不是Deployment Spec中。 Annotation 解释 示例 k8s.aliyun.com/eci-use-specs 表示允许的实例规格,可以配置多个。当前规格没有库存时依次尝试下一个规格创建。支持CPU-MEM格式(${cpu}-${mem}Gi)、ECS规格格式、GPU规格格式(eci-gpu-$gputype-$gpucount)。 "k8s.aliyun.com/eci-use-specs": "2-4Gi,4-8Gi,ecs.c6.xlarge,ecigpu-P100-4" k8s.aliyun.com/eci-vswitch 设置Pod的虚拟交换机。 "k8s.aliyun.com/eci-vswitch" : "${your_vsw_id}" k8s.aliyun.com/eci-security-group 设置Pod的安全组。。 "k8s.aliyun.com/eci-security-group" : "${your_security_group_id}" k8s.aliyun.com/eci-resource-group-id 设置Pod所在的资源组 "k8s.aliyun.com/eci-resource-group-id" : "${your_resource_group_id}" k8s.aliyun.com/eci-ram-role-name 设置Pod的RamRole,赋予在ECI实例内部可以访问阿里云产品能力。 "k8s.aliyun.com/eci-ram-role-name" : "${your_ram_role_name}" k8s.aliyun.com/eci-image-snapshot-id 指定已有ImageCacheID,加速ECI Pod创建。 k8s.aliyun.com/eci-image-snapshot-id: "${your_image_cache_id}" k8s.aliyun.com/eci-image-cache 根据用户已有的镜像缓存,自动匹配镜像缓存。默认为false。 k8s.aliyun.com/eci-image-cache: "true" k8s.aliyun.com/eci-with-eip 创建弹性公网IP,绑定到ECI Pod。 "k8s.aliyun.com/eci-with-eip": "true" k8s.aliyun.com/eip-bandwidth 设置弹性公网IP带宽,如果不指定默认为5M。 "k8s.aliyun.com/eci-with-eip": "true""k8s.aliyun.com/eip-bandwidth": 10 k8s.aliyun.com/eci-eip-instanceid 给Pod绑定已有的弹性公网IP。 "k8s.aliyun.com/eci-eip-instanceid": "${your_eip_Instance_Id}" k8s.aliyun.com/eci-spot-strategy SpotAsPriceGo:系统自动出价,跟随当前市场实际价格。 SpotWithPriceLimit:设置抢占实例价格上限。 k8s.aliyun.com/eci-spot-strategy: "SpotAsPriceGo" k8s.aliyun.com/eci-spot-price-limit 只有k8s.aliyun.com/eci-spot-strategy设置为SpotWithPriceLimit时有效。设置实例每小时最高价格,支持最多3位小数。 k8s.aliyun.com/eci-spot-price-limit: "0.250" k8s.aliyun.com/eci-ntp-server 设置ntp server,支持设置多个。 k8s.aliyun.com/eci-ntp-server: 100.100.5.1,100.100.5.2 # 设置您的NTP服务器地址。 k8s.aliyun.com/eci-set-diskvolume 把volume(emptyDir或者hostPath)转换为动态创建云盘。格式为”$volumeName:$type:$size“。 k8s.aliyun.com/eci-set-diskvolume: "cache-volume:ext4:500Gi" ECI限制 ECI和虚拟节点目前已经兼容了大部分Pod功能,以下功能暂不支持。 不支持在虚拟节点上运行DaemonSet Pod。 不支持hostPath/hostPid。 不支持privileged权限开放。 不支持过大的configmap和secret volume挂载。 不支持NodePort类型的Service。 不支持Network Policy。
1934890530796658 2020-04-01 10:53:05 0 浏览量 回答数 0

回答

在kubernetes集群中添加虚拟节点的方式已被非常多的客户普遍使用,基于虚拟节点可以极大提升集群的Pod容量和弹性,灵活动态的按需创建ECI Pod,免去集群容量规划的麻烦。目前虚拟节点已广泛应用在如下场景。 在线业务的波峰波谷弹性需求:如在线教育、电商等行业有着明显的波峰波谷计算特征,使用虚拟节点可以显著减少固定资源池的维护,降低计算成本。 提升集群Pod容量:当传统的flannel网络模式集群因vpc路由表条目或者vswitch网络规划限制导致集群无法添加更多节点时,使用虚拟节点可以规避上述问题,简单而快速的提升集群Pod容量。 数据计算:使用虚拟节点承载Spark、Presto等计算场景,有效降低计算成本。 CI/CD和其他Job类型任务 下面我们介绍如何使用虚拟节点快速创建1万个pod,这些eci pod按需计费,不会占用固定节点资源池的容量。 相比较而言,AWS EKS在一个集群中最多只能创建1000个 Fargate Pod。基于虚拟节点的方式可以轻松创建过万个ECI Pod。 创建多个虚拟节点 请先参考ACK产品文档部署虚拟节点:https://help.aliyun.com/document_detail/118970.html 因为使用多个虚拟虚拟节点往往用于部署大量ECI Pod,我们建议谨慎确认vpc/vswitch/安全组的配置,确保有足够的vswitch ip资源(虚拟节点支持配置多个vswitch解决ip容量问题),使用企业级安全组可以突破普通安全组的2000个实例限制。 通常而言,如果单个k8s集群内eci pod数量小于3000,我们推荐部署单个虚拟节点。如果希望在虚拟节点上部署更多的pod,我们建议在k8s集群中部署多个虚拟节点来对其进行水平扩展,多个虚拟节点的部署形态可以缓解单个虚拟节点的压力,支撑更大的eci pod容量。这样3个虚拟节点可以支撑9000个eci pod,10个虚拟节点可以支撑到30000个eci pod。 image 为了更简单的进行虚拟节点水平扩展,我们使用statefulset的方式部署vk controller,每个vk controller管理一个vk节点,statefulset的默认Pod副本数量是1。当需要更多的虚拟节点时,只需要修改statefulset的replicas即可。 kubectl -n kube-system scale statefulset virtual-node-eci --replicas=4 statefulset.apps/virtual-node-eci scaled kubectl get no NAME STATUS ROLES AGE VERSION cn-hangzhou.192.168.1.1 Ready 63d v1.12.6-aliyun.1 cn-hangzhou.192.168.1.2 Ready 63d v1.12.6-aliyun.1 virtual-node-eci-0 Ready agent 1m v1.11.2-aliyun-1.0.207 virtual-node-eci-1 Ready agent 1m v1.11.2-aliyun-1.0.207 virtual-node-eci-2 Ready agent 1m v1.11.2-aliyun-1.0.207 virtual-node-eci-3 Ready agent 1m v1.11.2-aliyun-1.0.207 kubectl -n kube-system get statefulset virtual-node-eci NAME READY AGE virtual-node-eci 4/4 1m kubectl -n kube-system get pod|grep virtual-node-eci virtual-node-eci-0 1/1 Running 0 1m virtual-node-eci-1 1/1 Running 0 1m virtual-node-eci-2 1/1 Running 0 1m virtual-node-eci-3 1/1 Running 0 1m 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z8DklVMR-1583390495571)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hT9I0LLK-1583390495573)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== “点击并拖拽以移动”)] 当我们在vk namespace中创建多个nginx pod时(将vk ns加上指定label,强制让ns中的pod调度到虚拟节点上),可以发现pod被调度到了多个vk节点上。 kubectl create ns vk kubectl label namespace vk virtual-node-affinity-injection=enabled kubectl -n vk run nginx --image nginx:alpine --replicas=10 deployment.extensions/nginx scaled kubectl -n vk get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-546c47b569-blp88 1/1 Running 0 69s 192.168.1.26 virtual-node-eci-1 nginx-546c47b569-c4qbw 1/1 Running 0 69s 192.168.1.76 virtual-node-eci-0 nginx-546c47b569-dfr2v 1/1 Running 0 69s 192.168.1.27 virtual-node-eci-2 nginx-546c47b569-jfzxl 1/1 Running 0 69s 192.168.1.68 virtual-node-eci-1 nginx-546c47b569-mpmsv 1/1 Running 0 69s 192.168.1.66 virtual-node-eci-1 nginx-546c47b569-p4qlz 1/1 Running 0 69s 192.168.1.67 virtual-node-eci-3 nginx-546c47b569-x4vrn 1/1 Running 0 69s 192.168.1.65 virtual-node-eci-2 nginx-546c47b569-xmxx9 1/1 Running 0 69s 192.168.1.30 virtual-node-eci-0 nginx-546c47b569-xznd8 1/1 Running 0 69s 192.168.1.77 virtual-node-eci-3 nginx-546c47b569-zk9zc 1/1 Running 0 69s 192.168.1.75 virtual-node-eci-2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rS6FgN3w-1583390495573)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ilmifCpD-1583390495574)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== “点击并拖拽以移动”)] 运行1万个ECI Pod 在上述步骤中我们已经创建了4个虚拟节点,能够支撑12000个ECI Pod,我们只需要将workload指定调度到虚拟节点即可。这里我们需要关注kube-proxy的可扩展性。 虚拟节点创建的ECI Pod默认支持访问集群中的ClusterIP Service,这样每个ECI Pod都需要watch apiserver保持一个连接以监听svc/endpoints变化。当大量pod同时Running时,apiserver和slb将维持Pod数量的并发连接,所以需要确保slb规格能否支撑期望的并发连接数。 如果ECI Pod无需访问ClusterIP Service,则可以将virtual-node-eci statefulset的ECI_KUBE_PROXY环境变量值设置为"false",这样就不会有大量slb并发连接的存在,也会减少apiserver的压力。 我么也可以选择将ECI Pod访问的ClusterIP Service暴露成内网slb类型,然后通过privatezone的方式让ECI Pod不必基于kube-proxy也能否访问到集群中的Service服务。 缩减vk虚拟节点数量 因为vk上的eci pod是按需创建,当没有eci pod时vk虚拟节点不会占用实际的资源,所以一般情况下我们不需要减少vk节点数。但用户如果确实希望减少vk节点数时,我们建议按照如下步骤操作。 假设当前集群中有4个虚拟节点,分别为virtual-node-eci-0/…/virtual-node-eci-3。我们希望缩减到1个虚拟节点,那么我们需要删除virtual-node-eci-1/…/virtual-node-eci-3这3个节点。 先优雅下线vk节点,驱逐上面的pod到其他节点上,同时也禁止更多pod调度到待删除的vk节点上。 kubectl drain virtual-node-eci-1 virtual-node-eci-2 virtual-node-eci-3 kubectl get no NAME STATUS ROLES AGE VERSION cn-hangzhou.192.168.1.1 Ready 66d v1.12.6-aliyun.1 cn-hangzhou.192.168.1.2 Ready 66d v1.12.6-aliyun.1 virtual-node-eci-0 Ready agent 3d6h v1.11.2-aliyun-1.0.207 virtual-node-eci-1 Ready,SchedulingDisabled agent 3d6h v1.11.2-aliyun-1.0.207 virtual-node-eci-2 Ready,SchedulingDisabled agent 3d6h v1.11.2-aliyun-1.0.207 virtual-node-eci-3 Ready,SchedulingDisabled agent 66m v1.11.2-aliyun-1.0.207 1 2 3 4 5 6 7 8 9 10 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g0coaJ3L-1583390495574)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CMyFp51L-1583390495574)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== “点击并拖拽以移动”)] 之所以需要先优雅下线vk节点的原因是vk节点上的eci pod是被vk controller管理,如果vk节点上还存在eci pod时删除vk controller,那样将导致eci pod被残留,vk controller也无法继续管理那些pod。 待vk节点下线后,修改virtual-node-eci statefulset的副本数量,使其缩减到我们期望的vk节点数量。 kubectl -n kube-system scale statefulset virtual-node-eci --replicas=1 statefulset.apps/virtual-node-eci scaled kubectl -n kube-system get pod|grep virtual-node-eci virtual-node-eci-0 1/1 Running 0 3d6h 1 2 3 4 5 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXua1T69-1583390495575)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ri1waSkp-1583390495577)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== “点击并拖拽以移动”)] 等待一段时间,我们会发现那些vk节点变成NotReady状态。 kubectl get no NAME STATUS ROLES AGE VERSION cn-hangzhou.192.168.1.1 Ready 66d v1.12.6-aliyun.1 cn-hangzhou.192.168.1.2 Ready 66d v1.12.6-aliyun.1 virtual-node-eci-0 Ready agent 3d6h v1.11.2-aliyun-1.0.207 virtual-node-eci-1 NotReady,SchedulingDisabled agent 3d6h v1.11.2-aliyun-1.0.207 virtual-node-eci-2 NotReady,SchedulingDisabled agent 3d6h v1.11.2-aliyun-1.0.207 virtual-node-eci-3 NotReady,SchedulingDisabled agent 70m v1.11.2-aliyun-1.0.207 1 2 3 4 5 6 7 8 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MgIVXNSb-1583390495578)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HOULqcpK-1583390495581)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== “点击并拖拽以移动”)] 手动删除NotReady状态的虚拟节点 kubelet delete no virtual-node-eci-1 virtual-node-eci-2 virtual-node-eci-3 node "virtual-node-eci-1" deleted node "virtual-node-eci-2" deleted node "virtual-node-eci-3" deleted kubectl get no NAME STATUS ROLES AGE VERSION cn-hangzhou.192.168.1.1 Ready 66d v1.12.6-aliyun.1 cn-hangzhou.192.168.1.2 Ready 66d v1.12.6-aliyun.1 virtual-node-eci-0 Ready agent 3d6h v1.11.2-aliyun-1.0.207 1 2 3 4 5 6 7 8 9 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wEtT6nKb-1583390495581)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X6C6mAr7-1583390495582)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== “点击并拖拽以移动”)]
保持可爱mmm 2020-04-15 22:52:25 0 浏览量 回答数 0

回答

一键开启ECI日志收集 ECI已经开始支持用户日志收集,通过openAPI创建ECI的时候设置SlsEnable参数为true即可开启ECI的用户日志收集功能。默认情况下,用户无需任何其他的设置,就可以将该ECI容器的标准输出、错误日志收集到用户账号下的日志服务的日志仓库。日志收集非常方便。效果如下: 默认项目: eci-log-default-project-开头的project即为ECI为用户创建的默认的project(每个region都会创建默认的)。eci-sls-1 日志仓库: eci-log-default-log-store-开头的logStore为默认的日志仓库,会收集ECI的标准输出和错误输出,能满足大部分用户的使用场景。eci-sls-2 机器组: eci-log-default-machine-group开头的机器组即为ECI默认机器组,开启sls日志收集的ECI都会加入到这个默认机器组。通过查看机器组状态可以看到应用的ECI实例。 eci-sls-3 配置: eci-log-default-config开头的为默认的logTail配置。我们默认生成的logTail配置是极简模式,如果用户对日志收集有更复杂的配置,可以自行到控制台自定义配置其他的模式即可。 eci-sls-4 日志收集结果: eci-sls-5 以上均为ECI为用户生成的默认配置,可以满足大多数用户的基本需求。 用户自定义设置 尽管ECI默认可以为用户设置了必须的基本参数,但是用户依然会有一些特别的需求,比如,默认条件下,用户的ECI都会加入到默认项目下的默认机器组,日志也都是收集到默认的日志库。用户现在需需要将ECI的日志收集到自定义项目下的自定义日志库里,针对不同的应用和服务可能还需要将ECI实例加入不同的机器组。有两种办法可以实现: 通过日志服务控制台(API)手动设置 用户可以自行登录日志服务控制台,创建自定义项目,创建自定义日志库,以及自定的机器组,为日志库创建自定义config并应用到选择的机器组。这样日志内容就可以导向新的日志库了。这里需要注意的是,同一个日志文件不能被多个config引用,导向新的日志库的时候,切记要删掉默认的日志库以及配置,不然收集会失败。 如果觉得通过日志服务控制台配置太繁琐,依然可以通过ECI代创建和配置。 通过ECI自定义 ECI除了具备为用户生成所有默认设置外,还支持为用户生成自定义的配置。比如项目名、日志库名、机器组名、以及日志收集目录等。具体的参数通过ECI内第一个容器的环境变量传入,格式如下: 项目名 非必填参数,我们会为每个用户创建一个默认的ECI project,如果用户创建ECI的时候不指定,我们就默认加入这个project;如果指定了,但是不存在,我们会代创建;如果存在,直接将logStore和config等创建、配置在这个项目里。 -name: aliyun_logs_project -value: {project 名称} 项目名约束: 1.项目名称仅支持小写字母、数字和连字符(-) 2.必须以小写字母和数字开头和结尾 3.名称长度为3-63个字符 注:校验不通过的,会直接忽略,使用ECI默认的。 Logstore 非必填参数。默认会为用户创建一个默认logSrtore,配置ECI容器标准的输出日志。如果用户配置了该参数,ECI就不会为用户生成默认的,相应容器的日志会被收集到指定的logstore。实际上是ECI会创建/修改配置应用到相应的机器组。注:如果用户没有设置volume日志目录(见下文),则此处设置的自定义收集目录只能为var/log/eci/目录下的子目录 -name: aliyun_log_logstore_{Logstore 名称} or aliyun_logs_{Logstore 名称} -value: {日志采集路径} 日志库名约束: 1.日志库名称仅支持小写字母、数字、连字符(-)和下划线(_) 2.必须以小写字母和数字开头和结尾 3.名称长度为3-63个字符 注:校验不通过的,会直接忽略,使用ECI默认的。 Logstore设置分区数 什么是分区(Shard)? 设置方法: -name: aliyun_logs_{Logstore 名称}_shard -value: {shard数值} 默认值为2,可选范围是[1,10] Logstore设置日志保留时间 设置方法: -name: aliyun_logs_{Logstore 名称}_ttl -value: {ttl数值} 默认值为90,可选范围是[1,3650] *机器组名称 非必填参数。默认情况,ECI实例会加入到ECI帮用户创建的默认机器组,一个region对应一个。如果单一的机器组不能满足需求,还可以选择将ECI加入不同的机器组,机器组可以是已经创建好的,也可以是还未创建的。当基于ECI部署了多种不同的应用或者服务的时候,日志收集的配置往往需要分开设置,为ECI设置机器组就非常有用。收集设置的格式如下: -name: aliyun_logs_machinegroup -value: {机器组名} 机器组名约束: 1.机器组名称仅支持字母、数字、连字符(-)和下划线(_) 2.必须以小写字母和数字开头和结尾 3.名称长度为3-63个字符 注:校验不通过的,会直接忽略,使用ECI默认的。 用户Volume日志收集 默认情况下,我们会为用户配置标准的输出、错误日志,并收集到默认日志仓库。但是我们除了支持这种基本的日志收集外还支持用户的Volume日志收集。用户的Volume日志的收集相对比较灵活,对应的收集目录需要用户自行设定。 ECI的容器的标准输出的日志目录为:var/log/eci//.log,默认情况下ECI会代用户设置,这个目录基本是固定不变的。而ECI Volume的标准日志收集目录为Volume挂载的目录下的子目录,具体取决于用户自己的设定。 比如,用户有个EmptyDirVolume,挂载到了容器的/pod/data/目录下,那么Volume的日志收集可以指定是/pod/data/下的任意子目录下的任意文件。通过这种方式,用户可以灵活的调整挂载目录并配合自己的业务,实现自定义的日志收集目录。 创建EmptyDirVolume: 'Volume.1.Name': 'default-volume', 'Volume.1.Type': 'EmptyDirVolume', 将Volume挂载至容器目录: 'Container.1.VolumeMount.1.Name': 'default-volume', 'Container.1.VolumeMount.1.MountPath': '/pod/data/', 'Container.1.VolumeMount.1.ReadOnly': False, 配置日志仓库 ‘aliyun_log_logstore_Store’为ECI的容器的标准输出的收集目录,’aliyun_log_logstore_Store2’为Volume的日志收集目录,模糊匹配/pod/data/目录下的任意文件。 'Container.1.EnvironmentVar.1.Key': 'aliyun_log_logstore_Store', 'Container.1.EnvironmentVar.1.Value': '/var/log/eci//.log', #'Container.1.EnvironmentVar.1.Key': 'aliyun_log_logstore_Store', #'Container.1.EnvironmentVar.1.Value': 'stdout', 'Container.1.EnvironmentVar.2.Key': 'aliyun_log_logstore_Store2', 'Container.1.EnvironmentVar.2.Value': '/pod/data//.', 注:设置环境变量时,stdout 等价于 /var/log/eci//*.log 效果 如下图所示,在Volume的挂载目录下创建一个文件,输入任意内容: eci-sls-6 然后打开对应的日志仓库,无需任何配置,可以看到内容已经被自动收集到了日志仓库。 eci-sls-7 注: 1、日志项目必须和ECI所在的region相同,如果传入其他region的项目,会被忽略,而使用ECI默认的项目。 2、只有用户当没有通过ECI的环境变量配置日志仓库的情况下,我们才会默认代用户配置ECI的标准输出、错误日志的收集。如果用户通过ECI的环境变量自行配置了任何自定义日志仓库,我们将不会代用户配置ECI标准的输出、错误日志收集。 3、目前对收集目录没有数量限制,但是切记不要在多个日志库logTail的config里面引用到了同一机器组同一个文件(明确指定和模糊匹配到的都不允许),否则会收集失败。这种情况下,需要用户自行到日志服务控制台纠正才能恢复ECI正常的日志收集。 4、目前仅支持EmptyDirVolume一种Volume类型的日志收集。
1934890530796658 2020-03-20 15:36:22 0 浏览量 回答数 0

回答

监听配置 进入slb控制台,可以看到通过api添加的ECI实例已经在控制台的后端服务列表中了(因为暂时还没和ECI控制台进行关联,所以不支持跳转,但是显示的实例id是准确的,控制台关联很快就会支持)。 eci-slb-3 设置调度算法 默认为根据加权轮询 eci-slb-4 默认后端服务器 nginx默认是监听80端口,所以设置端口分别是80,权重根据业务分配,具体的数字不重要,主要是看比例值。 eci-slb-5 健康检查 eci-slb-6 验证 在本地curl slb的公网ip(重复多次): liumihustdeMacBook-Pro:~ liumihust$ curl 47.96.65.203 80 通过查看ECI的日志,可以看到请求通过slb被分发到了不同的eci实例上。 eci-slb-7
1934890530796658 2020-03-20 16:43:06 0 浏览量 回答数 0

回答

Job、CronJob 等任务类容器,在运行完成后会进入 Succeeded 或者 Failed 状态,当进入这 2 个状态后,ECI 即停止计费,不论 ECI 实例是否删除。 ECI 计费时长从下载容器镜像 (docker pull)开始至 ECI 实例停止运行(进入 Succeeded/Failed 状态)结束。 ECI 实例的生命周期状态,请参考 ECI实例的生命周期。
游客bnlxddh3fwntw 2020-03-04 15:33:15 0 浏览量 回答数 0

回答

通过virtual-kubelet创建Pod到ECI平台时,为充分利用ECI系统提供的功能,并且不改变kubernetes语义的前提下,我们借助了Annotation的作用,根据需求增加有意义的Annotation,virtual-kubelet做转译,提升与ECI平台的交互。 本文主要介绍virtual-kubelet目前支持的Annotation列表,会定期更新,并且介绍每个Annotation作用和影响。 说明 下面介绍的注解,仅适用于创建到virtual-kubelet节点上的Pod。 指定ECI规格 增加k8s.aliyun.com/eci-use-specs注解, 创建Pod时允许使用的实例规格列表,遇到没库存时,按照顺序遍历规格列表购买ECI实例,应对库存问题。 k8s.aliyun.com/eci-use-specs的值,支持列表,使用逗号分隔,列表中元素的格式: 1.模糊匹配 ${cpu}-${mem}Gi:例如: 2-4Gi;表示创建一个2核4G的ECI实例。 ecigpu-${gpuTpye}-${gpuCount}:例如: ecigpu-P100-4;ecigpu: 暗示使用GPU规格,P100: 表示GPU类型,4: 表示申请的GPU个数,目前virtual-kubelet支持的gpuType和gpuCount如下表: gputype gpuCount 匹配实例规格 P4 1 ecs.gn5i-c2g1.large P4 2 ecs.gn5i-c16g1.8xlarge P4 4 ecs.gn5i-c28g1.14xlarge V100 1 ecs.gn6v-c8g1.2xlarge V100 4 ecs.gn6v-c8g1.8xlarge V100 8 ecs.gn6v-c8g1.16xlarge P100 1 ecs.gn5-c8g1.2xlarge P100 2 ecs.gn5-c8g1.4xlarge P100 4 ecs.gn5-c8g1.8xlarge P100 8 ecs.gn5-c8g1.14xlarge 2.精确设置:明确指定创建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": "64-512Gi, 2-4Gi,ecs.c6.xlarge,ecigpu-P100-4" labels: app: cos spec: containers: - name: u1 image: "registry-vpc.cn-beijing.aliyuncs.com/lxx/cos-4g" nodeName: virtual-node-eci-0 ImageCache 创建Pod时,利用镜像缓存技术,加速创建速度。请参见使用镜像缓存 CRD 加速创建 Pod。 手工指定 创建Deployment时,可以指定已有ImageCacheID,加速Deployment创建。 apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: nginx-with-imagecache spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: annotations: "k8s.aliyun.com/eci-image-snapshot-id": "${your_image_cache_id}" labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 imagePullPolicy: IfNotPresent nodeName: virtual-node-eci-0 自动匹配 创建Deployment时,开启自动匹配镜像缓存,在创建过程中,会根据用户已有的镜像缓存,选择最优的镜像缓存,加速Deployment创建。 apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: nginx-dynamic-image-cache labels: app: nginx-dynamic-image-cache spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: annotations: "k8s.aliyun.com/eci-image-cache": "true" labels: app: nginx spec: containers: - name: nginx image: nginx:latest imagePullPolicy: IfNotPresent nodeName: virtual-node-eci-0 弹性公网 IP 通过注解为ECI实例绑定弹性公网IP,赋予ECI实例公网访问能力,弹性公网IP详细信息,请参见什么是弹性公网IP。 自动创建 创建Deployment时,同时创建弹性公网IP,绑定到ECI实例。 自动创建的公网IP信息: 带宽默认为5M,可以通过注解调整。 计费方式为按量计费。 apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: cos-vk-resource-group-id labels: app: vk spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: annotations: "k8s.aliyun.com/eci-with-eip": "true" "k8s.aliyun.com/eip-bandwidth": "10" labels: app: nginx spec: containers: - name: nginx image: nginx:latest nodeName: virtual-node-eci-0 手工指定 创建Deployment时,选择已有弹性公网IP,绑定到ECI实例。 apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: cos-vk-resource-group-id labels: app: vk spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: annotations: "k8s.aliyun.com/eci-eip-instanceid": "${your_eip_Instance_Id}" labels: app: nginx spec: containers: - name: nginx image: nginx:latest nodeName: virtual-node-eci-0 设置NTP服务 通过注解为ECI实例设置ntp server,支持设置多个。请参见为 Pod 配置 NTP 服务。 apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: set-ngnix-ntp labels: app: vk spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: annotations: "k8s.aliyun.com/eci-ntp-server": 100.100.5.1,100.100.5.2 # 设置您的NTP服务器地址 labels: app: nginx spec: containers: - name: nginx image: nginx:latest nodeName: virtual-node-eci-0 设置资源组 通过注解为ECI实例设定资源组。 apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: cos-vk-resource-group-id labels: app: vk spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: annotations: "k8s.aliyun.com/eci-resource-group-id" : "${your_resource_group_id}" labels: app: nginx spec: containers: - name: nginx image: nginx:latest nodeName: virtual-node-eci-0 设置RamRole 通过注解为ECI实例设置已有RamRole,赋予在ECI实例内部可以访问阿里云产品能力。 apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: set-ram-role labels: app: vk spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: annotations: "k8s.aliyun.com/eci-ram-role-name" : "${your_ram_role_name}" labels: app: nginx spec: containers: - name: nginx image: nginx:latest nodeName: virtual-node-eci-0 设置虚拟交换机 virtual-kubelet启动时,通过环境变量ECI_VSWITCH设置默认虚机交换机,所有创建在虚拟机节点上的Deployment默认使用virtual-kubelet配置的虚拟交换机创建ECI实例,如果用户希望使用同VPC下其他虚拟交换机创建ECI实例,可以通过注解方式显示指定虚拟交换机。 apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: set-vswitch labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: annotations: "k8s.aliyun.com/eci-vswitch" : "${your_vsw_id}" labels: app: nginx spec: containers: - name: nginx image: nginx:latest nodeName: virtual-node-eci-0 设置安全组 virtual-kubelet启动时,通过环境变量ECI_SECURITY_GROUP设置默认安全组,所有创建在虚拟机节点上的Deployment默认使用virtual-kubelet配置的安全组创建ECI实例,如果用户希望使用同VPC下其他安全组创建ECI实例,可以通过注解方式显示指定安全组。 apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: set-security-group labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: annotations: "k8s.aliyun.com/eci-security-group" : "${your_security_group_id}" labels: app: nginx spec: containers: - name: nginx image: nginx:latest nodeName: virtual-node-eci-0
1934890530796658 2020-03-20 17:44:05 0 浏览量 回答数 0

回答

相较于普通的 ECI 实例,ECI GPU 实例为用户容器提供了 GPU 资源以加速机器 学习等任务的运行,其典型架构如上图所示。ECI GPU 实例预装了 GPU 驱动,免去了 用户安装和维护 GPU 驱动的麻烦。同时,ECI GPU 实例同普通的 ECI 实例一样兼容 CRI 接口,Kubernetes 也可以直接对 ECI GPU 实例进行调度和编排。此外,利用官 方容器镜像,用户无需关心 CUDA Toolkit/Tensorflow/PyTorch 等工具和框架的搭建 部署,只需要专注于具体业务功能的开发和实现。 通过 ECI GPU 实例,用户可以一键式部署和运行经过 GPU 加速的机器学习等业 务,简单方便。详见https://www.aliyun.com/product/ecs/gpu?spm=a2c4g.11186623.2.20.70a24c07ayDX6J
1358896759097293 2021-03-24 13:58:37 0 浏览量 回答数 0

回答

ECI 在运行容器前,需要先拉取用户指定的容器镜像,而因网络和容器镜像大小等因素,镜像拉取耗时往往成了 ECI 实例启动的主要耗时,用户可以通过镜像缓存技术来解决这个问题。 镜像缓存使用步骤: 创建镜像缓存 查询镜像缓存信息 使用镜像缓存创建 ECI 费用说明 您使用镜像缓存,包括创建费用和使用费用。 创建费用 在您提交镜像缓存创建申请后,阿里云会使用1C2G的ECI资源进行镜像缓存的创建,在创建过程中,包括的费用包括: 1C2G的ECI资源费用,镜像缓存创建完成后停止计费。ECI实例计费参考这里。 申明的镜像快照盘费用,默认使用ESSD PL1云盘,20G大小,您可以自定义指定盘的大小(最小20GB)。云盘计费参考这里。 您每创建一次镜像缓存,会提交一份云盘快照,快照的计费参考这里。 您可以在ECI控制台,查看对应的镜像缓存创建实例。 使用费用 您在创建ECI实例过程中,若指定使用镜像缓存特性,会为每个ECI实例挂载一块基于镜像缓存快照生成的云盘,费用请参考 ESSD磁盘价格(PL1)。 以华北2地域为例,您为每个实例使用一个20GB的镜像缓存盘(ESSD PL1 20GB),每小时实例费用增加0.04元。 创建镜像缓存 镜像缓存默认使用 1C2G 规格的 ECI 进行制作,制作过程中会产生一定的费用。 目前单个镜像缓存最多支持包含20个镜像,镜像缓存大小可自定义,默认为20G。 镜像缓存支持设置保留时长,过期后自动删除,该功能默认不启用,如需使用请设置保留时长。 如果选择了私有镜像(非阿里云容器镜像服务托管的镜像),则需要提供私有镜像仓库的地址、用户名和密码,ECI 需要用来拉取镜像。 如果所选镜像需要通过公网拉取(如 Docker官方镜像),则 ECI 需要具备外网访问能力 通过控制台创建 在 ECI 控制台 方便的创建镜像缓存 create 通过 OpenAPI 创建 可以在 OpenAPI Explorer 上方便的查看和调试镜像缓存的创建接口 相关参数说明如下: ImageCacheName=normalimage(镜像缓存名称) Image.1=registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.15.10 Image.2=registry-vpc.cn-beijing.aliyuncs.com/eci_open/node:11 Image.3=registry-vpc.cn-beijing.aliyuncs.com/eci_open/mysql:5.6 RetentionDays=30(保留时长,取值范围1~65536,单位天) ImageCacheSize=20(镜像缓存大小,默认为20,取值范围20~500,单位GiB) 查询镜像缓存信息 可以在 OpenAPI Explorer 上方便的查看和调试镜像缓存的查询接口 接口返回的信息如下: { "ImageCaches": [ { "CreationTime": "2019-12-18T03:18:02Z", "Status": "Ready", "ContainerGroupId": "eci-2zehl84ra0em1rzvku1f", "ImageCacheId": "imc-2zehl84ra0em1rzvku1f",(镜像缓存ID) "ImageCacheName": "normalimage", "Events": [... ], "SnapshotId": "s-2ze10h8c369eb7spa2oe", "Images": [ "registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.15.10", "registry-vpc.cn-beijing.aliyuncs.com/eci_open/node:11", "registry-vpc.cn-beijing.aliyuncs.com/eci_open/mysql:5.6" ], "ExpireDateTime": "2020-01-17T20:49:47Z",(保留时间) "Progress": "100%"(创建进度) } ], "RequestId": "1ABEBF6E-6780-49CA-8C34-EEC6017F3012" } 使用镜像缓存创建 ECI 使用镜像缓存创建 ECI 支持两种策略: 指定具体的镜像缓存 开启自动匹配,由 ECI 来自动匹配和使用最佳的镜像缓存 可以在 OpenAPI Explorer 上方便的查看和调试 ECI 实例创建接口 注意:使用镜像缓存创建 ECI 时,需将容器的 ImagePullPolicy 参数设置为 IfNotPresent,否者效果将大打折扣。 指定具体的镜像缓存 ImageSnapshotId=imc-2zehl84ra0em1rzvku1f 开启自动匹配 AutoMatchImageCache=true 使用效果 在 ECI 控制台查看实例事件: event 镜像已经存在于实例中,不再需要从远程拉取,镜像拉取耗时降低为0。 在阿里云容器服务中使用 ECI 镜像缓存,请参阅 使用镜像缓存 CRD 加速创建 Pod
1934890530796658 2020-03-20 20:49:18 0 浏览量 回答数 0

问题

eci的使用需要在阿里云中已经建好了k8s集群吗?如果不需要的话,如何实现本地对远程eci的管理

eci的使用需要在阿里云中已经建好了k8s集群吗?如果不需要的话,如何实现本地对远程eci的管理...
小攻云攻略 2019-12-18 17:29:24 1 浏览量 回答数 1

问题

eci的使用需要在阿里云中已经建好了k8s集群吗?如果不需要的话,如何实现本地对远程eci的管理

eci的使用需要在阿里云中已经建好了k8s集群吗?如果不需要的话,如何实现本地对远程eci的管理...
小攻云攻略 2020-03-12 16:29:11 19 浏览量 回答数 2

回答

在 ACK Kubernetes 集群中使用 ECI 的方式。这种方式适合于用 户已经有了一个 ACK 集群,集群中已经有了很多 ECS 节点,此时可以基于 ECI 的弹 性能力来运行一些短时间 Short-Run 的应用,以解决元集群资源不足的问题,或者使用 ECI 来支撑应用的快速扩容,因为使用 ECI 进行扩容的效率要高于 ECS 节点扩容。 在 ACK on ECI 中,ECS 和 ECI Pod 可以互联互通,ECI Pod 可以访问集群 中的 Coredns,也可以访问 ClusterIP Service。与 ACK on ECI 不同的是,ASK(Serverless Kubernetes)集群中没有 ECS 节 点,这是和传统 Kubernetes 集群最主要的差异,所以在 ASK 集群中无需管理任何节点, 实现了彻底的免节点运维环境,是一个纯粹的 Serverless 环境,它让 Kubernetes 的使 用门槛大大降低,也丢弃了繁琐的底层节点运维工作,更不会遇到节点 Notready 等问题。 在 ASK 集群中,用户只需关注应用本身,而无需关注底层基础设施管理。 ASK 的弹性能力会优于普通 Kubernetes 集群,目前是 30s 创建 500 个 Pod 到 Running 状态。集群中 ECI Pod 默认是按量收费,但也支持 Spot 和预留实例劵来 降低成本。在兼容性方面,ASK 中没有真实节点存在,所以不支持 Daemonset 等与节 点相关的功能,像 Deployment / Statefulset / Job / Service / Ingress / CRD 等 都是无缝支持的。 ASK 中默认的 Ingress 是基于 SLB 7 层转发实现,用户无需部署 Nginx Ingress, 维护更加简单。 同时基于 SLB 7 层我们实现了 Knative Serving 能力,其中 Knative Controller 被 ASK 托管,用户无需负担 Controller 的成本。 与 ACK 一样,ASK 和 Arms / SLS 等云产品实现了很好的集成,可以很方便地对 Pod 进行监控,把 Pod 日志收集到 SLS 中。这是 ASK 的整体架构,核心部分是 ASK-Schduler,它负责 Watch Pod 的变化, 然后创建对应的 ECI 实例,同时把 ECI 实例状态同步到 Pod。集群中没有真实 ECS 节点注册到 Apiserver。这个 Nodeless 架构解耦了 Kubernetes 编排层和 ECI 资源 层,让 Kubernetes 彻底摆脱底层节点规模导致的弹性和容量限制,成为面向云的 Nodeless Kubernetes 弹性架构。
1358896759097293 2021-03-24 14:01:10 0 浏览量 回答数 0

回答

本文讲解如何使 ECI 实例可以与外网互通,目前有2种方式 实例所属 VPC 绑定 NAT网关 + EIP 实例直接绑定 EIP VPC 绑定 NAT网关 + EIP 示例场景:拉取Docker Hub镜像 主要步骤: 创建 VPC 及 VSwitch 创建 NAT 创建 EIP,并绑定到 NAT 为NAT 配置 SNAT 条目 创建 VPC 及 VSwitch 在 VPC 控制台完成 VPC 及 VSwitch 的创建 vpc 创建 NAT 接着创建 NAT 网关(创建的时候选择上一步操作创建的 VPC ) nat 创建 EIP,并绑定到 NAT 接着创建 EIP eip 将 EIP 绑定到 NAT banding 为NAT 配置 SNAT 条目 在 NAT 中创建 SNAT 条目,以实现访问外网 snat 完成后,ECI 创建时就可以正常拉取 Docker Hub 镜像了。VPC 对应交换机下的所有 ECI 实例,都能够通过该 VPC 和交换机上绑定的 NAT 网关+ EIP 访问外网。 如果需要通过外网来访问 ECI,则还需要配置 DNAT 条目,具体可以参阅文档 创建SNAT条目 实例直接绑定 EIP 示例场景:Nginx 外网访问 ECI 相关配置如下,直接绑定该 Region 下的EIP(弹性公网 IP)。当 Nginx 启动后,会暴露80端口到 EIP。另外需要注意的是安全组需要设置对 80 端口允许规则。 注意:EIP 不同于 NAT 网关,EIP 只支持绑定给某一个特定的 ECI 实例。在 ECI 直接绑定 EIP 模式下,如果您存在多个 ECI 需要访问外网,需要绑定多个 EIP。 nginx-network nginx-network nginx-network ECI 启动成功后,浏览器访问 EIP + Port,结果如下 nginx-network
1934890530796658 2020-03-20 15:30:55 0 浏览量 回答数 0

回答

目前在 ACK/ASK 集群中使用 GPU,只需要在 YAML 文件中指定两个字段即可。 第一个字段是 k8s.aliyun.com/eci-use-specs,该字段用于指定 ECI GPU 实例 规格,当前阿里云上可用的 ECI GPU 实例规格已经列在左图的表格中了。 第二个字段是 nvidia.com/gpu,该字段用于指定该容器所要使用的 GPU 数量。注 意,spec 中所有容器指定要使用的 GPU 数量总和不能超过 k8s.aliyun.com/eci-use -specs 字段指定的 ECI GPU 实例规格所提供的 GPU 数量,否则容器会创建失败。
1358896759097293 2021-03-24 13:58:32 0 浏览量 回答数 0

回答

是弹性负载 Elastic Workload,弹性负载实现了 Deployment 多个 副本调度在不同的单元上,比如 ECS、ECI 和 ECI-Spot 上,通过这种混合调度的模式, 可以降低负载的计算成本。在这个示例中,Deployment 是 6 个副本,其中 2 个为正常 的 ECI Pod,其他副本为 ECI-Spot 实例。
1358896759097293 2021-03-24 14:00:59 0 浏览量 回答数 0

回答

此前ECI已经支持通过资源组对资源进行管理,并支持子账号的资源组鉴权。如今ECI又新增了一种新的子账号鉴权方式:Tag鉴权。 如何使用? 1、进入RAM控制台,进入“策略管理”,选择“系统策略”,搜索关键字“ECI”。 屏幕快照 2019-05-08 下午2.23.23.png打开“AliyunECIFullAccess”,即可看到如下内容: "Version": "1", "Statement": [ { "Action": "eci:", "Resource": "", "Effect": "Allow" }, { "Action": [ "ecs:DescribeSecurityGroups" ], "Resource": "", "Effect": "Allow" }, { "Action": [ "vpc:DescribeVSwitches", "vpc:DescribeVpcs", "vpc:DescribeEipAddresses" ], "Resource": "", "Effect": "Allow" } ] } 这是系统生成的ECI full权限。 2、接下来,我们选择“新建授权策略”,选择“AliyunECIFullAccess”为模板,修改内容如下: { "Version": "1", "Statement": [ { "Action": "eci:", "Resource": "", "Effect": "Allow", "Condition": { "StringEquals": { "eci:tag/name": "liumi", "eci:tag/env": "test" } } }, { "Action": [ "ecs:DescribeSecurityGroups" ], "Resource": "", "Effect": "Allow" }, { "Action": [ "vpc:DescribeVSwitches", "vpc:DescribeVpcs", "vpc:DescribeEipAddresses" ], "Resource": "", "Effect": "Allow" } ] } 其实就是在“AliyunECIFullAccess”的基础上,增加了子账号的tag限制(即用户只能操作同时满足name=liumi,env=test的资源。示例中的tag仅做参考,用户可自定义)。这个授权策略意味着,授权的子账号拥有带指定tag的ECI的full权限,而无法操作带其他tag的ECI资源。 3、接下来就是授权,进入“用户管理”,选择需要设置tag权限的子账号,也可以选择新建。 屏幕快照 2019-05-08 下午1.59.58.png 进入“用户授权策略”,选择“编辑授权策略”,选择之前建好的tag策略即可。 常见使用场景 以上文中的子账号为例,预期的结果如下: CreateContainerGroup 创建没有添加tag,鉴权不通过。 创建传入不匹配的tag,鉴权不通过。 创建传入完全匹配的tag,鉴权通过。 创建传入tag包含授权tag,鉴权通过。 RestartContainerGroup 操作大账号下,tag与自己授权不匹配的eci,鉴权不同通过。 操作大账号下,tag与自己授权匹配的eci,鉴权通过。 操作tag子账号下匹配的eci,鉴权通过。 ExportContainerGroupTemplate 操作大账号下,tag与自己授权不匹配的eci,鉴权不同通过。 操作大账号下,tag与自己授权匹配的eci,鉴权通过。 操作tag子账号下匹配的eci,鉴权通过。 ExecContainerCommand 操作大账号下,tag与自己授权不匹配的eci,鉴权不同通过。 操作大账号下,tag与自己授权匹配的eci,鉴权通过。 操作tag子账号下匹配的eci,鉴权通过。 DescribeContainerLog 操作大账号下,tag与自己授权不匹配的eci,鉴权不同通过。 操作大账号下,tag与自己授权匹配的eci,鉴权通过。 操作tag子账号下匹配的eci,鉴权通过。 DescribeContainerGroups 没有传入tag,但是传入了资源id,id的tag有不满足的,鉴权不通过。 没有传入tag,但是传入了资源id,id的tag全部匹配,鉴权通过。 用户传入tag,但是没有传入资源id,tag与账号不匹配,鉴权不通过。 用户传入tag,但是没有传入资源id,tag与账号匹配,鉴权通过。 用户既传入了tag,又传入了资源id,资源id的自身tag作为鉴权,用户传入的tag只作为单纯的过滤条件。 用户既没有传入tag,又没有传入资源id,即便传了其他的过滤条件,也直接报鉴权不通过,这种情况需要用户自己显式地指定tag。 注:该查询接口鉴权不通过的时候会统一返回空,不报错。 UpdateContainerGroup 更新tag不匹配的eci,鉴权不通过。 更新tag匹配的eci,且不更新tag,鉴权通过。 更新tag匹配的eci,且更新tag,且不具备新tag的权限,鉴权不通过。 更新tag匹配的eci,且更新tag,且具备新tag的权限,鉴权通过。 这种情况其实比较复杂 由于用户更新了tag,需要确保用户分别具有更新前后的tag的权限。怎么保证用户具有更新前后的权限? 会想到两种操作: 第一种:直接在现有的权限下两个tag { "Version": "1", "Statement": [ { "Action": "eci:", "Resource": "", "Effect": "Allow", "Condition": { "StringEquals": { "eci:tag/name": "liumi", "eci:tag/env": "test", "eci:tag/name": "liumi2", "eci:tag/env": "pre" } } }, { "Action": [ "ecs:DescribeSecurityGroups" ], "Resource": "", "Effect": "Allow" }, { "Action": [ "vpc:DescribeVSwitches", "vpc:DescribeVpcs", "vpc:DescribeEipAddresses" ], "Resource": "", "Effect": "Allow" } ] } 这种做法其实是错误的,这实际上是把权限变小了,导致的结果是前后都不匹配。后面这种做法才是正确的。 第二种,给子账号再添加一个独立的权限: { "Version": "1", "Statement": [ { "Action": "eci:", "Resource": "", "Effect": "Allow", "Condition": { "StringEquals": { "eci:tag/name": "liumi2", "eci:tag/env": "pre" } } }, { "Action": [ "ecs:DescribeSecurityGroups" ], "Resource": "", "Effect": "Allow" }, { "Action": [ "vpc:DescribeVSwitches", "vpc:DescribeVpcs", "vpc:DescribeEipAddresses" ], "Resource": "", "Effect": "Allow" } ] }
1934890530796658 2020-03-20 17:17:04 0 浏览量 回答数 0

问题

ECI是否可以和ECS共享NAS文件存储?ECI是否可以和ECS共享NAS文件存储?

ECI是否可以和ECS共享NAS文件存储?...
游客bnlxddh3fwntw 2020-03-04 16:38:07 0 浏览量 回答数 1

回答

本文档向您介绍如何为子账号授权,使其能够使用 ECI 的功能。 默认情况下,主账号可以完整操作自己创建的 ECI 资源。但子账号刚创建时没有权限操作主账号的资源,所以在您使用子账号操作 ECI 资源前,需要对子账号进行授权。 操作步骤 登录 阿里云 RAM 控制台。 在RAM控制台的 RAM概览 页面可以查看您是否有子账号。若您无子账号,请先创建子账号,创建方法请参考 创建 RAM 用户。 若您已有子账号,单击 阿里云 RAM 控制台 中的 用户管理 找到待授权的子账号,如下图所示。子账号授权 单击待授权的用户名后面的 授权 打开 编辑个人授权策略 对话框,如下图所示。授权策略 在 编辑个人授权策略 页面中选择 ECI 的授权模板,根据需要选中相应的授权策略后单击 > 将其添加到 已选策略名称 中,如下图所示。 ECI 的读写权限,请选择 AliyuECIFullAccess。 ECI 的只读权限,请选择 AliyunECIReadOnlyAccess。策略选定 单击 确定 完成授权操作。
1934890530796658 2020-03-20 17:13:15 0 浏览量 回答数 0

回答

ACK on ECI 的优势,我们可以选择把 ECI 作为弹性资源池,加到 已有的 Kubernetes 集群中,当应用业务高峰来临时,通过 ECI 动态灵活地扩容,相比ECS 节点扩容更有效率,这种比较适合电商或者在线教育这类有着明显波峰波谷的业务场 景,用户无需管理一个很大的节点资源池,通过 ECI 弹性能力来降低整体计算成本。
1358896759097293 2021-03-24 13:59:46 0 浏览量 回答数 0

回答

CreateContainerGroup:调用CreateContainerGroup创建一个容器组。 UpdateContainerGroup:调用UpdateContainerGroup更新实例。 RestartContainerGroup:调用RestartContainerGroup重启ECI实例。 DeleteContainerGroup:调用DeleteContainerGroup删除一个容器组。 DescribeContainerGroups:调用DescribeContainerGroups批量获取容器组信息。 ExecContainerCommand:调用ExecContainerCommand在容器内部执行命令。 CreateContainerGroupFromTemplate:调用CreateContainerGroupFromTemplate直接通过模板创建ECI实例。 UpdateContainerGroupByTemplate:调用UpdateContainerGroupByTemplate通过模板更新ECI实例。 ExportContainerGroupTemplate:调用ExportContainerGroupTemplate导出用户创建ECI的模板。
星尘linger 2020-03-23 23:33:31 0 浏览量 回答数 0

回答

准备工作 根据需要购买预留实例券; 查看和管理预留实例券;ri-buy 预留实例券根据规则匹配按量 ECI 实例,具体匹配描述请参考 预留实例券匹配规则。 根据 指定实例规格 创建 ECI 实例 预留实例券仅支持根据 指定实例规格 创建 ECI 实例。 需要在 CreateContainerGroup 请求参数中增加参数 InstanceType 请求参数中增加: 名称 类型 是否必须 描述 InstanceType String 是 实例规格 实例信息 在控制台查看实例信息,可以看到对应实例 ID 为 eci-2ze2f3qp626x29u2183b 的实例。ri-describe 查看计费信息 查看费用中心,实例 eci-2ze2f3qp626x29u2183b 未产生出账费用。 ri-fee 查看预留实例券抵扣信息 选择对应的预留实例券 进入到预留实例券的控制台,选择对应实例的 查看账单。ri-bill 查看预留实例券账单 查看对应预留实例券的 抵扣明细。记录在每个小时出账周期,该预留实例券抵扣的 ECS/ECI 实例信息。 预留实例券有 计算力 的概念,1计算力可以简单理解为 1vCPU,抵扣明细中呈现的 抵扣时长(小时) 是计算力*小时。 ri-detailbill
1934890530796658 2020-03-20 16:59:34 0 浏览量 回答数 0

回答

容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。 首先,当容器崩溃时,容器中的文件将会丢失——因为容器会以干净的状态重建。 其次,当在一个 ECI 中同时运行多个容器时,常常需要在这些容器之间共享文件。 ECI 支持通过数据卷的方式来解决这两个问题。 目前 ECI 支持4种类型的数据卷: ConfigFile EmptyDir NFS FlexVolume 使用数据卷时,需要先声明具体的数据卷,然后挂载到 ECI 中。 数据卷的声明 ConfigFile ConfigFile 提供了向 ECI 注入配置数据的方法 通过控制台声明 ConfigFile(只需以明文形式填入配置数据,控制台会自动进行 Base64 编码): configfile 通过 OpenAPI 声明 ConfigFile(注意,需要先将配置数据进行 Base64 编码): Volume.1.Name=configfiledemo Volume.1.Type=ConfigFileVolume(固定值) Volume.1.ConfigFileVolume.ConfigFileToPath.1.Content=bGl1bWk= Volume.1.ConfigFileVolume.ConfigFileToPath.1.Path=configpath EmptyDir EmptyDir 可以被同一个 ECI 中的所有容器访问,因此您可以使用 EmptyDir 在同一个 ECI 的不同容器之间共享数据。当 ECI 删除后,EmptyDir 上保存的数据也会一并删除。 通过控制台声明 EmptyDir : emptydir 通过 OpenAPI 声明 EmptyDir : Volume.1.Name=emptydirdemo Volume.1.Type=EmptyDirVolume(固定值) NFS NFS 数据卷能将 NFS (网络文件系统) 挂载到您的 ECI 中。 不像 EmptyDir 那样会在删除 ECI 的同时也会被删除,NFS 数据卷的内容在删除 ECI 时会被保存,卷只是被卸载掉了。 这意味着 NFS 数据卷可以被预先填充数据,并且这些数据可以在 ECI 之间“传递” 需要先准备好 NFS 推荐使用阿里云 NAS,可以前往NAS 控制台进行创建,并完成挂载点添加。ECI 和 NAS 需要在同一个 VPC 网络中nas 使用其他 NFS 服务,需要 ECI 具备外网访问能力 通过控制台声明 NFS : nfs 通过 OpenAPI 声明 NFS : Volume.1.Name=nfsdemo Volume.1.Type=NFSVolume(固定值) Volume.1.NFSVolume.Path=/share Volume.1.NFSVolume.Server=3f9cd4a596-naw76.cn-shanghai.nas.aliyuncs.com Volume.1.NFSVolume.ReadOnly=False FlexVolume FlexVolume 是自 Kubernetes 1.2 版本以来一直存在的 out-of-tree 插件接口,通过 FlexVolume 可以自定义扩展存储驱动的方式。 目前 ECI 通过 alicloud/disk 存储驱动支持了云盘的使用,后续将会支持更多的驱动类型。 通过 FlexVolume 使用云盘 ECI 支持新建和使用已有云盘两种声明方式来使用云盘,并且只能声明使用一个云盘 新建:根据设置的云盘大小,跟随 ECI 实例的创建和销毁,动态的创建和销毁云盘,适用于运行期间对磁盘有较高 IO 要求的场景 使用已有云盘:选择已有的云盘,并且写入云盘的数据可以在 ECI 销毁时依然保留,适用于 MySQL、Redis 等场景 通过控制台选择已有云盘: staticflex 通过 OpenAPI 使用已有云盘: Volume.1.Name=flexvolumedemo Volume.1.Type=FlexVolume(固定值) Volume.1.FlexVolume.Driver=alicloud/disk(云盘的驱动) Volume.1.FlexVolume.FsType=ext4(支持ext3、ext4、xfs) Volume.1.FlexVolume.Options={"volumeId":"d-bp1j17ifxfasvts3tf40"} (d-bp1j17ifxfasvts3tf40为已经存在的云盘实例id) 通过控制台新建云盘: dynamicflex 通过 OpenAPI 新建云盘: Volume.1.Name=flexvolumedemo Volume.1.Type=FlexVolume(固定值) Volume.1.FlexVolume.Driver=alicloud/disk(云盘的驱动) Volume.1.FlexVolume.FsType=ext4(支持ext3、ext4、xfs) Volume.1.FlexVolume.Options={"volumeSize":"20"} (volumeSize指定云盘大小,取值范围20-500,单位为GiB) 数据卷的挂载 创建了数据卷后,需要挂载到 ECI 实例中进行使用。 所有的数据卷挂载到容器目录后,都会覆盖原有的内容,尤其是 EmptyDir 会直接清空原内容,所以 VolumeMount 参数的挂载目录一定要慎重。 通过控制台挂载数据卷: mount 通过 OpenAPI 挂载数据卷: Container.1.VolumeMount.1.Name=volumename(声明的Volume名称) Container.1.VolumeMount.1.MountPath=/volume(挂载的路径) Container.1.VolumeMount.1.ReadOnly=False
1934890530796658 2020-03-20 15:41:23 0 浏览量 回答数 0

回答

ECI本身的管理不需要构建k8s,如果您需要类似kubectl这样的命令行方式来管理ECI实例,可以使用阿里云命令行cli中的相关功能来对ECI进行远程管理。
小攻云攻略 2019-12-18 17:29:44 0 浏览量 回答数 0

回答

简介 本文介绍如何将已有的Kubernetes应用迁移到基于ECI的Serverless Kubernetes或者虚拟节点扩展。希望能帮助您了解在迁移到ECI中需要进行的适配和改造,并帮助您解决部分在迁移应用中可能会遇到的问题。 假设 本文假设您对Kubernetes的基本概念已经有所了解,或者已经在私有云或者公有云中使用过基于Kubernetes的容器编排服务。 迁移前的准备工作 您可以通过Serverless Kubernetes简介 和 虚拟节点扩展 了解ECI与Kubernetes对接的基本原理。 您无需提前创建ECI实例,只需要提前创建好Serverless Kubernetes集群,或者在已有的Kubernetes托管版中部署好Virtual Node Addon。 如何管理Kubernetes及ECI运行情况 您可以通过容器服务控制台来操作Serverless Kubernetes集群和Kubernetes托管版集群。 您可以通过阿里云提供的CloudShell来管理Kubernetes集群。 您可以通过kubectl客户端在本地计算机来访问远端的Kubernetes集群。详情请参考这里。 如何查看已经创建的ECI实例 进入弹性容器实例控制台,在左上角选择相应的可用区,您可以看到已经创建的ECI实例。如果您看到的是空白页面,请申请弹性容器实例页面的访问权限。 进入容器服务控制台,从左侧导航栏中点击‘应用’>‘容器组’,选择对应的集群和namespace,可以查看到已有的pod,被调度到virtual-kubelet节点上的即是ECI实例,点击实例的‘详情’可以查看详细信息。 eci-pod 应用迁移的限制 virtual-kubelet是作为一个虚拟节点对接Kubernetes,因此ECI实例并不会跑在一个集中式的“真实”节点上,而是会被打散分布在整个阿里云的资源池中。 考虑到公有云的安全性和虚拟节点本身带来的限制,ECI目前还不支持Host相关功能以及DaemonSet。具体如下: 不支持的功能 具体内容 备选方案 HostPath Mount本地宿主机文件到容器中 使用emptyDir,或者NAS存储 HostNetwork 将宿主机端口映射到容器中 使用type=LoadBalancer的负载均衡 DaemonSet 在容器所在宿主机上部署static pod 通过sidecar形式在pod中部署多个镜像 Privileged权限 容器拥有privileged权限 使用secretContext为pod添加Capability type=NodePort的Service 通过宿主机端口映射到容器端口 使用type=LoadBalancer的负载均衡 应用迁移的说明 Kubernetes集群和Serverless Kubernetes共享容器镜像仓库,因此可以将容器镜像先上传到容器镜像仓库中。为了加速镜像的拉取,建议使用专有网络的镜像地址(registry-vpc.xxx)。 Serverless Kubernetes和虚拟节点扩展 支持 Deployment, ReplicaSet,Job,Cronjob,StatefulSet等常见controller,理论上可以直接运行。 Serverless Kubernetes和虚拟节点扩展 利用 PrivateZone 实现 服务发现,因此建议在创建集群时默认勾选 PrivateZone支持。 Serverless Kubernetes和虚拟节点扩展 支持 type=LoadBalancer 的Service。您可以将Service修改为type=LoadBalancer,详情请参考这里。 apiVersion: v1 kind: Service metadata: labels: app: nginx name: nginx namespace: default spec: externalTrafficPolicy: Cluster ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx sessionAffinity: None type: LoadBalancer
1934890530796658 2020-03-20 17:23:03 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT