容器生态的一些研究与对比
对比
功能 | 阿里云云产品 | aws云产品 | 说明 |
---|---|---|---|
容器服务 | ECI(Elastic Container Instance) | ECS(Elastic Container Service) | 提供单纯的容器服务, 不涉及容器的编排等 |
K8S集群管控服务 | Dedicated ACK | EKS | 可以基于各自的虚拟机实例, 作为Node, 在Node之上生产Pod |
Serverless | ASK | Fargate | 在客户侧看到的是一个VirtualKubelet, kube-system空间下的管控组件也都是不可见的 |
函数计算服务 | Lambda | Function Compute | |
混合云扩容方案(虚拟机) | ACK Anywhere | EKS Anywhere | 本质都是通过可以扩展使用云上虚拟机作为Node |
混合云扩容方案(容器) | Virtual Kubelet | Virtual Kubelet | 本质都是通过VirtualKubelet集成在现有k8s集群中 |
思考
常见的几种方式
- 多租户全托管方式(Serverless)
- 例如: 搭建了一个统一的redis/HBase集群, 为不同租户设定不同的namespace, quota等
- 优势: 用户侧接入简单方便, 但定制化的需求满足度与响应度可能不会很好.
- 缺点: 系统侧运维复杂能力要求较高, 横向扩展能力有可能成为瓶颈.
- 计费方式: 一般都是按量计费, 例如存储的使用量, API的调用量等
- 典型例子:
- 大数据场景:
- 容器场景: ASK, 控制平面的组件是多租户共享的.
- 多租户半托管方式(Hosted)
- 例如: 在阿里云上购买RDS, 选好规格之后, RDS就创建好了, 直接拿到url就能jdbc连接上去了.
- 优势: 搭建成本低, 云产品会提供各种工具方便运维. 例如SQL审计工具, 白屏化的慢SQL查询与优化工具等.
- 缺点: 仍然需要用户感知实例的存在, 需要部分介入运维(例如实例宕机的数据备份恢复等).
- 典型例子:
- 数据库场景: rds
- 大数据场景: Lindorm 普通型
- 容器场景: ack
- 单用户完全自建方式(SelfManaged)
- 例如: 自己基于2个ECS, 每个上边都安装了mysql, 搭建了一个主备的mysql集群.
- 优势: 用户侧可管控度极高
- 缺点: 自建初期与后续成本高, 运维成本极高
- 典型例子:
- 基于ZK的jar包构建zk集群
- 基于CDH创建Hadoop集群
- 等
个人理解, 所有能自建的服务都可以以 多租户半托管
, 多租户全托管
方式进行. 但前提是要做好:
- ACL鉴权等安全准入机制
- 多租户的隔离: 数据, 服务QoS, 等
- 统一运维与版本升级方案
- 周边系统的支撑:
- 管控
- 计量计费
例如:
- 自建ZK集群, 是否可以改造后支持多租户的接入, 每个用户拿到属于自己的zk地址, 通过zkclient连接上去?
自建K8S集群与云上托管K8S集群(例如ACK)有啥区别?
而 自建的k8s集群 与 云上托管的k8s集群, 正如同 多租户半托管 与 单用户完全自建