Knative是基于Kubernetes之上提供的一款开源Serverless应用框架,帮助您部署和管理现代化的Serverless工作负载,打造企业级Serverless平台。ACK Serverless集成了Knative,您只需要拥有一个ACK Serverless集群并开通Knative功能,就可以基于Knative API使用云的能力。并且无需为Knative Controller付出任何成本。
ACK Serverless Knative优势
社区Knative | ACK Serverless Knative |
默认使用Istio作为Gateway,安装Istio的Controller需要额外支出部分IaaS成本。 | 无需为Knative Controller付出任何成本。 |
Knative自身的Controller部署,需要额外支出部分IaaS成本。 | |
在ACK Serverless集群中创建一个Pod是有明显的冷启动时间,Knative的缩容到零机制可以很好的节省成本,但是第一批请求过来时有可能导致短暂的超时失败。 | ACK Serverless Knative在没有流量的时候不把应用实例数缩容到零个,而是保留实例。通过低成本的保留实例来平衡成本和冷启动时长。保留实例的详细介绍请参见保留实例。 |
Knative资源托管
ACK Serverless作为无服务器的Kubernetes集群,无需单独购买节点即可直接部署容器应用,是一种理想的Kubernetes使用方式。以下为Knative资源托管优势:
ACK Serverless上提供了Knative的托管服务,您可以通过Knative管理应用。
Knative可以在需要的时候自动从ACK Serverless中申请IaaS资源,此处laaS资源在ACK Serverless中指Pod。
Knative Serving Controller和阿里云容器服务进行了融合。您只需要拥有一个ACK Serverless集群并开通Knative功能就可以基于Knative API使用云的能力,并且无需为Knative Controller付出任何成本。
Knative Gateway
社区Knative默认支持Istio、Gloo、Contour、Kourier和Ambassador等多种Gateway实现方案。在这些实现方案中Istio使用频率最高。因为Istio除了可以充当Gateway的角色还能作为ServiceMesh服务使用。Serverless服务需要有Gateway实例常驻运行,而为了保证高可用至少要有两个实例互为备份。其次这些Gateway的Controller也需要常驻运行,这些常驻实例的IaaS费用和运维都是业务需要支付的成本。
为了提升Serverless体验,通过阿里云ALB实现了Knative Gateway。Knative Gateway具备所有需要的功能并且属于云产品级别的支撑。不需要常驻资源,不仅节省了您的IaaS成本还省去了很多运维负担。
保留实例
社区Knative默认在没有流量时可以把应用实例缩容到零,但是缩容到零之后,从零到一的冷启动问题很难解决。冷启动除了要解决IaaS资源的分配、Kubernetes的调度、拉镜像等问题以外,还涉及到应用的启动时长。而应用镜像的大小以及应用启动时长与具体的开发者或者业务有很强的关联。
ACK Serverless的Knative和社区Knative不同点在于默认在没有流量的时候不把应用实例数缩容到零个,而是保留一个实例。以下为保留实例的策略:
在业务波谷时使用突发性能实例替换标准的计算型实例,当第一个请求来临时再无缝切换到标准的计算型实例,从而降低流量低谷的成本。
流量低谷时获得的CPU积分可以在业务高峰到来时使用,节约了使用成本。
保留实例的详细介绍请参见保留实例。
Knative安装部署
Serverless Kubernetes (ACK Serverless)集群支持部署Knative。
如果您的ACK Serverless集群版本≥1.16,可以直接通过控制台部署Knative,详细介绍请参见Knative组件管理。
如果您的ACK Serverless集群版本<1.16,请先升级ACK Serverless集群。
计费说明
Knative本身不收取管理费用,但在使用过程中所创建的ECI容器实例、负载均衡实例、NAT网关等会按照相应资源的价格计费。更多信息,请参见容器实例计费概述。
Knative交流群
如果您在使用Knative的过程中有任何疑问或建议,欢迎您搜索钉群号23302777加入钉群。