Kubernetes是Google开源的容器集群管理系统。它是基于Docker构建的一个容器调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件。由于Kubernetes基于docker容器的云平台,因此简写成k8s。
K8S功能套件
1、master:kubernetes的管理结点。
2、apiserver:提供接口服务,用户通过apiserver管理整个容器集群平台。apiserver负责和etcd交互(其他组件不会直接操作etcd,只有apiserver这么做),整个kubernetes集群的所有交互都以API Server为核心。所有对集群进行的查询和管理都需通过api进行;所有模块之间并不会互相调用,而是通过和apiserver打交道完成自己的工作。apiserver提供的验证和授权保证了整个集群的安全。
3、scheduler:kubernetes调度服务。
4、Replication Controllers:复制,保证pod的高可用。Replication Controller是Kubernetes系统中最强大的功能之一,它可以复制多个Pod副本。一个应用往往需要多个Pod进行支撑,并且需要保证其复制的副本数,即使副本所调度分配的宿主机出现异常,通过Replication Controller仍可以保证在其它宿主机使用同等数量的Pod。
5、minion:真正运行容器container的物理机。kubernets中需要很多minion机器用来提供运算。
6、container:容器,可以运行服务和程序。
7、 Pod:在Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是抽象成Pod。Pod是可以被创建、销毁、调度、管理的最小部署单元,它可以包括一个或一组容器。
8、Kube_proxy:代理做端口转发,相当于负载调度器。Proxy解决了同一宿主机相同服务端口冲突的问题,还提供了对外服务的能力,Proxy后端使用了随机、轮循8负载均衡算法。
9、etcd:etcd存储了kubernetes的配置信息,因此可以被看作是k8s的数据库。它存储着k8s容器云平台中所有节点、pods、网络等信息。etcd(daemon)同时是一个存储配置文件的后台服务。
10、Services : Services是Kubernetes的最外围单元。其通过虚拟一个访问IP及服务端口可以访问我们定义好的Pod资源。
11、Labels标签:Labels 是用于区分Pod、Service、Replication Controller的key/value 键值对。它仅用于对Pod、Service、Replication Controller之间的关系识别,但对这些单元进行操作时需要使用name标签。
12、 Deployment:Deployment是用于更新Pod的方法。你可以在Deployment对象中描述你所期望的理想状态(预期的运行状态),Deployment控制器会将现在的实际状态转换成期望状态。例如,将所有的webapp:v1.0.9升级成webapp:v1.1.0,只需创建一个Deployment,Kubernetes会按照Deployment自动进行升级。通过Deployment可以用来创建新的资源。
13、Kubelet命令:Kubelet和Kube-proxy都运行在minion节点上。Kube-proxy实现Kubernetes网络相关的内容,而Kubelet命令则管理Pod、Pod中的容器及容器的镜像和卷等信息。
各组件间的关系
1、Kubernetes架构是由一个master和多个minion组成,master通过api提供服务,接受kubectl的请求来调度管理整个集群。Kubectl是k8s平台的一个管理命令。
2、Replication controller定义了多个pod或者容器需要运行,如果当前集群中运行的pod或容器达不到配置的数量,replication controller会调度容器在多个minion上运行,保证集群中的pod数量。
3、service则定义真实对外提供的服务,一个service会对应后端运行的多个container。
4、Kubernetes是个管理平台,minion上的kube-proxy拥有提供真实服务公网的IP。客户端访问kubernetes中提供的服务,是直接访问到kube-proxy上的。
5、在Kubernetes中pod是一个基本单元,一个pod可以是提供相同功能的多个container,这些容器会被部署在同一个minion上。minion是运行Kubelet中容器的物理机。minion接受master的指令创建pod或者容器。

