代码改变世界

Kubernetes(K8s)的组成部分

  钟铧若岩  阅读(5)  评论(0编辑  收藏  举报

Kubernetes(K8s)的组成部分


Kubernetes 主要由控制平面(Control Plane)组件和工作节点(Node)组件两大部分组成,以下是详细介绍:

控制平面组件


控制平面负责管理整个集群的全局决策,如资源调度、节点状态监控等。

  • kube - apiserver
    • 作为 Kubernetes 控制平面的前端接口,提供了 RESTful API 服务,是所有组件通信的枢纽。其他组件通过与 kube - apiserver 进行交互来实现对集群的管理和操作。
    • 对客户端请求进行认证、授权和准入控制,确保只有合法的请求才能被处理。
  • etcd
    • 一个高可用的键值存储系统,用于持久化存储 Kubernetes 集群的所有配置信息和状态数据,如节点信息、Pod 信息、Service 信息等。
    • 为整个集群提供数据一致性和可靠性保障,当 kube - apiserver 需要读取或更新集群状态时,会与 etcd 进行交互。
  • kube - controller - manager
    • 由多个控制器组成,每个控制器负责不同的集群功能,如节点控制器(Node Controller)负责监控节点的状态,副本控制器(Replication Controller)负责维护 Pod 的副本数量。
    • 控制器通过 kube - apiserver 监听集群状态的变化,并根据预设的规则进行相应的调整,以确保集群状态始终符合预期。
  • kube - scheduler
    • 负责将 Pod 调度到合适的工作节点上运行。它会根据节点的资源可用性、负载情况、亲和性规则等因素进行综合评估,选择最合适的节点。
    • 当有新的 Pod 创建请求时,kube - scheduler 会从 kube - apiserver 获取 Pod 的信息和节点的状态信息,然后进行调度决策,并将调度结果告知 kube - apiserver

工作节点组件


工作节点是实际运行应用程序容器的地方,包含以下主要组件:

  • kubelet
    • 作为节点上的代理,负责与控制平面通信,接收并执行 kube - apiserver 下发的任务,如创建、启动和停止 Pod 等。
    • 监控节点上 Pod 的运行状态,并将状态信息反馈给 kube - apiserver。同时,它还负责维护容器的生命周期,确保容器按照配置要求运行。
  • kube - proxy
    • 在每个节点上运行,负责实现 Kubernetes 的服务网络功能,如负载均衡和服务发现。
    • 为每个 Service 创建相应的网络规则,将客户端的请求转发到后端的 Pod 上。通过维护 iptables 或 IPVS 规则,实现流量的转发和负载均衡。
  • 容器运行时(Container Runtime)
    • 负责实际运行容器的软件,常见的容器运行时有 Docker、Containerd 等。
    • kubelet 通过容器运行时接口(CRI)与容器运行时进行交互,实现容器的创建、启动、停止和删除等操作。

Kubernetes 的基本原理


Kubernetes 的核心原理基于声明式 API 和控制器模式,主要工作流程如下:

1. 用户请求


用户通过 Kubernetes 客户端工具(如 kubectl)或其他 API 客户端向 kube - apiserver 发送创建、更新或删除资源的请求。请求中包含用户期望的集群状态,例如创建一个包含多个副本的 Deployment。

2. 数据存储


kube - apiserver 接收到请求后,会对请求进行认证、授权和准入控制,确保请求合法。然后将相关的配置信息和状态数据存储到 etcd 中,etcd 会保证数据的一致性和持久性。

3. 调度与执行


  • 调度:kube - scheduler 会监听 kube - apiserver 中的新 Pod 创建请求,根据节点的资源状况和调度策略,为 Pod 选择一个合适的工作节点,并将调度结果更新到 kube - apiserver 中。
  • 执行:kubelet 会定期从 kube - apiserver 获取分配到本节点的 Pod 信息,并与容器运行时进行交互,创建和启动相应的容器。同时,kubelet 会监控容器的运行状态,并将状态信息反馈给 kube - apiserver

4. 控制器循环


kube - controller - manager 中的各个控制器会不断地从 kube - apiserver 中获取集群的当前状态,并与用户期望的状态进行对比。如果发现状态不一致,控制器会采取相应的措施来调整集群状态,使其符合用户的期望。例如,当某个 Pod 意外终止时,副本控制器会自动创建一个新的 Pod 来保证副本数量的一致性。

5. 服务网络


kube - proxy 在每个节点上运行,它会根据 kube - apiserver 中的 Service 信息创建相应的网络规则,实现服务的负载均衡和服务发现。当客户端访问 Service 时,请求会被 kube - proxy 转发到后端的 Pod 上。
 
如何查看Kubernetes集群的状态?
怎样为Kubernetes集群添加或删除节点?
解释一下Kubernetes中的Pod和Service。
 
 
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示