过去几年,以 docker、kubernetes 为代表的容器技术已发展为一项通用技术,BAT、滴滴、京东、头条等大厂,都争相把容器和 k8s 项目作为技术重心,试图“放长线钓大鱼”。
就说阿里吧,目前基本所有业务都跑在云上,其中有一半迁移到了自己定制 k8s 集群上。据说,今年计划完成 100% 基于 k8s 集群的业务部署。而服务网格这块儿,在阿里一些部门(比如蚂蚁金服),已经有线上业务在用了。
这充分说明了容器在当今软件研发领域的地位,掌握容器技术自然成为很多公司在招聘时的重要选项。
但是,容器技术本身偏向运维,namespace 资源隔离、cgroups 资源限制等概念,对开发者来说,理解起来比较困难。这几年,在跟朋友探讨 k8s 落地时,也有一些问题被反复提及,比如:
其实,容器问题虽然有很多类型,但最终都会归结到 Linux 操作系统上。所以,在解决容器相关问题时,要将 Linux 操作系统的主要模块,和容器的知识结构系统串联起来,同时兼顾 namespace 和 cgroups 带来的特殊性。 ![](http://mmbiz.qpic.cn/mmbiz_png/2aU2lcVIA5KdgDBTBacIvw80eAVNzdia8LM4MHIEBjyLgFUbezvtkicTnXcpSO8lcWO7kjM5TW8pYLTS63vLIbyQ/640?wx_fmt=png)
这里,分享给你一张实用的图谱,出自李程远。他是 eBay 总监级工程师、云平台架构师,有超过 15 年 Linux 平台开发经验和 8 年云平台开发经历,参与设计并开发了 eBay 数据中心两代云平台。
这两天,看朋友圈有人分享他的专栏《容器实战高手课》,跟着学了几篇,收获不小。
在专栏中,他讲解了容器技术的底层实现和核心原理,通过解决 20 个常见容器问题, 带你搭建完整的容器知识体系,掌握常见 Linux 内核调试工具的使用场景,和 namespace、cgroups 的实际应用,内容挺硬,都是工作中实打实用得上的,这里推荐给你。
在专栏中,他将零散的知识点体系化,按照类似操作系统的模块划分,依次讲解了容器进程、容器内存、容器存储、 容器网络、容器安全这 5 大模块,从一个个具体问题入手,带你系统掌握容器核心点 Namespace 和 Cgroups,并理解其对传统操作系统行为的影响。比如,Memory Cgroup 对 Pagecache 和 Swap 空间有怎样的影响;在 proc 文件系统下,我们的网络参数应用了 Network Namespace 后,需要如何重新设置,等等。此外,他还会专门做一个专题加餐。通过一个真实案例,带你了解 perf,ftrace,bcc/ebpf 这几个 Linux 调试工具的原理,熟悉它们在调试问题的不同阶段所发挥的作用,并用它们解决现实场景中复杂的容器问题。