去年换工作后,开始真正在生产环境中接触容器与Kubernetes。边恶补相关知识的同时,也想把学到的内容和自己的理解整理出来。学习的途径包括k8s官方文档、书籍、极客时间专栏及网上各种博文。所涉及一些摘抄或描述,大多用自己的理解来组织语言,也就不一一注明出处了。
Kubernetes(简称K8S)与容器技术,可以说是近几年最火热的技术之一。提起K8S,大家都知道是google开源的容器编排工具。今天想先谈谈,我理解的容器、K8S是什么,以及为什么它们能火起来。
Why Docker
既然说K8S是一个容器编排的工具,那么要搞清楚K8S是什么,首先得搞清楚,容器是什么,以及为什么要用容器技术。
形象的来说,一个linux容器,实际就是一个进程,还是个被系统欺骗的进程。为什么这么说呢?一个运行在容器里的进程,主要有以下特点:
- 它被宿主机操作系统隔离了,它看不到宿主机上的其他进程,以为自己就是pid为1的进程
- 它被宿主机操作系统限制了硬件资源,它能使用的cpu、内存等硬件资源只是宿主机的一部分
- 在被宿主机操作系统限制了存储空间,让这个进程认为宿主机的某个目录就是系统根目录
这几个欺骗进程的技术,就是是容器技术的三板斧,用于资源隔离的namespace,用于资源限制的cgroup,以及用于伪装进程根目录的rootfs。这三种技术,都是是早已存在于linux中的,只是docker公司比较创新的把这三种技术整合在一起,并且,提出了容器镜像及镜像仓库等概念,把这个进程及相关的依赖环境都