K8s组件全解析,你需要知道的一切秘密


K8s组件全解析,你需要知道的一切秘密

文章插图
当你部署完 Kube.NETes,便拥有了一个完整的集群 。
Kubernetes,作为目前最流行和广泛采用的容器编排和管理平台,背后有一系列强大的组件,共同协作以实现容器化应用的自动化部署、弹性扩展、服务发现和负载均衡等关键功能 。本文将介绍 Kubernetes 集群中的主要组件 , 揭示它们的作用和相互关系,为您提供关于 Kubernetes 内部工作原理的深入理解 。
安装前有几个概念要了解下
  • Node(节点): 在 Kubernetes 中,节点是集群中的工作机器 。每个节点上都运行着容器,由 Kubernetes 管理 。
  • API Server(API 服务器): API 服务器是 Kubernetes 集群控制平面的前端,处理来自用户和其它组件的 API 请求,验证请求并将配置数据持久化 。
  • kubelet: kubelet 是运行在每个节点上的代理,它负责与 Master 节点通信,确保节点上运行的容器处于预期状态 。
  • kube-proxy: kube-proxy 负责维护节点上的网络规则,以及为服务提供负载均衡和代理功能,以确保服务之间的网络通信 。
  • etcd: etcd 是一个分布式键值存储系统 , 用于保存集群的配置数据、状态和元数据 。它是 Kubernetes 控制平面中的重要组件之一 。
  • Scheduler(调度器): 调度器负责将新创建的 Pod 分配到合适的节点上,考虑节点资源和约束等因素来进行调度决策 。
  • Controller Manager(控制器管理器): 控制器管理器包含多个控制器 , 用于监控集群状态的变化 , 并根据所需的状态进行调整 。例如 , Replication Controller 控制器负责维护副本数 。
1、kube-apiserverkube-apiserver 是 Kubernetes 控制平面的前端,扮演着用户和其它组件与集群交互的入口 。它处理来自客户端、命令行工具和控制器的 API 请求,执行验证、授权和数据持久化,将集群的配置状态存储在 etcd 中 。
kube-apiserver 的功能和稳定性对于整个集群的可靠性至关重要 。
功能和作用:
  • API 前端:kube-apiserver 为 Kubernetes 集群提供了一个统一的 API 入口,允许用户、命令行工具和各种组件通过 RESTful API 与集群进行交互 。这包括创建、更新和删除资源对象 , 如 Pod、Service、Deployment 等 。
  • 认证和授权:kube-apiserver 负责验证请求的身份,确保只有经过身份验证的用户和组件才能访问 API 。此外,它也负责授权,根据用户的权限来决定是否允许请求对资源的操作 。
  • 数据持久化: 集群的配置数据和状态信息存储在 etcd 中,而 kube-apiserver 负责与 etcd 进行通信,将配置数据持久化到 etcd 中 , 以及从 etcd 中读取数据 。
  • 资源管理:kube-apiserver 负责监控资源的状态和变化,并在资源状态发生变化时,通知控制器和其他组件进行相应的操作 。这有助于保持集群中各个资源的一致性和期望状态 。
  • 扩展性和自定义:kube-apiserver 支持多版本 API , 允许用户自定义资源类型和自定义控制器 , 以满足特定的业务需求 。
2、etcdetcd 是 Kubernetes 的分布式键值存储系统,被用于保存集群的配置数据、状态和元数据 。作为 Kubernetes 控制平面的持久化存储,etcd 的可靠性和一致性对整个集群的稳定运行至关重要 。
etcd 的主要特点包括: