Kubernetes简介
K8S概念和特性
部署发展历程
我们的项目部署也在经历下面的这样一个历程
传统部署 -> 虚拟化部署时代 -> 容器部署时代

- 物理机部署时代:在早期架构中,应用直接运行在物理服务器上,每台机器通常只承载一个核心业务以避免冲突。这种方式虽然性能最好,但资源利用率极低,且缺乏隔离机制,应用之间容易相互影响,扩容只能依赖增加物理设备,成本高且不具备弹性
- 虚拟机部署时代:为了解决资源利用率和隔离问题,引入了虚拟化技术,通过 Hypervisor 在一台物理机上运行多个虚拟机,每个虚拟机拥有独立的操作系统,实现了较强的隔离性和更高的资源利用率。但虚拟机本身较为笨重,启动慢、资源开销大,仍然存在一定程度的资源浪费。
- 容器部署时代:容器通过共享宿主机内核,利用 Namespace 和 Cgroups 实现进程级的隔离与资源控制,相比虚拟机更加轻量,启动速度快、部署效率高,并具备良好的可移植性。但当容器规模扩大后,管理、调度、网络和故障恢复等问题变得复杂,因此需要 Kubernetes 这样的编排系统来进行统一管理。
| |
容器的优势,本质可以收敛为4类:
- 标准化交付(最核心):容器将应用及其依赖打包成镜像,实现“一次构建,到处运行”,保证开发、测试、生产环境一致。
- 轻量高效:容器共享宿主机内核,无需完整操作系统,资源开销小,启动速度快,可以实现高密度部署。
- 易于自动化(DevOps核心):容器镜像具有不可变性,支持版本化管理,可以方便地进行持续集成、持续部署和快速回滚。
- 架构演进支撑(微服务):容器为微服务架构提供了良好的运行和交付基础,使应用可以拆分为多个独立服务并灵活部署。
| |
K8S概述
Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动化管理多主机上的容器化应用。 它通过声明式的方式,对应用的部署、扩缩容、更新和故障恢复进行统一管理,使容器集群的运维自动化。
相比传统基于脚本或虚拟机的部署方式,Kubernetes 将应用运行环境与底层基础设施解耦,通过容器实现轻量化和可移植性,同时通过编排能力解决容器规模化后的调度、网络和管理问题。
在 Kubernetes 中,多个容器会被组织成一个最小调度单位(Pod),以更好地进行管理和服务发现。
Kubernetes 的核心能力包括自动部署、自动扩缩容、自愈能力、服务发现与负载均衡,以及滚动更新与回滚。
K8S功能
① 调度能力(Scheduling)
自动将 Pod 分配到合适的节点运行
② 自愈能力(Self-healing)
自动修复异常状态,使系统始终接近期望状态
③ 自动扩缩容(Scaling)
根据负载动态调整 Pod 数量(HPA)
④ 服务发现与负载均衡
通过 Service 和 Ingress 实现访问和流量分发
⑤ 应用发布能力
支持滚动更新、灰度发布、版本回滚
⑥ 配置与存储管理
提供 ConfigMap、Secret、PV/PVC 管理配置和数据
| |
K8S架构组件
完整架构图


Kubernetes 架构组成
Kubernetes 集群由控制平面(Control Plane)和工作节点(Node)组成。
控制平面(Control Plane)/master节点架构图

Node节点架构图

k8s 集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求;
控制平面(Control Plane)
负责整个集群的管理和调度,是集群的大脑。
- API Server 集群的统一入口,所有组件都通过它进行通信,负责请求处理、认证授权以及数据存储交互。
- etcd 分布式键值存储,用于保存集群的所有状态数据,是集群的“数据库”。
- Scheduler 负责 Pod 的调度,根据资源情况和调度策略选择合适的 Node。
- Controller Manager 通过控制循环(Control Loop)不断将当前状态调整为期望状态,例如副本数控制、节点故障处理等。
工作节点(Node)
负责运行实际的应用容器。
- kubelet 运行在每个节点上的代理,负责与 API Server 通信,并管理本节点上的 Pod 生命周期。
- kube-proxy 负责网络转发,实现 Service 的负载均衡(基于 iptables 或 IPVS)。
- Container Runtime 容器运行时(如 containerd),负责容器的创建和运行。
可选组件
- Fluentd / 日志系统 用于日志采集与集中管理(非核心组件)

K8S核心概念
Kubernetes 通过一系列核心对象来管理容器化应用,这些对象可以分为运行、控制、访问和管理几个层面。
Pod(最小运行单元)
- Kubernetes 中最小的调度单位
- 由一个或多个容器组成
- 共享网络和存储
- 本身是短暂的,但在 Controller 管理下可自动恢复
Volume(存储)
- 为 Pod 提供数据持久化能力
- 可以挂载到多个容器
- 支持本地、网络和云存储
Controller(控制器)
用于维持资源的期望状态(Control Loop)
常见类型:
- Deployment(无状态应用)
- StatefulSet(有状态应用)
- DaemonSet(每节点一个)
- Job / CronJob(任务)
Deployment(最常用控制器)
- 管理 Pod 副本数量
- 支持滚动更新和版本回滚
- 通过 ReplicaSet 间接管理 Pod
Service(服务)
- 通过 Label 选择一组 Pod
- 提供稳定访问地址
- 实现服务发现和负载均衡
Label(标签)
- 用于标识资源对象
- 是 Kubernetes 进行调度、选择和管理的核心机制
Namespace(命名空间)
- 提供集群内的逻辑隔离
- 支持资源配额与访问控制
API(接口)
- Kubernetes 是一个 API 驱动系统
- 所有操作都通过 API Server 完成
Pod 为什么存在?为什么不是直接用容器?
Kubernetes 不直接调度容器,而是通过 Pod 作为最小调度单位,将一组强相关的容器封装在一起,使它们共享网络、存储和生命周期,从而解决多容器协同运行的问题。

