Kubernetes是希腊文舵手”的意思 ,基于容器技术的分布式架构。是google内部使用的大规模集群管理系统的Borg的开源版本。kubernets诞生时竞争产品还有很多例如: Docker Swam 和 Mesos,在2016年左右趋于 Kubernetes 一统天下。

Kubernetes平台对现有的语言或平台没有侵入性,现有系统可以很容易的迁移到kubernets平台,Kubernetes没有限定任何编程接口,任何语言编写的服务,都可以映射为Kubernetes的Service。

为何要使用Kubernetes?

单体应用是各个组件紧密的耦合在一起。开发、部署、必须以同一个实体运行。如果有个组件进行了修改都需要重新部署整个应用。随着业务的增加单体应用越来越复杂,难维护。需要的资源也越来越大。无法做到资源按需分配,比如有的组件是计算密集型需要占用大量cpu资源、有的是io密集型需要占用的内存、磁盘和网络资源要大于cpu资源,或者有的组件访问量比较大需要多负载,有的组件则访问量比较小,单体应用只能整体部署造成资源浪费。

微服务架构的核心是将一个单体应用拆解成一些可独立部署相互连接的微服务,每个微服务可以根据负载情况部署一个或多个副本,每个微服务分别在自己的进程里独立运行,可独立分配cpu和内存。如果系统中部署少量的微服务管理还是比较简单的,但是随着组件越来越多管理各个微服务和微服务直接的通讯就会越来越复杂。在同一台物理机上运行多个微服务并对各个微服务进行隔离的实现,当少量应用时可以在物理机搭建虚拟机,并为每个微服务提供真实的操作系统进行隔离,应用操作系统本身运行需要大量资源,所有这种方案十分浪费资源。使用容器是轻量级隔离方式,容器仅运行在宿主机上被隔离的单个进程中,它仅消耗应用容器消耗的资源,没有有其他进程开销。docker是著名的容器平台,Kubernetes是容器编排系统。