阿里巴巴 孙宏亮 - 《阿里巴巴百万级容器技术PouchContainer+揭秘》

我今天的议题是“解析阿里巴巴 Pouch 容器开源技术”。其实,阿里巴巴作为一家互联网公司有很多的业务,它的机房也很大,其实一家上了规模的公司谈到技术的时候,逃不出“规模”两个字。规模效应,比如容器技术,可以为一家公司节省很多方面的成本。如果大家原来用10台虚拟机100台虚拟机能够搞定的事情,现在需要3台物理机100个容器可以搞定,这样就节省了 7 台服务器,如果规模到了 1 万台服务器,容器技术可以节省上亿的成本。
展开查看详情

1.《阿里巴巴百万级容器技术 PouchContainer 揭秘》 演讲者/孙宏亮

2.Agenda • 阿里巴巴集团容器现状 • PouchContainer 技术优势 - 富容器 - 隔离性 - P2P镜像分发 - 内核兼容性 - 原生支持Kubernetes • PouchContainer 开源发展

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

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

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

6.PouchContainer 生态架构 编排 workflow 容器 workflow 编排调度 容器引擎 容器运行时

7.

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

9.富容器 兼容容器镜像 2 systemd rich container -保障交付效率 4 3 5 agent CMD 兼容运维体系 crond -保障运维能力 P P syslogd Z prestart poststop hook hook rootfs(image) 1

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 https://github.com/alibaba/pouch/blob/master/docs/features/pouch_with_lxcfs.md

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.P2P镜像分发能力

19.内核兼容性 l 阿里仍存有相当规模的 Linux 2.6.x 内核机器 l PouchContainer 支持内部所有 Linux 2.6.x 的内核 l 部分支持来源指定系统调用的回避 l 部分支持来源内核补丁 l runV虚拟机中GuestOS支持 2.6.x内核(TODO) l 自研OCI runtime runlxc(开源 TODO)

20.原生支持 Kubernetes

21.原生支持 Kubernetes

22.PouchContainer开源现状 2445 star 48位贡献者 1位协作机器人 文档 测试 安装指南: https://github.com/alibaba/pouch/blob/master/INSTALLATION.md