一、什么是Kubernetes
它是一个全新的基于容器技术的分布式架构领先方案,确切地说,Kubernetes是谷歌严格保密十几年的秘密武器Borg的一个开源版本。Borg是谷歌内部使用的大规模集群管理系统,它基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。
环境不一致使得应用部署出现了各种问题,从而产生了Docker容器来解决应用部署的问题。而大集群上容器的部署、伸缩和管理的各种问题,衍生出来了容器编排引擎,比较出名的有K8S(Kubernetes) 和 Docker Swarm。
Kubernetes是一个针对容器应用,进行自动部署,弹性伸缩和管理的开源系统。主要功能是生产环境的容器编排,Kubernetes名字太长了,叫起来有点麻烦,而Kubernetes首字母与结尾字母之间有8个字母,因此被称作K8S。
如果我们使用Kubernetes:
1、与业务无关的底层代码或功能模块,都可以立刻从我们的视线中消失
2、不必再费心于负载均衡器的选型和部署实施问题
3、不必再考虑引入或自己开发一个复杂的服务治理框架
4、不必再头疼于服务监控和故障处理模块的开发
二、Kubernetes发展史
K8S是建立在谷歌内部有超过15年的历史,来源于谷歌内部的Borg系统,集结了Borg的精华。
2014年6月 谷歌云计算专家埃里克·布鲁尔(Eric Brewer)在旧金山的发布会为这款新的开源工具揭牌。
2015年7月22日K8S迭代到 v 1.0并正式对外公布 大约每100天更新一次,如今已是 V 1.18.1版本
三、Kubernetes架构图
Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。Borg是谷歌内部的大规模集群管理系统,负责对谷歌内部很多核心服务的调度和管理。Borg的目的是让用户不必操心资源管理的问题,让他们专注于自己的核心业务,并且做到跨多个数据中心的资源利用率最大化。
Kubernetes借鉴了Borg的设计理念,整体架构跟Borg非常像,如下图所示:
四、Kubernetes特点
Kubernetes是一个开放的开发平台,它不局限于任何一种语言,没有限定任何编程接口,所以不论是用Java、Go、C 还是用Python编写的服务,都可以被映射为Kubernetes的Service(服务),并通过标准的TCP通信协议进行交互。此外,Kubernetes平台对现有的编程语言、编程框架、中间件没有任何侵入性,因此现有的系统也很容易改造升级并迁移到Kubernetes平台上。
Kubernetes作用
Kubernetes提供了完善的管理工具(开发、部署、测试、运维、监控)因此,Kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式完备的分布式系统开发和支撑平台。
Kubernetes同时具有完备的集群管理能力:
1、故障自愈
2、服务发现与负载均衡
3、自动部署与回滚
4、自动伸缩(扩容与缩容)