近年来,Docker像一股旋风席卷IT界,Docker指的是容器技术,其字面意思是集装箱。Docker容器技术得以快速发展,核心技术是镜像打包,使得上下游能友好地进行协助和标准化交付。“build once run anywhere”构建一次到处运行的想法非常好,实践中发现,系统在开发和测试,以及生产环境之间部署时应用配置会发生变化,仅靠“环境变量-e”没法满足实际需求。
另外,“容器镜像”的架构使得应用配置文件变更困难,如容器已部署你的需求。但是,更改应用配置文件中的一个参数,都需要重新修改Dockerfile文件来实现,体现不出用容器的优势,反而感觉更加繁琐。
这个时候,我们来看看集装箱的概念。集装箱是装在船上来运输的,船上的舵手把集装箱送往全世界。IT世界的Docker装在数据中心的Linux系统环境中,容器何去何从由Kubernetes这个舵手说了算。
有人说Kubernetes出身好(谷歌的基因),活儿好,但是不好管理,作为老船长的几个IT管理者又拿出了Sextant来驯服Kubernetes。Sextant是什么东西呢?Sextant和Kubernetes(K8S)的关系,好比RedHat、Suse、CentOS、Ubuntu和Linux关系一样。Sextant算是Kubernetes(K8S)的一种发行版。Kubernetes的使用就跟他的名字一样很复杂。这几位技术专家在Kubernetes(K8S)的基础上加入了许多功能特性,方便安装部署。
使用Kubernetes需要解决的问题
总而言之,目前我们使用Kubernetes可以解决以下问题:
- 单机操作系统(Core OS)
- 自动安装和部署(Sextant)
- .分布式文件系统(Cephalexin)
- Load Balancer(Ingress)
- 网络性能
数据中心用户为什么要用Docker,Kubernetes呢?
从业务的角度上说,当业务需要上线时,需要及时申请到所需资源。当业务完成后需要释放资源,没有业务需求的时候要为下次业务出现时做好准备。
从数据中心的组织结构来说,数据中心里有业务集群的概念,一个集群只运行某一种应用,各集群之间相对独立,这保证了应用所需资源,但影响了利用率,影响了数据中心数据内部迁移流动的连贯性。
容器的出现为解决这些问题提供了可能,容器的特点就是把应用容器化,放到容器内部,解决了环境依赖的问题,从而可以方便地进行迁移。
但是,只有容器是不行的,还需要用到集群化的管理工具,一个个零散的容器需要被统一管理才有价值,在技术实现上就需要如Kubernetes(K8S)这样的分布式操作系统,让所有作业都由分布式操作系统来调度,而且分布式操作系统可以打破数据中心内部一个个孤立的业务集群,将集群做到标准化。
总而言之,k8s和docker的关系不复杂。 k8s是为部署与管理docker而生的管理平台。 k8s提供了docker的创建、管理、负载与高可用管理等功能,但如果没有k8s,docker还是可以使用的。与k8s类似的还有其它,如mesos。
作者:刘志红 16年系统研发关联工作经验,曾就职于Oracle,NTT Data,中钞科堡等公司,目前就职于中国电信云计算分公司