BoF: Build Container Instance Service With Kata Container

Container Instance Service eliminates the burden of VM and presents flexibility of container.This presentation shows how Tencent build Container Instance Service based on existing mature kubernetes and Tencent vstation. The v2 roadmap with kata container is also discussed.
展开查看详情

1.Build Container Instance Service 腾讯云基础 PaaS 团队 洪志国

2.第一节 第一节 多种容器产品形态对比

3.TKE@ 黑石 优点: 资源开销小 没有租户间共享 缺点: 节点管理 , 扩缩容都不灵活 Host OS Container Container Container 租户独占物理机

4.TKE@CVM 优点: 节点管理和扩缩容比较方便 缺点: VM 带来额外资源开销 VM 给客户带来额外管理负担 租户 A Host OS Container Container Container Guest OS Guest OS 租户 B

5.CIS 租户 A Host OS Container Light OS Container Light OS Container Light OS 租户 A 租户 B

6.CIS 租户 A Host OS Container Light OS Container Light OS Container Light OS 租户 A 租户 B

7.第二节 第二节 轻量级虚拟化方案对比

8.CIS 轻量级虚拟化方案调研 hyper.sh Clear Containers kata Containers 他们性能如何? 如何选择?

9.特性对比 差异点 CC Hyper 实现方式 1 、包含 cc-runtime 、 cc-shim 、 cc-proxy 、 cc-agent 、 miniOS ( kernel 和 rootfs ) 2 、只实现 runtime ,把原来 runc 拆分成 cc-runtime 和 cc-agent ,再加上 VM 带来的额外通信机制 1 、包含 hyperctl 、 hyperd 、 hyperkernel 、 hyperstart 2 、和 docker 类似,实现一个前端命令 hyperctl ,和一个后台 daemon hyperd Hypervisor 1 、只支持 qemu ,并且高度定制 qemu 2 、只支持 qemu 2.7.0 ,后续会迁移至 2.9.0 1 、支持 qemu 、 XEN 、 VirtualBox 等 2 、支持 qemu 2.0 以后的任何版本 硬件平台 1 、支持 Intel x86_64 1 、支持 Intel 、 ARM64 、 PPC 等 其他依赖 1 、 go 1.8.0 以上 2 、 docker 1.2.1 以上、 gcc-6.2.0 、 json-glib-1.2.2 、 glib-2.46.2 、 gmp-6.1.0 、 mpfr-3.1.4 1 、 go 1.7.0 以上

10.基本参数对比 Docker CC Hyper 容器启动时间 632ms 1249ms 3256ms VM 镜像大小 0M 62M 11M 容器内存开销 15M 136M 80M ping host 平均时延 0.05ms 0.14ms 0.2ms CPU : 8 核 Intel(R) Xeon(R) CPU X3440 @ 2.53GHz 系统: CentOS Linux release 7.2 (Final) 内核: 3.10.0-693_12.tl2 Docker 版本: 1.12.6 CC 版本: 3.0.14 Hyper 版本: 1.0

11.网络架构 虚线为控制流,实线为网络数据流 CC为每个容器创建一个network namespace VM不支持veth pair,创建cc-bridge连接tap和veth pair

12.网络性能对比 测试机型:浪潮 SA5212M5(6133*2/32G*12/SSD-480G*2 RAID/NVMe-4T*12/25GE*2)

13.磁盘 IO 性能对比 测试机型:浪潮 SA5212M5(6133*2/32G*12/SSD-480G*2 RAID/NVMe-4T*12/25GE*2)

14.第三节 第三节 CIS v1 实现架构

15.CIS v1 架构概览

16.CIS v1 架构概览

17.CIS v1 架构概览和原则 ControlCluter 本身是一个 TKE 托管集群 每个节点是特殊类型的 CVM 节点的生命周期由 vstation 管理 每个节点比 CIS 实例规格稍大 用户购买一个 CIS ,后台在 ControlCluster 中创建一个 Pod ,通过 NodeSelector 调度到相应规格的 CVM 通过 CVM 的自动伸缩组,控制节点的增加和删除 实现原则: 尽量复用腾讯云和 k8s 已有功能,提升 CIS 上线速度和稳定性。

18.ASG 自动打标签 给 ASG 关联一组标签, ASG 创建出来的节点,会自动打上 k8s 标签

19.CIS 实例请求 -> CVM ASG (model: 1C2G) Kubernetes Master Kubernetes Master Kubernetes Master CIS C ontrol C luster ASG (model: 2C4G) deployment with NodeSelector model:1C2G container container Instance ENI CVM container Instance ENI CVM container Instance ENI CVM container Instance ENI CVM Cluster Autoscaler ENI controller cloud-provider 请求 Container Instance ( 规格 1C2G) CIS-GW 根据标签选择对应的 ASG

20.CVM -> CIS 实例 ASG (model: 1C1G) Kubernetes Master Kubernetes Master Kubernetes Master CIS C ontrol C luster ASG (model: 1C2G) deployment with NodeSelector model:1C2G container container Instance ENI CVM container Instance ENI CVM container Instance ENI CVM container Instance ENI CVM Cluster Autoscaler ENI controller cloud-provider 请求 Container Instance ( 规格 1C2G) CIS-GW ENIcontroller 创建弹性网卡 ENI ( 根据 Pod annotation) CVM 上配置和启动 kubelet 等 kubelet cni-eni 节点加入集群 kubelet 拉起 POD 调度 POD 到节点

21.CIS 网络架构 每个 POD 绑定一个弹性网卡,不绑定 veth 设备,不连 bridge 同 VPC 的 POD 可以互通,不同 VPC 的 POD 不能通信 POD 跟节点之间不能通信 nfs 等 volume 插件需要修改,直接在容器中挂载

22.第四节 CIS v2 第四节 如何管理 kata container

23.CIS v2 - 如何管理 kata container 方案一 在底层把 kata container 当作一种新的 CVM 机型,完全交给 vstation 来管理。 Pro: - 复用云主机系统的母机管理和虚拟机管理机制 Con: - 需要自己实现相关 Pod 语义,以便支持 virtual-kubelet

24.CIS v2 - 如何管理 kata container 方案二 由 kubernets 直接管理母机和 kata container Pro: - 完美支持 Pod 语义,方便接入 virtual-kubelet Con: - 需要介入复杂的母机管理流程

25.Thanks zhiguohong@tencent.com