K8S是云原生的核心,也是云计算的未来,下满我来详解K8S核心原理@mikechen
K8S
Kubernetes(常简称为K8S),是当前云原生时代最重要的容器编排平台。
K8S,已经成为事实上的容器编排标准,几乎所有大型互联网企业、云化改造项目,都会选择K8S作为核心基础设施。
它的目标是:让应用像水和电一样可用。
比如,可以自动化部署:无需手动操作即可快速上线服务。
以及,弹性伸缩,可以根据流量动态调整服务“副本数”。
还可以,高可用,比如:节点宕机、容器异常时能自动恢复。
K8S核心原理
K8S由两类核心角色组成:控制平面(Master) 和 工作节点(Node)。
控制平面是集群的“大脑”,负责维护整个集群的期望状态。
工作节点是集群中的工作机器,负责运行容器化应用。
K8S实现原理,如下图所示:
API Server
API Server:所有操作的统一入口,你可以把它理解成 K8S的大门、和守门人。
所有组件,比如:kubectl、控制器、调度器、kubelets…等等,都与API Server通信。
Controller Manager
Controller Manager 是一组控制器进程的集合,负责让集群的实际状态逐渐靠近用户的期望状态。
例如:
ReplicaSet Controller 保证 Pod 的副本数与期望一致
Node Controller 负责发现节点故障并做处理
Endpoint Controller 负责维护 Service 与 Pod 的映射关系
它的工作机制就是不停地 watch API Server 的状态 → 对比期望状态 → 执行修正操作。
可以把它理解成 K8S的“自动化运维工程师”。
Scheduler
Scheduler:负责把Pod调度到合适的Node上。
Scheduler 的核心任务是:把新创建的 Pod 分配到合适的 Node 节点上。
调度时会考虑:节点的资源情况(CPU、内存等)。
选定节点后,Scheduler 会把结果写回 API Server,之后由目标节点的 Kubelet 负责真正运行 Pod。
总之,可以把它理解成 K8S的人事部门,负责“把员工分配到合适的岗位”。
etcd
etcd 是一个高可用的分布式键值存储,专门用于保存集群的状态数据。
保存内容包括:Pod 副本数、Service 配置、节点信息、网络策略等。
API Server 的所有持久化数据,最终都会落到 etcd 中。
由于 etcd 的关键性,通常会做高可用部署(多副本、容灾)。
总之,etcd 相当于 K8S的数据库。
工作节点(Node)
工作节点是集群中的工作机器,负责运行容器化应用(Pod)。
Kubelet:负责Pod的运行和健康检查。
Kube-Proxy:实现Service与Pod间的网络转发。
容器运行时:支持Docker、Containerd等。
整体实现,如下图所示:
K8S工作流程,如下:
用户通过API Server提交Pod、Deployment等资源定义请求。
API Server验证请求后传递给Controller Manager和Scheduler。
Scheduler决定Pod运行的节点,并通知kubelet。
kubelet根据通知在本节点运行对应容器。