Kubernetes的核心组件主要包括以下几个部分:
API Server:
角色与功能:作为集群的主要入口点,API Server负责处理所有对集群资源的操作请求,并协调其他组件以完成这些操作。
提供RESTful API接口:API Server为外部客户端(如kubectl命令行工具、Kubernetes控制器、自定义客户端程序等)提供统一的RESTful API接口,用于执行对集群资源的CRUD(Create、Read、Update、Delete)操作。
数据一致性与验证:API Server接收并验证客户端提交的资源定义,确保其符合Kubernetes API规范,同时维护资源版本控制和数据一致性。
存储后端对接:API Server与存储后端(通常是etcd集群)交互,将接收到的资源变更持久化存储,并从存储后端读取资源状态以响应客户端的查询请求。
集群事件记录:API Server记录并暴露集群中发生的各种事件,如资源创建、更新、删除、故障等,这些事件对于监控、审计和故障排查至关重要。
身份认证与授权:API Server支持多种身份认证机制(如X.509证书、Token、OAuth等),并可通过RBAC(基于角色的访问控制)或ABAC(基于属性的访问控制)等授权模式控制客户端对资源的访问权限。
Controller Manager:
功能:由多个控制器组成,每个控制器负责一个特定的资源类型,通过监听资源变化来触发操作,确保集群处于预期的工作状态。
示例控制器:节点控制器(Node Controller)、副本集控制器(ReplicaSet Controller)、端点控制器(Endpoints Controller)等。
Scheduler:
功能:负责为新创建的Pod选择最佳的Node节点进行部署。
调度算法:使用预选(Predicates)和优选(Priorities)算法来确定最佳的部署位置,其中预选算法根据资源需求、节点亲和性、污点和容忍度等因素过滤出可用节点,优选算法根据资源利用率、负载均衡、数据位置等因素为可用节点打分,选择得分最高的节点。
etcd:
角色:作为Kubernetes集群的存储服务,etcd负