Google容器管理工具Kubernetes简介

来源:互联网 发布:小米max2 知乎 编辑:程序博客网 时间:2024/06/05 01:03

Kubernetes简介

Kubernetes是Google开源的Container集群管理工具, 是Google管理Container经验的开源实现, 通过Kubernetes可以管理多个host 上Container的生命周期, 运行在Container里的服务以及对运行在Container里服务的LoadBalance控制, Kubernetes使得Container的管理更加方便. Kubernetes由API server, Controller Manager, Etcd, Kubelet, Proxy, Kubcfg几个组件构成, 在详细介绍这些组件之前,我们先来介绍如下几个关于Kubernetes的概念:

  • Pod, 所谓Pod就是一组运行在同一台Host上Container的集合.
  • Label, Label是key/value键值对, 如:name="redis-master",  每个Pod可以设置一组labels, 通过labels可松散耦合地管理一组Pod, 也可通过label selector鉴别一组Pod. 在当前Kubernetes版本中,Kubernetes使用label selector来跟踪services和replicationController的成员. 
  • services, 所谓services是给运行在每个Minion(Host)的Proxy上具有名字并且指向特定的一个或一组Pods的配置单元, 可 通过label selector来定义一组Pods的services.
  • replicationController, replicationController包含一个Pod模板, 而且replicationController会确保任何时候指定replicas数量的Pod在运行, 如果Pod多于replicas, replicationController会删除, 反之会增加, replicationController监控的Pods也是通过label selector来定义的.

Kubernetes框架简介

Kubecfg

Kubefcg是管理员用来管理Pod, 包括创建Pod, Service, replicationController等操作.

REST API Server

REST API Server是Kubernetes的核心, 它包括用于创建Pod, Service, replicationController等API, 管理员通过Kubecfg调用相应的API, 而REST API Server会根据用户的请求来调用对应的API, 如创建Pod时, API Server会调用PodRegistry和EtcdRegistry的API来完成Pod的创建.

Controller Manager

Controller Manager的主要是用来同步存储在Pod正运行的Minion(Host)上的replicationController对象.

Etcd Server

Etcd Server用来存储Pod, Service, replicationController等的配置信息, 通过这些配置信息, Kubernetes的Kubelet使用Etcd Client发现这些配置信息, 然后调用Docker的API管理Pod包含Container的生命周期.

Kubelet

Kubelet是运行在Docker Host上的一个进程, 它主要是从Etcd Server获取Pod的配置信息, 通过Docker API来管理Container生命周期, API Server也会调用Kubelet来获取Container的详细信息.

Proxy

Proxy是运行在Docker Host上的一个进程, 它主要是作为外界和Container之间的一个代理, 当外界需要访问Container所提供的服务时, 首先需要跟Proxy建立连接, 然后Proxy和提供服务的Container暴露的Port建立连接, 外界的请求通过Proxy发送给Container, Container处理后的应答也通过Proxy响应给外界.

参考资料

https://github.com/GoogleCloudPlatform/kubernetes


0 0