K8S学习之体系架构介绍

K8S学习之体系架构介绍

  • Kubernetes整体架构
    • master构成
    • worker构成
    • Controller控制器
  • 其他
    • Label
  • 参考链接

Kubernetes整体架构

  • 内容介绍

    每个Kubernetes集群都有两种类型的节点:master 和 worker

    master负责控制和监控worker工作集群

  • 整体组成

    K8S学习之体系架构介绍_第1张图片

master构成

  • 整体图例

    K8S学习之体系架构介绍_第2张图片

  • etcd

    作为数据库,所有kubernetes对象、当前状态、访问信息、集群配置信息…,都存在这。

  • API Server

    暴露集群操作的端点,master和worker上的组件都需要访问api server,以便完成自己的工作。

  • Scheduler

    调度程序,负责决定哪个工作由哪个机器干。

  • Control Manager

    控制管理器,监视集群的状态(通过调用API服务器来获取此数据)并采取措施将其置于预期状态

worker构成

  • 整体图例

    K8S学习之体系架构介绍_第3张图片

  • kubelet

    worker节点的核心,与master的api server沟通,运行调度到本节点的容器

  • kube Proxy

    使用IP表/IPVS处理Pod的网络需求

  • Pod

    kubernetes 运行容器的主力提供了容器间联网的能力

    K8S学习之体系架构介绍_第4张图片

    一个pod可以有多个容器,这些容器中的应用相互间都视为本地。

    pod的网络接口提供了一个机制,使其可以与本节点或其他节点上的pod进行网络连接

    K8S学习之体系架构介绍_第5张图片

    每个pod都会被指定一个IP,kube-proxy将使用该IP地址来路由流量,而且此IP地址仅在集群中可见

    一个pod中挂载的数据卷可以被pod内所有容器看到,因为Pod中有一个叫Pause的根容器,其余的用户业务容器都是共享这个根容器的IP和Volume。例如,你的 APP 是一个图片上传应用,把图片保存在一个数据卷中,同一个 pod 中的其他容器可以监控这个数据卷,发现有新图片时,就开始处理,例如缩放多个尺寸的图片、上传到云存储。

Controller控制器

  • 内容介绍

    kubernetes中有很多控制器,例如ReplicaSet、Replication Controller、Deployments、StatefulSets和Service等。

    他们都控制pod的对象,下面介绍几个重点的控制器:

  • ReplicaSet

    主要职责是根据给定的Pod创建副本。如果一个pod挂了,这个控制器就会得到通知,立马创建一个新的。

    K8S学习之体系架构介绍_第6张图片

  • Deployment

    使用ReplicaSet来管理副本。提供了滚动升级的能力,扩展新的,缩减旧的。

    K8S学习之体系架构介绍_第7张图片

  • Service

    类似于一个负载均衡器一样,向相应节点分派包。可以跨worker节点构建一个pod组(通常是根据pod标签)

    K8S学习之体系架构介绍_第8张图片

    例如你的前端应用、后端应用,各自都有很多个实例在运行,前后端怎么沟通?

    前端只需要知道后端各个实例的访问地址,硬编码后端IP的方式显然不能用,那么就需要把后端实例组成一个 service,前端只需要访问这个 service,由 service 对其中的后端实例进行流量负载均衡转发

    一旦service被创建,K8S会为其分配一个集群内唯一的IP,叫做ClusterIP,而且在service的整个生命周期中,ClusterIP不会发生变更,这样一来,就可以用与Docker Swarm类似的操作,建立一个ClusterIP到服务名的DNS域映射即可。

  • Ingress

    Ingress(入口)控制器是和外部世界沟通的唯一入口。外部世界通过Ingress与集群中的所有服务沟通,就像是一个网关,方便我们在一个地方统一设置安全策略、监控、记录日志。

    K8S学习之体系架构介绍_第9张图片

其他

Label

  • 内容介绍

    Label本质是一个键值对,具体的值由用户决定。Label就是标签,可以打在Pod上,也可以打到Service上。总结来说,Label与被标记的资源是一个一对多的关系

  • 举例说明

    例如,我们给Pod打上了role=serviceA的标签,那么只需要在Service中的Label Selector中加入刚刚那个标签,这样一来,Service就可以通过Label Selector找到打了同一个Label的Pod副本集了。

参考链接

  • 图解 Kubernetes

    https://www.cnblogs.com/yogoup/p/12122676.html

  • 简单了解一下K8S,并搭建自己的集群

    https://zhuanlan.zhihu.com/p/97605697

你可能感兴趣的:(Dev,Ops,架构,kubernetes)