kubernetes概念
kubernetes又称k8s(由于第一个字母到最后字母中间有8个字符),也可以成为kube,它是一款容器自动实施操作的开源工具,它可以省去用户部署和拓展操作,与docker-compose不一样的是,k8s提供编排和管理功能,能够进行跨多台主机服务器进行部署,并且支持负载均衡
资料:https://blog.51cto.com/14449541/2470035?source=dra
http://dockone.io/article/8797
组件介绍
k8s分为2大组件,分别是master和node
master组件
image.pngk8s的管理节点,负责管理集群,以及提供集群资源的访问入口
该组件中包含:apiserver,scheduler,controller-manager,etcd
apiserver:统一资源的访问入口,提供restful风格的api接口服务,所有的系统的增删改查都通过API进行,最后存储在ETCD中
scheduler:对pod调度,监听apiserver上pod的状态,为还没有指定nodes的pod根据一定算法选择一个节点。
controller-manager:集群内的管理控制中心,对集群内node、pod、namespace等进行管理,当其中一个部件宕机,比如node宕机,那么controller-manager就会对其修复,确保集群处于预期的工作状态。
etcd:分布式存储系统,用于保存集群所有的网络配置和对象的状态信息。
node节点组件
是kubernetes的工作组件,受master组件控制,节点可以是物理机或者是虚拟机,里面包含支持pod运行的必要组件。
该组件中包括:
kubelet:是master以及pod之间的通信基础,负责创建、监视和启动容器的运行,它还监视着容器的状态,在出现问题的时候,启动新的pod实例。
kube-proxy:监视api服务器,实时获取pod的状态,使网络保持最新。
它负责维护主机上的网络传输规则,并且处理pod与主机之间的数据包的传输,它就像是节点上运行pod的网络代理和负载均衡器一样。
容器引擎:负责拉取容器,运行容器,当下最流行的是docker,但是也支持其他容器,比如rkt之类。
pod概念
pod表示一组容器的集合,运行与node上,这些容器共享着命名空间,ip地址以及端口,能够通过localhost进行通信。
每一个pod都与node绑定,直到删除,当其中一个node出问题时,新的pod会被调度到其他的node节点上。
可以说node节点相当于一台虚拟机,里面包含着运行容器的必要条件,而pod相当里面的一组应用。