K8S(Kubernetes)最全详解(万字图文总结)

K8S是云原生最核心的内容,下满我就全面来详解K8S@mikechen

K8S

K8S,全程是“Kubernetes”,是一个开源的容器编排平台,用于自动化应用的 部署、扩展和管理。

K8S,最早由 Google 开发,后捐赠给 CNCF,如今已经成为 云原生领域的事实标准。

K8S(Kubernetes)最全详解(万字图文总结)-mikechen

K8S 解决了在生产环境中管理大量容器的复杂性。

K8S 不仅是容器管理工具,更是一套用于构建云原生平台的基础设施。

K8S,把运维复杂度转化为可声明、可自动化管理的体系。

 

K8S架构

K8S 采用 主从架构(Master-Node 架构),如下图所示:

K8S(Kubernetes)最全详解(万字图文总结)-mikechen

Master 节点(控制平面 Control Plane):负责集群的管理与调度,相当于“大脑”。

Node 节点(工作节点 Worker Node):运行实际的容器化应用,相当于“手脚”。

 

K8S原理

所有组件通过一个统一的 API Server 进行通信,集群的当前状态和期望状态则存储在一个叫做 Etcd 的分布式数据库中。

1.API Server

API Server:这是 K8S 的核心前端。

所有内部和外部组件(如 kubectl 命令、Kubelet)都必须通过它来与集群交互。

如下图所示:

K8S(Kubernetes)最全详解(万字图文总结)-mikechen

特点:无状态、可水平扩展(通过负载均衡器对外暴露多个实例)。

集群的唯一入口,提供 RESTful API。

负责认证、鉴权、准入控制、资源…等等变更通知。

 

2. Scheduler

负责 Pod 调度,决定 Pod 运行在哪个 Node 节点。

调度过程包括过滤(筛选可用节点)、打分(选择最优节点)、绑定(分配 Pod)。

 

3. Controller Manager

负责多种控制循环(Control Loop),如节点控制器、复制控制器、端点控制器等。

K8S(Kubernetes)最全详解(万字图文总结)-mikechen

例如,Deployment Controller :负责确保 Pod 的副本数量,始终符合你设置的数量。

 

4. etcd

分布式一致性键值存储,保存集群的持久化状态(所有 API 对象)。

提供强一致性(Raft 协议),对高可用控制面至关重要。

 

5.kubelet

Kubelet:这是每个节点上的核心代理。

它与主节点上的 API Server 通信,接收 Pod 的配置清单,并确保这些 Pod 中描述的容器在节点上运行和健康。

K8S(Kubernetes)最全详解(万字图文总结)-mikechen

它还负责向 API Server 报告节点和 Pod 的状态。

 

6.kube-proxy

Kube-proxy:这是一个网络代理,负责管理节点上的网络规则。

它确保 Service 的请求能够正确地路由到后端的 Pod 上,实现 Pod 之间的网络通信和负载均衡。

 

7.容器运行时(Container Runtime)

K8S(Kubernetes)最全详解(万字图文总结)-mikechen

Container Runtime(容器运行时):这是真正运行容器的引擎。Kubelet 依赖它来创建、启动和停止容器。

最常见的容器运行时是 Docker,但现在也支持 containerd 和 CRI-O 等。

 

K8S工作流程

整体工作流程,如下:

K8S(Kubernetes)最全详解(万字图文总结)-mikechen

用户通过 kubectl 或 API Server 提交应用配置。

Master 组件(Scheduler、Controller Manager)做决策并存储状态(etcd)。

Node 节点上的 Kubelet 执行任务,启动 Pod 并汇报状态。

Kube-Proxy 负责服务发现与负载均衡,保证 Pod 可访问。

评论交流
    说说你的看法