Kubernetes(K8s)的组成部分
2025-01-28 14:12 钟铧若岩 阅读(5) 评论(0) 编辑 收藏 举报Kubernetes(K8s)的组成部分
Kubernetes 主要由控制平面(Control Plane)组件和工作节点(Node)组件两大部分组成,以下是详细介绍:
控制平面组件
控制平面负责管理整个集群的全局决策,如资源调度、节点状态监控等。
- kube - apiserver
- 作为 Kubernetes 控制平面的前端接口,提供了 RESTful API 服务,是所有组件通信的枢纽。其他组件通过与
kube - apiserver
进行交互来实现对集群的管理和操作。 - 对客户端请求进行认证、授权和准入控制,确保只有合法的请求才能被处理。
- 作为 Kubernetes 控制平面的前端接口,提供了 RESTful API 服务,是所有组件通信的枢纽。其他组件通过与
- 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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)