mesos方案对于微服务的抽象主要定义了application,configmap,deployment等资源抽象。业务可以使用这些资源来达到描述服务的效果,资源文件的详细描述如下:
k8s方案使用了原生的k8s资源抽象,包括:ReplicaSet, Deployments, StatefulSets等。业务使用上述资源来实现抽象服务的效果,资源文件的详情请参考k8s官方文档。
- k8s方案:POD
- mesos方案:Taskgroup
k8s方案,mesos方案均支持
- Pod是所有业务类型的基础,它是一个或多个容器的组合,例如:业务容器,sidecar容器
- 这些容器共享存储、网络和命名空间,以及如何运行的规范
- 在Pod中,所有容器都被统一编排和调度
- k8s方案:ReplicaSet/Deployment
- mesos方案:Application/Deployment
k8s方案,mesos方案均支持
- 支持设定编排策略(Restart、Kill等);
- 支持设定容器启动参数;
- 支持设定镜像版本及加载方式;
- 支持设定端口映射;
- 支持设定环境变量;
- 支持设定label、备注;
- 支持设定卷、configmap、secret的关联关系;
- 支持设定网络;
- 支持设定资源配额设定;
- 支持设定健康检查机制;
差异点
- K8S支持设定生命周期、就绪检查;
- K8S支持更多的存储driver,并且从1.9版本开始支持CSI;
- 调度策略配置不同:
- K8S:基于label的调度策略,通过selector进行筛选
- mesos:基于变量运算符的调度策略,支持获取CC的属性作为调度依据
- 自定义调度支持方式不同:
- K8S:支持自定义controller
- mesos:支持自定义调度插件
- mesos方案支持POD固定IP调度
- mesos方案支持bridge模式下端口随机
- k8s方案:StatefulSets
- mesos方案:Application
k8s方案,mesos方案均支持
- POD拥有独立唯一不变的ID;
- POD拥有独立唯一的域名;
- 挂载独立的数据卷;
- k8s方案:Job/CronJob
- mesos方案:Application
k8s方案,mesos方案均支持
- 短任务单次执行,例如数据库初始化任务;
差异点
- mesos方案无专门workload,通过设置Application的参数实现
- K8S支持部署定时任务
- k8s方案:DaemonSet
- mesos方案:Application
k8s方案,mesos方案均支持
- 按主机1:1动态部署容器;
- 能动态跟随物理机资源缩扩容;
差异点
- mesos方案无专门Workload,需要通过设置Application的调度算法实现相同功能;
- k8s方案:Deployment
- mesos方案:Deployment
k8s方案,mesos方案均支持
- recreate操作方式;
差异点
- rollingUpdate:
- K8S方案支持设置滚动方式,最大不可用数和最大更新数
- mesos方案支持设置滚动方式,周期,频率,和手动模式
- k8s方案:Service
- mesos方案:Service
k8s方案,mesos方案均支持
- 通过自定义域名描述外部服务;
- 对RS或者Application的服务做抽象;
- 支持容器故障或者扩缩容时Backends的动态刷新;
- 支持简单的负载均衡策略;
- 支持http、tcp、udp等主流通讯协议;
差异点
- mesos方案支持通过location对不同域名进行分流
- mesos方案支持对两个Application之间设置流量权重
- K8S支持更多对外暴露服务折射方式,除ClusterIP,LB外,还是支持NodePort
- k8s方案:Ingress
- mesos方案:Ingress
k8s方案,mesos方案均支持
- 实现集群外部对集群内服务的访问;
- 支持http、tcp;
- 支持轮询的负载均衡方式;
差异点
- mesos方案支持流量权重设置;
- mesos方案支持Balance Source;
- k8s方案:Configmap
- mesos方案:Configmap
k8s方案,mesos方案均支持
- Configmap内容落地为文件或者环境变量;
差异点
- K8S方案支持在POD command中以变量方式引用;
- mesos方案支持远端配置,包括文本和二进制配置文件
- k8s方案:Secrets
- mesos方案:Secrets
k8s方案,mesos方案均支持
- 对敏感信息加密;
- k8s方案:Volumes
- mesos方案:Volumes
k8s方案,mesos方案均支持
- 支持Empty DIR;
- 支持Host Path;
- 支持挂载Ceph、nfs等远端目录;
- 支持subPath;
mesos方案提供了bcs-client客户端,支持对于application,configmap,deployment等资源文件的创建,更新,删除等操作,具体的操作手册请参考: mesos资源操作手册
k8s方案支持使用默认的kubectl客户端,实现对资源文件的操作,具体的操作请参考k8s官方文档。