Kubernetes 核心概念与架构简记

发表于 43 秒前  1 次阅读


文章目录

Kubernetes(K8s)是一个生产级的容器编排平台,提供分布式系统运行所需的弹性伸缩、故障转移和部署管理能力。其核心能力通过内置组件实现,无法满足的场景可通过插件扩展。

一、核心特性

**服务发现与负载均衡** Kubernetes 为每个 Pod 分配独立 IP,并为一组 Pod 提供统一的 Service DNS。当新容器加入或退出时,Service 自动感知并调整流量分发,实现动态负载均衡。

**存储编排** 支持自动挂载本地存储、云存储(如 AWS EBS、GCE PD、NFS 等),可按声明式配置自动创建和销毁存储卷。

**自动部署与回滚** 通过声明式配置描述期望状态,Kubernetes 逐步将实际状态调谐为目标状态。支持滚动更新、按版本回滚,以及暂停/恢复部署。

**自动装箱计算** 用户只需声明容器的 CPU 和内存 requests/limits,Kubernetes 调度器会自动为 Pod 选择满足资源需求的最优节点。

**自我修复** 控制平面持续监控所有节点和 Pod。当容器崩溃或节点故障时,自动重新调度 Pod 到健康节点,保证副本数符合期望。

**水平扩缩容** 支持手动和自动(HPA/VPA)对 Deployment、StatefulSet 等资源进行扩缩容。

二、工作模式

Kubernetes 集群采用 **多 Master + 多 Worker** 架构(N≥1),所有组件通过 API Server 通信,各组件职责单一、松耦合。

三、组件架构

控制平面组件(Control Plane)

管理集群全局状态,通常部署在 Master 节点上。

**kube-apiserver** Kubernetes 的核心网关,所有组件交互的唯一入口。对外暴露 RESTful HTTP API,负责认证、鉴权、准入控制和数据持久化。

**etcd** 具备一致性和高可用的分布式键值存储,保存集群所有配置数据和状态信息。所有通过 API Server 的写操作最终都持久化到 etcd。

**kube-scheduler** Watch API Server 中未被调度的 Pod,根据资源需求、亲和性、污点容忍等策略选择合适的 Worker 节点,将绑定结果写回 API Server。

**kube-controller-manager** 运行一组内置控制器的集合(Deployment Controller、Node Controller、Endpoint Controller 等)。每个控制器都是一个独立的控制循环,持续将资源当前状态向期望状态调谐(Reconcile)。

**cloud-controller-manager(可选)** 与云平台 API 集成,用于管理云资源(如负载均衡器、云存储、节点自动发现)。仅在云环境部署时需要。

Node 组件

运行在每个 Worker 节点上,维护 Pod 运行环境。

**kubelet** 节点上的核心代理。根据 API Server 下发的 PodSpec 创建、启动、监控容器,并定期上报节点和 Pod 状态给 API Server。

**kube-proxy** 维护节点上的网络规则(iptables 或 IPVS 模式),将 Service 的 ClusterIP 流量转发到后端 Pod,实现 Service 的负载均衡。

**容器运行时(Container Runtime)** 负责实际运行容器的底层软件,如 containerd、CRI-O 等,遵循 CRI(Container Runtime Interface)标准。

四、组件交互流程

以创建一个 Pod 为例:

1. 用户通过 **kubectl** 向 **kube-apiserver** 提交 Pod 创建请求 2. API Server 验证请求合法性,将 Pod 对象持久化到 **etcd** 3. **kube-scheduler** 通过 watch 机制发现未被调度的 Pod,选择最优节点后将绑定信息写回 API Server 4. 对应节点的 **kubelet** watch 到分配给自己的 Pod,调用容器运行时创建容器 5. **kube-controller-manager** 中的各种控制器持续监控资源状态,当实际状态偏离期望状态时执行调谐操作

关键原则:**所有组件只与 API Server 通信,不直接互相调用** — API Server 是集群唯一的"信息中枢"。

简记。

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

scanz个人博客