19-Kubenetes简介

Kubernetes单词起源于希腊语, 是「舵手」或者「领航员」的意思,是“管理者”和“控制论”的根源。 K8s是把用8代替8个字符“ubernete”而成的缩写。

1. Docker Swarm 和 k8s的前世今生

可以很明确的说 先有的k8s,后有的docker swarm。

  • 容器编排工具Kubernetes诞生,并迅速得到Google和RedHat的支持。2014年7月,Docker收购Orchard Labs,由此Docker公司开始涉足容器编排领域,Orchard Labs这家2013年由两位牛逼的年轻人创建的公司,有一个当时非常著名的容器编排工具fig,而这个fig就是docker-compose的前身。Docker Compose虽然能编排多容器的APP,但是却不能实现在多个机器上进行容器的创建和管理。所以此时Docker公司和Kubernetes并未开始正面竞争和冲突。

  • 10月17日,Docker公司在其丹麦哥本哈根举行的 DockerCon 大会上宣布,将扩大其Docker平台并拥抱支持Kubernetes。显然,在容器编排领域的战火已然分出结果,尘埃落定,Kubernetes得到了包括Google、Huawei、Microsoft、IBM、AWS、Rancher、Redhat、CoreOS等容器玩家的一致认可。

  • Docker容器不关心用户使用哪种编排框架,它的工作是让用户轻松地选择最喜欢的编排框架,无论Kubernetes、Mesos、Docker Swarm还是其他。这个选择在价值上无关紧要,真正的价值在于平台,那才是钱。因此,将Kubernetes与Docker容器进行比较是没有意义的,Docker的真正的竞争对手是VMWare、CloudFoundry等平台。

Kubernetes和docker swarm的Google Trends如下:
在这里插入图片描述
在这里插入图片描述

2. docker Swarm回顾

docker Swarm分为Manager节点和Worker节点,Manager具备管理功能,维持这个cls的状态,提供对外的接口,可以通过manager部署我们的application,部署service,部署stack。
在这里插入图片描述

3. Kubennetes介绍

相比docker Swarm来说manager等于master,worker等于node节点。
在这里插入图片描述

3.1 k8s的master节点

master节点主要是k8s的一个大脑,k8s集群的管理节点,负责管理集群,提供集群的资源数据访问入口。拥有Etcd存储服务,运行Api Server进程,Controller Manager服务进程及Scheduler服务进程,关联工作节点Node。Kubernetes API server提供HTTP Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口。也是集群控制的入口进程;Kubernetes Controller Manager是Kubernetes所有资源对象的自动化控制中心;Kubernetes Schedule是负责资源调度(Pod调度)的进程。
在这里插入图片描述

3.2 k8s的node节点

Node是Kubernetes集群架构中运行Pod的服务节点(亦叫agent或minion)。Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿主机。关联Master管理节点,拥有名称和IP、系统资源信息。运行docker eninge服务,守护进程kunelet及负载均衡器kube-proxy。

Pod是k8s中容器调度的最小单位,是具有相同namespace的container的组合,可能是一个或多个container。这里的namespace包含的所有的namespace,比如usernamespace、networknamespace等。

Node节点主要部件:

  • Docker Engine(Docker):Docker引擎,负责本机容器的创建和管理工作;
  • kubelet:负责对Pod对于的容器管理,如容器创建、volume、network等;
  • kube-proxy:实现Kubernetes Service的通信与负载均衡机制的重要组件;
  • Fluentd:负责日志的采集、存储、查询等。
    Node节点可以在运行期间动态增加到Kubernetes集群中,默认情况下,kubelet会向master注册自己,这也是Kubernetes推荐的Node管理方式,kubelet进程会定时向Master汇报自身情报,如操作系统、Docker版本、CPU和内存,以及有哪些Pod在运行等等,这样Master可以获知每个Node节点的资源使用情况,实现高效均衡的资源调度策略。
    在这里插入图片描述

3.3 Kubernetes architecture

在这里插入图片描述