图片
控制平面组件
1. API Server
API Server是整个集群的统一入口,负责处理所有REST API请求。它实现了认证、授权、准入控制等重要安全机制。
高级特性:
• 支持水平扩展
• 提供了Watch机制,支持增量更新
• 实现了RBAC细粒度权限控制
⚠️ 注意事项:在高可用架构中,建议至少部署3个API Server实例,并通过负载均衡确保服务可用性。
2. etcd
etcd是集群的数据库,采用键值对格式存储集群的所有配置信息和状态数据。
核心特性:
• 强一致性(基于Raft协议)
• 提供watch机制
• 支持数据加密存储
⚠️ 注意事项:生产环境中,etcd至少需要3个节点构建高可用集群,并且建议使用SSD存储。
3. Controller Manager
Controller Manager是集群的大脑,负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。
主要控制器:
• ReplicaSet Controller:维护Pod副本数
• Node Controller:管理节点状态
• Endpoint Controller:服务发现相关
• ServiceAccount Controller:管理默认账户
⚠️ 注意事项:不同控制器的循环周期可以通过参数调整,需要根据集群规模合理设置。
4. Scheduler
Scheduler负责Pod的调度决策,通过复杂的算法选择最适合的Node运行Pod。
调度流程:
新建Pod过滤阶段打分阶段绑定阶段Pod运行
核心功能:
• 资源需求和节点资源匹配
• 亲和性/反亲和性调度
• 污点容忍度检查
⚠️ 注意事项:可以通过自定义调度器扩展调度策略,满足特定场景需求。
工作节点组件(Worker Node)
1. Kubelet
Kubelet是每个节点的agent,负责维护容器的生命周期。
核心职责:
• 接收并执行Master的指令
• 管理容器和镜像
• 上报节点和Pod状态
⚠️ 注意事项:建议对Kubelet的资源预留进行合理配置,避免节点资源耗尽。
2. Container Runtime
容器运行时引擎,负责真正的容器创建和管理工作。
支持的运行时:
• Containerd(推荐)
• CRI-O
• Docker(已弃用)
⚠️ 注意事项:建议使用Containerd,它更轻量且性能更好。
3. Kube-proxy
Kube-proxy负责集群的网络代理,实现了Service的抽象。
工作模式:
• iptables(默认)
• IPVS(高性能)
• userspace(已弃用)
⚠️ 注意事项:大规模集群建议使用IPVS模式,性能更好。