Kubernetes的组成和架构

ops/2025/3/17 12:13:11/

Kubernetes(K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它由多个组件组成,这些组件可以分为两类:控制平面(Control Plane)组件和节点(Node)组件。

以下是 Kubernetes 的主要组成部分:

1. 控制平面(Control Plane)组件

控制平面组件是 Kubernetes 的大脑,负责全局管理和决策。它们通常部署在集群的主节点(Master Node)上,但也可以通过高可用性(HA)配置分布在多个节点上。

(1)API Server

  • 功能:API Server 是 Kubernetes 的核心组件,负责处理所有内部通信和外部请求。
  • 作用:它是集群的前端接口,所有其他组件(如 kubelet、kubectl 等)都通过它与集群交互。
  • 特点:支持多种客户端(如 kubectl、客户端库)和内部组件的通信。

(2)etcd

  • 功能:etcd 是一个轻量级、分布式的键值存储系统,用于持久化存储集群的状态信息。
  • 存储内容:
    • Pod 的状态和配置。
    • 服务的定义。
    • 配置信息(如 Secrets、ConfigMaps)。
  • 特点:高可用性部署时,etcd 集群通常需要奇数个节点(如 3 或 5)以避免脑裂问题。

(3)Controller Manager

  • 功能:Controller Manager 是一个后台线程,负责运行控制器进程。
  • 常见控制器:
    • Node Controller:负责管理节点的生命周期,检测节点的健康状态。
    • Replication Controller:确保指定数量的 Pod 副本在运行。
    • Job Controller:管理一次性任务(如批处理作业)。
    • DaemonSet Controller:确保每个节点上运行一个指定的 Pod 副本。
    • StatefulSet Controller:管理有状态应用的部署。
  • 特点:控制器是 Kubernetes 的核心调度逻辑,确保集群状态符合用户的期望。

(4)Scheduler

  • 功能:Scheduler 负责将新创建的 Pod 分配到合适的节点上。
  • 调度策略:
    • 根据资源需求(CPU、内存)选择节点。
    • 考虑亲和性和反亲和性规则(如 Pod 之间的亲和性、节点的标签)。
    • 支持自定义调度器。
  • 特点:调度器的目标是高效利用集群资源,同时满足应用的运行需求。

2. 节点(Node)组件

节点是运行容器化应用程序的工作机器,可以是物理机或虚拟机。节点组件负责管理 Pod 的生命周期和容器运行时。

(1)Kubelet

  • 功能:Kubelet 是在集群中每个节点上运行的代理,负责管理 Pod 和容器的生命周期。
  • 作用:
    • 确保容器都运行在 Pod 中。
    • 从 API Server 获取 Pod 的配置信息。
    • 上报节点和 Pod 的状态信息。
    • 执行容器的启动、停止等操作。
  • 特点:Kubelet 是 Kubernetes 在节点上的核心组件,与容器运行时(如 Docker、containerd)紧密集成。

(2)Kube-proxy

  • 功能:Kube-proxy 是 Kubernetes 网络代理,运行在每个节点上。
  • 作用:
    • 维护节点上的网络规则,允许网络会话内/跨节点通信。
    • 支持负载均衡,将流量转发到后端服务。
    • 实现 Kubernetes 的服务抽象(如 ClusterIP、NodePort)。
  • 特点:Kube-proxy 可以使用 iptables 或 IPVS 实现高效的网络转发。

(3)容器运行时(Container Runtime)

  • 功能:容器运行时负责运行容器
  • 常见运行时:
    • Docker:曾经是最常用的容器运行时,但 Kubernetes 也在逐渐支持其他运行时。
    • containerd:由 Docker 团队开发的轻量级容器运行时,性能更好。
    • CRI-O:专为 Kubernetes 设计的容器运行时,专注于轻量级和高性能。
  • 特点:容器运行时是 Kubernetes 的基础,负责容器的生命周期管理。

3. 其他重要组件

除了控制平面和节点组件,Kubernetes 还有一些其他重要组件和概念:

(1)kubectl

  • 功能:kubectl 是 Kubernetes 的命令行工具,用于与 API Server 交互。
  • 作用:
    • 部署应用。
    • 管理资源(如 Pod、Service、Deployment)。
    • 查询集群状态。
  • 特点:kubectl 是用户与 Kubernetes 集群交互的主要工具。

(2)Pod

  • 功能:Pod 是 Kubernetes 的最小部署单元,可以包含一个或多个容器
  • 特点:
    • Pod 内的容器共享网络命名空间和存储卷。
    • Pod 是 Kubernetes 调度的基本单位。

(3)Service

  • 功能:Service 是 Kubernetes 的网络抽象,用于定义一组 Pod 的逻辑集合和访问策略。
  • 类型:
    • ClusterIP:仅在集群内部可访问。
    • NodePort:将服务暴露到节点的特定端口。
    • LoadBalancer:通过云服务提供商的负载均衡器暴露服务。
    • ExternalName:将服务映射到外部域名。

(4)Ingress

  • 功能:Ingress 是一种 API 对象,用于管理外部访问集群内服务的规则。
  • 作用:
    • 提供基于 HTTP/HTTPS 的负载均衡。
    • 支持域名路由和路径路由。
  • 特点:Ingress 需要 Ingress Controller(如 Nginx Ingress Controller)来实现。

(5)ConfigMap 和 Secret

  • ConfigMap:用于存储配置信息(如配置文件、环境变量)。
  • Secret:用于存储敏感信息(如密码、证书)。
  • 特点:两者都可以被 Pod 使用,但 Secret 会加密存储。

4. 总结

Kubernetes 的核心组件包括控制平面(API Server、etcd、Controller Manager、Scheduler)和节点组件(Kubelet、Kube-proxy、容器运行时)。此外,还有辅助工具(如 kubectl)和重要概念(如 Pod、Service、Ingress、ConfigMap、Secret)。这些组件协同工作,实现了容器化应用的高效管理和自动化运维。


http://www.ppmy.cn/ops/166487.html

相关文章

Sublime Text 2.0.2 安装与汉化指南:从下载到中文包配置的完整教程

Sublime Text 是一款轻量级、高性能的代码编辑器,深受开发者喜爱。Sublime Text 2.0.2 是一个较旧的版本,但仍然可以满足基本的代码编辑需求。以下是关于 Sublime Text 2.0.2 的安装、中文包配置以及使用方法的详细指南。 1. 下载 Sublime Text 2.0.2 提…

使用OpenCV和MediaPipe库——抽烟检测(姿态监控)

目录 抽烟检测的运用 1. 安全监控 (1) 公共场所禁烟监管 (2) 工业安全 2. 智能城市与执法 (1) 城市违章吸烟检测 (2) 无人值守管理 3. 健康管理与医疗 (1) 吸烟习惯分析 (2) 远程监护 4. AI 监控与商业分析 (1) 保险行业 (2) 商场营销 5. 技术实现 (1) 计算机视…

图论的基础知识:平凡图、简单图、连通图、平面图、完全图、对偶图、同构图

一、平凡图 平凡图是图论中最简单的图,其定义如下: 平凡图(Trivial Graph):仅包含一个顶点且没有任何边的图。 也就是说,一个平凡图满足: 顶点集合 ( V ) 的大小为 1(即 (|V| 1…

VS2022输入 scanf 报错解决方法

1.第一种解决办法(不推荐) •将 scanf 替换为 scanf_s •scanf_s 是VS提供的一个函数,scanf_s函数的使用和scanf是有区别的 •scanf_s 是VS提供的一个函数,其他的编译器可能不认识这个函数,那么我们所写的代码就存在跨…

鸿蒙next 多行文字加图片后缀实现方案

需求 实现类似iOS的YYLabel之类的在文字后面加上图片作为后缀的样式,多行时文字使用…省略超出部分,但必须保证图片的展现。 系统方案 在当前鸿蒙next系统提供的文字排版方法基本没有合适使用的接口,包括imagespan和RichEditor,根据AI的回…

电子元器件的假冒翻新防护

1.定义 假冒产品也称作仿制品、伪造产品或赝品,它被刻意隐瞒了真实身份,被当作真品出售。美国汽车工程师协会(SAE)给出了假冒伪劣电子元器件的定义:假冒伪劣电子元器件是指未经授权或许可的仿制品或替代品,或者是供应链中的供应商故意提供不符合原产品材…

数学建模历程之初见

第一次接触数学建模是在上大学前,当时只是听过。起源于我在大学的老乡群里聊天,由于当时年轻有点傻,说的话太多了,什么都问哈哈哈哈哈。 后来有个学长从老乡群里加我,问我怎么话那么多,你们懂当时对我幼小…

【unity】GPU顶点动画

unity顶点动画 工具篇模型合并生成动画数据工具调用:Shader处理 工具篇 模型合并 根据原模型创建预制件: 清理旧的合并结果,创建新容器对象 PS:注意 DestroyImmediate仅在 Editor 模式下有效,运行时需用Destroy var…