Serverlss 容器 CCI
什么是云容器实例
云容器实例(Cloud Container Instance,CCI)服务提供Serverless Container(无服务器容器)引擎,让您无需创建和管理服务器集群即可直接运行容器。
Serverless是一种架构理念,是指不用创建和管理服务器、不用担心服务器的运行状态(服务器是否在工作等),只需动态申请应用需要的资源,把服务器留给专门的维护人员管理和维护,进而专注于应用开发,提升应用开发效率、节约企业IT成本。传统上使用Kubernetes运行容器,首先需要创建运行容器的Kubernetes服务器集群,然后再创建容器负载。
云容器实例的Serverless Container就是从使用角度,无需创建、管理Kubernetes集群,也就是从使用的角度看不见服务器(Serverless),直接通过控制台、kubectl、Kubernetes API创建和使用容器负载,且只需为容器所使用的资源付费。
创建CCI应用
默认第一次登录CCI界面时是没有namespace的,需要先申请namespace,再在namespace下创建应用,目前支持的应用有 deployment、job、cronjob(没有statefulSet)。
创建应用时有 Create from YAML、Create from Image 两种方式。这里以简单的 From image 方式创建,注意这里的规格是以上面选的 pod specifications来计费的,而不是基于下面container里的CPU、内存设置来计费。
pod 规格可以自定义,自定义要求如下:
Note
- The total number of CPU cores in a pod must be a multiple of 0.25.
- The total amount memory in GB in a pod must be a multiple of 1.
- The value of (total memory in GB)/(total CPU cores) must be in the range of 2 to 8.
如果涉及服务对外网暴漏,需要通过ELB的方式实现。
kubectl管理
CCI 支持控制台/kubectl/k8s API三种方式进行管理,对于运维人员来讲,经常使用的排错渠道是通过kubectl命令进行排错。CCI 不像 CCE 在控制台放置了kubectl管理的相关按钮和操作说明。CCI的管理方式如下:
- 安装并设置kubectl
- 配置IAM认证信息并持久化到本地
kubectl的安装比较简单,和所有k8s相关版本的管理是一样的,https://kubernetes.io/docs/tasks/tools/ 下载对应的版本,放在/usr/local/bin等可执行目录,给予可执行权限。
在正常 k8s cluster下,安装完kubectl,就需要配置kubeconfig文件了,在CCI下原理类似,只不过要使用 cci-iam-authenticator 进行配置。和kubectl一样,下载完该文件,给予可执行权限并放置到一个path路径下。
初始化cci-iam-authenticator提供了AK/SK和用户名/密码两种方式,请选择其中一种执行:
1 2 3 4 5 6 7 8 |
|
计费
实例资源包含CPU、内存、GPU等,根据您申请的实际实例资源规格,以及每个实例实际运行时长按秒计费。计费时长从开始下载容器镜像 (docker pull) 到CCI实例停止使用进行计算。
由于各个Region价格是不同的,具体价格需要参看价格计算器上的价格。
友商竞争产品
当前主流的云厂商都有serverlss容器化产品,而且serverless化的理念在越来越多的企业也更流行。
- AWS fargate:支持使用eksctl, kubectl, and awscli工具管理。
- Azure Container Apps:该产品不支持直接访问所有原生 Kubernetes API ,但其支持 KEDA 。 另外还有一个serverless容器服务 Azure Container Instances 也比较有意思,提供了完全隔离的容器服务,也就是使用该服务部署的应用之间的网络是隔离的,即使是同一帐户下的容器。
- GCP Cloud run:Cloud Run 支持直接源码部署 Automatically build container images from your source,但其底层语法和k8s原生语法是略有不同的,所以和k8s应用之间无法直接迁移,需要语法转换。
- Alibaba cloud elastic-container-instance:这个和华为云的产品互相是对标的。
- Tencent Kubernetes Engine for Serverless
注:源码直接部署有一个项目buildpacks,暂不确认GCP run的源码部署是不是用的这个技术。因为从名字上看是一样的,另外redhat redhshift也有一个S2I也做的类似的功能,后续可以做一个对比。
CCE弹性到CCI
CCE容器实例支持弹性伸缩到CCI,但需要先安装 Virtual Kubelet插件,其对应的限制是:仅支持VPC网络模式的CCE Standard集群和CCE Turbo集群(virtual-kubelet 1.2.5版本及以上支持),暂不支持ARM集群。
在部署 CCE 应用时只需要打上相关标签,就可以自动弹到CCI上:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
其中,value值支持以下选项:
- auto:根据用户集群内调度器实际打分结果自动决定是否弹性至CCI,其中在TaintToleration算法上会优先选择调度到CCE节点。
- localPrefer:集群资源不足时,将Pod部署到CCI。
- enforce:强制调度至CCI。
- off:不调度至CCI。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))