3-3-1、k8s面试题-Kubernetes 的主要组件及其交互方式
·
Kubernetes(K8s)是一个开源的容器编排平台,其架构由多个核心组件构成,这些组件通过协同工作实现容器化应用的部署、管理和扩展。以下是 Kubernetes 的主要组件及其交互方式的详细解析:
一、控制平面(Control Plane)组件
控制平面负责管理 Kubernetes 集群的全局状态,包括节点调度、服务发现、配置管理等。
1. API Server(kube-apiserver)
- 功能:Kubernetes 的核心接口,接收并处理所有集群操作请求(如创建 Pod、服务等),是外部与集群交互的唯一入口。
- 交互方式:
- 作为 “中央枢纽”,与所有其他组件通信,提供 RESTful API。
- 数据读写操作通过 etcd 实现,确保集群状态的一致性。
- 接收来自 Kubelet 的节点状态报告,以及来自 Controller Manager 和 Scheduler 的操作请求。
2. etcd
- 功能:分布式键值存储数据库,用于持久化存储 Kubernetes 集群的配置和状态数据(如 Pod 定义、节点信息等)。
- 交互方式:
- 仅通过 API Server 访问,避免其他组件直接操作数据,保证数据一致性。
- 支持数据多副本复制,确保高可用性和容错性。
3. Controller Manager(kube-controller-manager)
- 功能:运行多个控制器(Controller),自动管理集群状态,确保实际状态与期望状态一致。
- 核心控制器包括:
- 节点控制器(Node Controller):监控节点状态,处理节点添加 / 删除。
- 副本控制器(Replication Controller):维护 Pod 副本数。
- 服务控制器(Service Controller):管理服务与端点的映射。
- 资源配额控制器(Resource Quota Controller):控制命名空间的资源使用。
- 核心控制器包括:
- 交互方式:
- 通过 API Server 监听集群状态变化,触发相应的控制逻辑。
- 向 API Server 提交更新请求,调整资源状态(如创建新 Pod)。
4. Scheduler(kube-scheduler)
- 功能:负责将 Pod 调度到合适的工作节点(Worker Node)上,基于节点资源、亲和性规则等策略进行决策。
- 交互方式:
- 从 API Server 获取待调度的 Pod 信息。
- 根据调度算法(如资源利用率、节点标签匹配)选择目标节点。
- 将调度结果通过 API Server 写入 etcd,由 Kubelet 执行后续部署。
二、工作节点(Worker Node)组件
工作节点负责运行容器化应用,是 Pod 的实际宿主。
1. Kubelet
- 功能:工作节点的核心代理,负责管理 Pod 的生命周期,确保 Pod 按定义运行。
- 交互方式:
- 从 API Server 获取分配到该节点的 Pod 清单,调用 Container Runtime 创建容器。
- 向 API Server 报告节点状态和 Pod 运行情况(如资源使用、健康状态)。
- 执行容器健康检查(Liveness/Readiness Probe),并反馈结果至 API Server。
2. Container Runtime
- 功能:运行容器的软件(如 Docker、containerd、CRI-O),负责拉取镜像、启动和管理容器。
- 交互方式:
- 通过 Kubelet 的指令创建、停止容器。
- 向 Kubelet 反馈容器运行状态。
3. Kube Proxy(kube-proxy)
- 功能:实现服务网络代理和负载均衡,确保 Pod 之间的网络通信。
- 交互方式:
- 监听 API Server 的服务和端点变化,更新节点上的网络规则(如 iptables、IPVS)。
- 处理客户端对服务的请求,将流量转发到对应的 Pod。
三、组件间的交互流程示例
以 “创建 Pod” 为例,看各组件如何协作:
- 用户通过 API Server 提交 Pod 定义。
- API Server 将 Pod 信息存入 etcd,并通知其他组件。
- Scheduler 发现待调度的 Pod,根据节点状态选择合适的工作节点。
- API Server 更新 Pod 的调度信息到 etcd。
- 目标节点的 Kubelet 监听 API Server,获取 Pod 定义后调用 Container Runtime 创建容器。
- Kubelet 向 API Server 报告 Pod 状态,Controller Manager 确保 Pod 副本数符合预期。
- Kube Proxy 根据服务配置,为 Pod 设置网络转发规则,确保服务可访问。
四、附加组件(Optional Components)
- CoreDNS:为服务和 Pod 提供域名解析,实现服务发现。
- Dashboard:Web 界面,用于可视化管理集群和应用。
- Ingress Controller:管理外部对集群内服务的 HTTP/HTTPS 访问,实现路由和负载均衡。
- Metrics Server:收集节点和 Pod 的资源使用指标,用于 HPA(水平自动扩缩容)。
五、总结:组件交互的核心逻辑
Kubernetes 的组件交互遵循 “声明式 API 驱动” 和 “控制循环(Control Loop)” 模式:
- 声明式 API:用户通过 API Server 声明 “期望状态”,组件自动实现 “实际状态” 与 “期望状态” 的匹配。
- 控制循环:Controller Manager、Kubelet 等组件持续监控集群状态,主动修正偏差(如 Pod 崩溃后重建)。
这种架构设计确保了 Kubernetes 的高可用性、可扩展性和自动化管理能力。
更多推荐


所有评论(0)