How to Build Container Technology at Millions Scale in Alibaba

Container technology Pouch has successfully supported 2017 Singles Day as the key technology that processes all online transactions smoothly on millions of containers. Hongliang will reveal the killing features of Pouch compared to other container solutions in the industry. Rich container, hypervisor-based container, P2P image distribution, better isolation abilities, kernel compatibilities are the fanciest points the industry would be interested in. In addition, Hongliang will introduce how to natively support Kubernetes in Pouch with CRI implementation. Now Pouch is an open source project. Hongliang will share experience on how to build Pouch in open source.
展开查看详情

1.如何打造百万级规模的容器技术 孙宏亮 / 阿里巴巴集团

2.Agenda • 阿里巴巴集团容器现状 • PouchContainer 技术特性 – 强隔离性 – 富容器技术 – P2P 镜像分发 – 多OCI容器运行时支持 – 原生支持Kubernetes • PouchContainer 开源发展

3.容器现状 规模: 覆盖业务: • 覆盖集团大部分BU • 蚂蚁&交易&中间件 • 2017年双11百万级容器 • B2B/CBU/ICBU/1688/村淘 • 在线业务100%容器化 • 合一集团(优酷) • 菜鸟&高德&UC(接入中) • 集团测试环境 覆盖场景: • 广告(阿里妈妈) • 运行模式 • 阿里云专有云输出 • 编程语言 • …… • 技术栈

4.容器现状 • 本意育儿袋,隐喻贴身呵护应用 • 始于2011年 • 基于LXC • 阿里内部容器技术产品,并于当年上线 • 2015年初开始吸收Docker镜像功能 • 容器结合阿里内核,大幅提高隔离性 • 大规模部署于阿里集团内部 • opensource:https://github.com/alibaba/pouch

5.阿里巴巴容器演进之路 容器的要素--阿里内部运维和应用视角 手工Hack实现容器要素 • 有独立IP 虚拟网卡,网桥 • 能够ssh登陆 sshd • 独立的的文件系统 Chroot (pivot_root) • 资源隔离—使用量和可见性 CGroup,Namespace • 引入LXC(Linux Container) 阿里容器技术 • 内核可见性隔离Patch • 内核磁盘空间配额Patch 引入Docker镜像技术

6.PouchContainer技术架构

7.Inner Arch of PouchContainer

8.富容器 l 容器内运行init进程,PID=1 l 满足运维域视角(应用运维、基础设施运维) l 容器内运行系统服务,满足业务需求 l 极强的应用适配性,快速容器化存量业务 l 阿里集团应用100%容器化的重要前提 l 容器内资源多维度隔离(alikernel支持)

9.富容器 兼容容器镜像 兼容运维体系 -保障交付效率 -保障运维能力

10.强隔离性 l 传统容器的隔离维度:namesapce,cgroup l 更优的容器可见性隔离:内核patch,lxcfs l 额外隔离维度:磁盘,网络等:diskquota l 基于Hypervisor的强容器隔离 l runV l clear container l katacontainer

11.资源可见性隔离LXCFS 使用场景: • 容器内部进程不能感知自身的资源限额,只能感知宿主机的总资源 • Java应用判断内存资源大小动态分配堆栈大小,莫名OOM • Java中间件通过CPU核来创建线程数 • /proc

12.资源可见性隔离LXCFS 不使用LXCFS 使用LXCFS

13.Diskquota容器磁盘限额 • DiskQuota是一种限制文件系统磁盘空间使用的技术; • 控制磁盘使用量的功能(Volume/容器rootfs); • 基于块设备的方式是可以直接控制磁盘的使用量(size/inode);

14.Diskquota容器磁盘限额 1. rootfs设置quota,通过--disk-quota的参数指定

15.Diskquota容器磁盘限额 2. volume设置quota,通过设置volume size参数指定

16.Hypervisor-based container runV QEMU 兼容容器镜像 -保障交付效率 提供隔离的内核 -保障容器安全

17.Hypervisor-based container 多容器运行时统一管理 https://github.com/alibaba/pouch/blob/master/docs/features/pouch_with_runV.md

18.Hypervisor-based container

19.P2P 镜像分发

20.原生支持Kubernetes

21.原生支持Kubernetes

22.谢谢

23.