kubernetes组件介绍

目录

 

1.前言

2.k8s简介

3.master

3.1 kubernetes Scheduler 简介

3.2 Controller Manager简介

4.Node


 1.前言

为什么要用 Kubernetes?
  使用 Kubernetes 的理由有很多,最基本的一个理由就是:IT 是新技术驱动行业。Docker 这个新兴的容器化技术当前已经被很多公司所采用,其从单机走向集群已成必然,而云计算的蓬勃发展正在加速这一进程。Kubernetes 作为当前唯一被业界广泛认可和看好的 Docker 分布式系统解决方案。可以预见,在未来几年内,会有大量的新系统选择它,不管是运行在企业本地服务器上还是被托管到公有云上。
  使用 Kubernetes 又会收获哪些好处呢?
  首先,使用 Kubernetes 就是在全面拥抱微服务架构。微服务架构的核心就是将一个巨大的单体应用分解为很多小的互相连接的微服务,一个微服务背后可能有多个实例副本在支撑,副本的数量可能会随着系统的负荷变化而进行调整,内嵌的负载均衡器在 k8s 平台中有多个实例副本在支撑,副本的数量可能会随着系统的负荷变化而进行调整,内嵌的负载均衡器 k8s 平台中发挥了重要的作用。微服务架构使得每个服务都可以由专门的开发团队来开发,开发者可以自由选择开发技术,这对于大规模团队来说很有价值。另外,每个微服务独立开发、升级、扩展,使得系统具备很高的稳定性和快速迭代进化能力。
  其次,Kubernetes 系统架构具备了超强的横向扩容能力。对于互联网公司来说,用户规模就等价于资产,谁拥有更多的用户,谁就能在竞争中胜出,因此超强的横向扩容能力是互联网业务系统的关键指标之一。不用修改代码,一个 Kubernetes 集群即可从只包含几个Node 的小集群平滑扩展到拥有成百上千 Noder 大规模集群,利用 Kubernetes 提供的工具,甚至可以在线完成集群的扩容。只要微服务设计的得好,结合硬件或者公有云资源的线性增加,系统就能够承受大量用户并发访问所带来的压力。

      那为什么叫k8s,这个单词太长了,从k-s之间有8个字符,因此简称 k 8 s

2.k8s简介

借用一张k8s中文社区上的架构图

kubernetes组件介绍_第1张图片

Kubernetes主要由以下几个核心组件组成:

  • etcd保存了整个集群的状态,是Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划;
  • apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
  • controller manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态;
  • scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上,监视新创建没有分配到Node的Pod,为Pod选择一个Node;
  • kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
  • Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
  • kube-proxy负责为Service提供cluster内部的服务发现和负载均衡,部署在每个Node节点上,它是实现Kubernetes Service的通信与负载均衡机制的重要组件;

      Kubernetes 里的 Master 指的是集群控制节点,每个 Kubernetes 集群里需要有一个Master 节点来负责整个集群的管理的控制,基本上 Kubernetes 所有的控制命令进是发给Master,Master 负责具体的执行过程,后面所有执行的命令基本都是在 Master 节点上运行的。Master 节点通常会占据一个独立的 X86 服务器,一个主要的原因是它太重要了,它是整个集群的大脑,如果它宕机或者不可用,那么所有的控制命令都将失效。除了 Master、Kubernetes 集群中的其他机器被称为 Node 节点,在较早的版本中也被称为 Minion。与 Master 一样,Node 节点可以是一台物理主机,也可以是一台虚拟机。Node节点才是 Kubernetes 集群中的工作负载节点,每个 Node 都会被 Master 分配一些负载。当某个 Node 宕机时,其上的工作负载会被 Master 自动转移到其他节点上去。

先简单介绍下k8如何工作的?:

        master主机上的kube-controller-manager是整个集群的控制管理中心,kube-controler-manager中的node controller模块 通过apiservice提供的监听接口,实时监控Node机的状态信息。 当某个Node机器宕机,controller-manager就会及时排除故障并自动修复。Node节点机上的kubelet进程每隔一段时间周期就会调用一次apiservice接口报告自身状态,apiservice接口接受到这些信息后将节点状态更新到ectd中。kubelet也通过apiservice的监听接口监听pod信息,如果监控到新的pod副本被调度绑定到本节点,则执行pod对应的容器的创建和启动,如果监听到pod对象被删除,则删除本节点对应的pod容器。

那pod和容器之间的关系可以用如下一张借用的图片来表示

kubernetes组件介绍_第2张图片

    单个容器或多个关系密切的容器,被编成一组,称为 podK8S 就是以 pod 为单位进行编排操作。

3.master

3.1 kubernetes Scheduler 简介

     kubernetes Scheduler 运行在 master 节点,它的核心功能是监听 apiserver 来获取 PodSpec.NodeName 为空的 pod,然后为每个这样的 pod 创建一个 binding 指示 pod 应该调度到哪个节点上。从哪里读取还没有调度的 pod 呢?当然是 apiserver。怎么知道 pod 没有调度呢?它会向 apiserver 请求 spec.nodeName 字段为空的 pod,然后调度得到结果之后,把结果写入 apiserver。

kubernetes组件介绍_第3张图片

3.2 Controller Manager简介

      Controller Manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。

4.Node

      除了 Master、Kubernetes 集群中的其他机器被称为 Node 节点,在较早的版本中也被称为 Minion。与 Master 一样,Node 节点可以是一台物理主机,也可以是一台虚拟机。Node节点才是 Kubernetes 集群中的工作负载节点,每个 Node 都会被 Master 分配一些负载。当某个 Node 宕机时,其上的工作负载会被 Master 自动转移到其他节点上去。

     kubernetes组件介绍_第4张图片

每个 Node 节点都运行着以下一组关键进程:

  •   Kubelet:负责 Pod 对应的容器的创建、启停等任务,同时与 Master 节点密切协作,实现集群管理的基本功能。
  •   Kube-proxy:实现 Kubernetes Service 的通信与负载均衡机制的重要组件。

参考:Kubernetes中文社区

你可能感兴趣的:(docker,docker,kubernetes)