前言
什么是容器?
容器是一个包,包含了其应用以及所需要的所有的依赖。
容器中的应用与主机隔离,不需要关注环境。
容器和虚拟机最大的不同在于,容器不需要启动操作系统的王正周期,故,容器的启动以及停止都将会非常的快。并且容器还可以相当高兴的利用宿主机的各种资源。
容器把所有的应用的语言和框架都打包进入到了容器,使得容器在任何环境都能部署。
左图,应用直接部署在宿主机中,造成环境相互干扰,不利于运维和维护,右边,应用直接打包在docker中,应用之间互相互不干扰,可以任意运行。
什么是 Kubernetes?
k8s是一个来自google的开源项目,用于统一管理处理容器化的应用。
k8s,负责在大规模的服务器环境中,部署和管理容器组,用于解决掉容器的复制,扩展,健康,启动,负载均衡。
k8s,现在已经被多家公司支持,例如微软,红帽,蓝色巨人。
Kubernetes 的著名优势特色
一个平台搞定所有
使用k8s,部署任何应用都相当的容易。
只要能打包进入容器,容器能够运行,那么k8s 就一定能运行。
云环境无缝迁移
如果你有上云的需求,那么使用k8s,这间会是一件相当简单的事情,k8s,会让你无缝迁移云环境,从google的cloud到aws再到微软的环境,任意迁移。
高效的利用资源
看下图,左边,是4个虚拟机,黄色和蓝色部分是运行的应用,白色部分是未使用的内存和处理器资源。
右边,同样的应用打包运行在容器中。
Kubernetes 如果发现有节点工作不饱和,便会重新分配 pod,帮助我们节省开销,高效的利用内存、处理器等资源。
如果一个节点宕机了,Kubernetes 会自动重新创建之前运行在此节点上的 pod,在其他节点上运行。
开箱即用的自动缩放能力
网络、负载均衡、复制等特性,对于 Kubernetes 都是开箱即用的。
pod 是无状态运行的,任何时候有 pod 宕了,立马会有其他 pod 接替它的工作,用户完全感觉不到。
如果用户量突然暴增,现有的 pod 规模不足了,那么会自动创建出一批新的 pod,以适应当前的需求。
反之亦然,当负载降下来的时候,Kubernetes 也会自动缩减 pod 的数量。
使 CI/CD 更加简单
你不必精通于 Chef 和 Ansible 这类工具,只需要对 CI 服务写个简单的脚本然后运行它,就会使用你的代码创建一个新的 pod,并部署到 Kubernetes 集群里面。
应用打包在容器中使其可以安全的运行在任何地方,例如你的 PC、一个云服务器,使得测试极其简单。
可靠性
Kubernetes 如此流行的一个重要原因是:应用会一直顺利运行,不会被 pod 或 节点的故障所中断。
如果出现故障,Kubernetes 会创建必要数量的应用镜像,并分配到健康的 pod 或节点中,直到系统恢复。
而且用户不会感到任何不适。
一个容器化的基础设施是有自愈能力的,可以提供应用程序的不间断操作,即使一部分基础设施出现故障。
总结
Kubernetes 使得应用的启动、迁移、部署变得即简单又安全。
不必担心应用迁移后工作出现问题,也不用担心一台服务器无法应付突发的用户量。
需要注意的是,你的应用最好使用微服务架构进行开发,因为微服务应用比单体应用更适合做容器化。
作者:___mySoul