生态
KEDA
k8s 默认只支持CPU和内存扩容(一般用CPU扩容),如果想要用自定义指标扩容,比如ActiveMQ, SQS,AWS CloudWatch, RabbitMQ等,那么就可以用 KEDA这个插件
K8S Serverless Function
Knative
只能部署Docker,不能部署自己的代码。只是服务启动方式,由 k8s Deployment, Service 变成了Knative Service 当没有请求的时候,容器可以是0,从而节省资源,有http请求的时候,再启动容器。Knative是基于事件驱动的,支持多种事件源。
OpenFaaS
支持在K8s里直接部署代码(像AWS Lambda那样部署python),也支持部署Docker。项目比较成熟,社区比较活跃。但是功能相对来说比较少。 OpenFaaS上手比较简单,容易部署 提供了内置UI访问,可以查看管理和调用函数
Fission
项目相对来说没有那么活跃,可以直接在K8S里部署代码,也可以部署Docker。 不提供官方UI,主要通过 fission cli管理,也有第三方UI
Apache OpenWhisk
可以直接部署代码,也可以部署Docker。适合多云环境,支持复杂的事件驱动,虽然部署比较麻烦,但功能比较多,在需要比较复杂的FaaS平台下表现比较好 提供UI功能。 IBM Cloud的Function就是基于OpenWhisk实现的托管平台。
对比
简单易用性
高
高
中
事件驱动支持
基本支持
强
强
编程语言支持
多种
多种
多种
Kubernetes 集成
强
强
强
定制化容器支持
强
中
强
部署和运维复杂度
中等
中等
高
状态管理
不支持
不支持
支持
开发体验
简单直接
快速部署
完整功能
社区和文档
活跃,丰富
活跃,较丰富
活跃,丰富
TriggerMesh
主要是解决跨平台的trigger。 比如kafka作为事件源,监听队列里事件,然后将 AWS Lambda作为第一个事件目标,处理kafka消息,GCP Storage作为第二个事件目标,存储处理结果,slack作为第三个目标,发送处理完通知。
cilium
基于ebpf用于提供网络和安全功能的高性能网络层
Rook
存储解决方案的云原生存储编排器,支持各种存储后端,如 Ceph 和 NFS
Kubeflow
k8s下的机器学习平台
Tekton
Tekton主要负责构建docker镜像,在pipeline里进行单元测试、集成测试等,确保代码质量的可靠性。Tekton主要是在k8s环境使用。但tekton的作用可以理解为跟github action差不多
Flux
一个GitOps工具,主要是监控仓库变化,自动部署到后端
ArgoCD
和Flux类似,监控仓库变化,自动部署到后端
Kustomize
可以理解为k8s部署的 deployment.yaml, service.yaml 等文件的manifest管理工具,kustomization.yaml 里可以声明性的管理kubernetes资源配置。通过 base 和overlay的概念,可以定义一个基础配置,然后再为开发、测试和生产环境创建不同的overlay。和Helm不同,Kustomize 不是作为打包用的。 使用kustomize,比较适合比较复杂的项目,有多个团队共同维护,如果手动直接管理deployment.yaml,会出现部署一致性的问题,使用 kustomize 能保持其一致性。以及,如果平时删除了 deployment.yaml,如果直接kubectl apply -f ./folder/的方式,不会删除部署文件,但使用kustomize 就会删除那个部署了。
Helm
k8s 部署文件的打包,可以将 deployment.yaml,service.yaml 等模版化,这样做好helm Chart,给其他人部署的时候可以自定义一些参数 helm 使用的是 go模板引擎来实现模板化, values.yaml文件定义了默认参数,可以在命令行里指定参数来覆盖默认值 支持版本控制和回滚,依赖管理(chart中定义其他chart的依赖)
Traefik
可以作为 ingress gateway,也可以作为API网关。支持反向代理,负载均衡,自动服务发现(支持 k8s, docker, consul, etcd等)。 支持动态配置,无需重启和手动敢于,实时感知和响应后端服务的变化。 支持身份认证,速率限制,重定向和压缩
kong
kong 和 traefik 可以视为竞品关系。Traefik 更注重动态服务发现和配置,适合快速变化的微服务环境。Kong强调的是API管理和扩展功能,适合需要丰富插件以及复杂的API管理环境。 kong的插件比较多,traefik中间件功能比较强大,但插件比较少。 所以看起来如果在k8s里跑,比较适合 traefik,如果是EC2上网关,kong更适合。
Istio
service mesh,一般在前端应用可以用,后端比较复杂,除非特别熟悉这个,否则出问题不好查。
KubeEdge
华为云开源的,目前看社区很活跃(2024年6月份),在B站每周都有社区weekly meeting。 kubeEdge主要是将边缘计算引入到k8s里。
KubeSphere
是有青云科技开源的,支持 k8s 多租户管理,以及基于项目的隔离,配额管理,devops CICD Pipeline,日志管理,应用商店等。将一些企业级特性带到k8s里。
最后更新于