K8S是云原生最核心的内容,也是云计算的未来,下满我就全面来详解K8S@mikechen
K8S
Kubernetes(简称K8S)是一个开源的容器编排平台,用于自动化容器化应用程序的部署、扩展和管理。
它由Google开源,现由Cloud Native Computing Foundation(CNCF)维护。

从工程视角看,K8S 主要解决的是以下问题:
容器调度问题:多个节点、多个容器,如何合理分配资源并自动调度。
应用生命周期管理:应用的部署、升级、回滚、重启、销毁自动化完成。
高可用与自愈能力:节点宕机、容器异常,系统可自动迁移与恢复。
弹性伸缩:根据负载自动扩容、或缩容实例。
K8S架构
Kubernetes 采用主从式分布式架构,主要分为控制平面(Control Plane)与节点(Node)两大部分。

K8S 采用 Master / Worker(控制平面 / 数据平面) 架构。
┌───────────────────┐
│ Control Plane │
│ API Server │
│ Scheduler │
│ ControllerManager │
│ etcd │
└─────────▲─────────┘
│
┌─────────┴─────────┐
│ Worker Node │
│ kubelet │
│ kube-proxy │
│ Container Runtime │
│ Pods │
└───────────────────┘
控制平面:负责全局管理与决策,通常运行在一个或多个主节点上。
关键组件包括 API Server、etcd、Controller Manager 与 Scheduler。
节点平面:由若干工作节点组成,负责运行容器化工作负载。
每个节点运行 kubelet、容器运行时(如 containerd、Docker)与 kube-proxy 等组件。
etcd:作为分布式键值存储,保存集群的所有状态数据。
提供强一致性保证,是整个系统的权威数据源。
K8S组件

kube-apiserver:集群的统一 API 入口。
所有操作请求通过 API Server 进行认证、授权与审计,并与 etcd 交互持久化资源对象。
etcd:持久化存储集群状态数据,支持分布式一致性与高可用。
kube-scheduler:负责将待调度的 Pod 指派到合适节点。
依据资源需求、亲和性策略及调度约束。
kube-controller-manager:汇集多种控制器。
比如: Deployment、ReplicaSet、Node Controller 等,执行控制循环以维持期望状态。

kubelet:运行于每个节点。
负责管理节点上的 Pod 生命周期、上报状态并与 API Server 同步。
kube-proxy:实现 Kubernetes 服务的网络代理与负载均衡。
管理网络规则以保证 Pod 间与外部访问。
容器运行时(Container Runtime):实际负责拉取镜像、启动与停止容器。
例如 containerd、CRI-O 或 Docker(通过 CRI)。
K8S工作流程

1:用户提交 Deployment YAML;
2:API Server 校验并写入 etcd;
3:Deployment Controller 创建 ReplicaSet;
4:ReplicaSet 创建 Pod;
5:Scheduler 选择 Node;
6:kubelet 拉取镜像并启动容器;
7:kube-proxy 配置网络规则;
8:应用对外提供服务。