随着云原生技术的迅速发展,Kubernetes已成为容器编排领域的事实标准。深入理解K8s核心组件不仅是运维工程师的必备技能,更是架构设计的关键基石。
控制平面组件
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。
调度流程:
核心功能:
-
• 资源需求和节点资源匹配
-
• 亲和性/反亲和性调度
-
• 污点容忍度检查
⚠️
注意事项
:可以通过自定义调度器扩展调度策略,满足特定场景需求。
工作节点组件(Worker Node)
1. Kubelet
Kubelet是每个节点的agent
,负责维护容器的生命周期。