service的几个特性:api
- 惟一的名字
- 拥有一个虚拟IP和端口号
- 具备远程服务的能力
- 映射到提供这种服务能力的一组容器上
图片描述:k8s将急群众的机器划分为一个Master节点和一群工做节点(Node)。安全Master节点上运行这kube-apiserver、kube-controller-manager和kube-scheduler进程,这些进程负责的功能有(都是自动完成的):网络
- 资源管理
- Pod调度
- 弹性伸缩
- 安全控制
- 系统监控
- 纠错
- 资源管理
- 资源管理
Kubernetes API Server(kube-apiserver):提供了HTTP REST接口的关键服务进程,是Kubernates里全部资源的增删改查操做的惟一入口,也是集群控制的入口进程。架构
Kubernetes Controller Manager(kube-controller-manager):kubernetes中全部资源对象的自动化控制中心,能够理解为资源对象的大脑。负载均衡
Kubernetes Scheduler(kube-scheduler):负责资源调度(Pod调度)的进程。分布式
图片解释:Node既能够是物理机也能够是虚拟机。每一个Node节点都会呗Master分配一些工做负载,当某个Node宕机是,其余上的工做负载会被Master自动转移到其余节点上去。Node节点中运行这许多的Pod,每一个Pod里运行这一个Pause容器和多个业务容器,其中这些业务容器共享Pause容器的网络栈和Volume挂在卷,方便业务容器之间的高效通讯和数据交换。
Node中运行着kubelet、kube-proxy和Docker Engine进程,两个进程负责的功能有:spa
- 建立POD
- 启动POD
- 监控POD
- 重启POD
- 销毁POD
- 实现软件模式的负载均衡
kubelet:负责Pod对应的容器的建立,启动等任务,同时与Master节点密切协做,实现集群管理的基本功能。设计
kube-proxy:实现Kubernetes Service的通讯与负载均衡的重要组件。server
Docker Engine:Docker引擎,负责本机的容器建立和管理工做。对象
Pod 运行在Node中,每一个Pod里运行这一个Pause容器和多个业务容器,其中这些业务容器共享Pause容器的网络栈和Volume挂在卷,方便业务容器之间的高效通讯和数据交换。
为何Kubernetes会设计一个全新的Pod概念而且有这样特殊的组成结构?
- 以一组容器为单元的话,很难对总体简单的判断及有效的进行行动,而以不易死亡的Pause容器做为Pod的根容器,用它的状态来表明整个容器组的状态,从而简化判断和行动。
- 业务容器共享Pause容器的网络栈和Volume挂在卷,方便业务容器之间的高效通讯和数据交换。
kuberbetes要求底层网络支持集群内部任意两个Pod之间的TCP/IP直接通讯,才用虚拟二层技术实现。
Pod有两种类型:普通的Pod和静态的Pod
- 静态Pod不存放在Kuberbetes的etcd里面,而是放在某个具体的Node上的一个具体的文件中,而且只有在此Node上启动运行
- 普通Pod一旦被建立,就会放入到etcd中存储,随后会被Kubernetes Master调度到某个具体的Node上并进行绑定,随后该Pod被对应的Node上的kubelet进程实例化成一组相关的Docker容器并启动起来。
kubernetes集群中,只要为须要扩容的Service关联的Podcast建立一个RC便可,RC(Replication Controller)包括三个关键的信息:
- 目标Pod的定义
- 目标Pod须要运行的副本数量(Replicas)
- 要监控的目标Pod的标签(label)
建立好RC以后,kubernetes会经过RC中定义的Label筛选出对应的Pod实例并实时监控器状态和数量,若是实例少于定义的副本数量,则会根据RC定义的Pod模板来建立新的Pod,但后调度到合适的Node上运行。