背景 · 部署方式的演变
容器革命并不是一夜之间发生的,而是服务器部署方式不断进化的结果。
传统部署 → 虚拟化 → 容器化:技术演进三阶段
一、传统物理机部署(落后但曾经主流)
典型特点:
应用直接安装在物理机上
资源不可隔离
一个程序跑满 CPU,其他应用全被拖垮
扩展困难,维护成本高
“一机一应用”导致大量资源浪费
总结:不隔离、不弹性、不好用。
二、虚拟化部署(第一次实现隔离)
虚拟化技术带来了革命性变化:
一台物理机上运行多个虚拟机(VM)
每个 VM 拥有独立 CPU、内存
应用隔离性更强
资源利用率提升
支持更灵活的扩展
但仍有问题:
❌ 每个 VM 都需要一个完整的操作系统 ❌ 冗余多、体积大
级时代真正到来)
容器是新一代应用运行方式:
共享宿主机操作系统
启动速度快、资源占用低
跨平台、跨环境一致运行
更适合 DevOps、微服务架构
容器的两个核心技术:
Namespaces:隔离环境
Cgroups:限制资源
容器带来的巨大优势:
快速构建和部署
环境一致、可迁移
高密度部署、极致资源利用率
可观察性强
微服务天然搭配
容器不是替代虚拟机,而是现代应用的最佳交付方式。

容器化带来的新问题
当系统中有几十、几百、甚至上千个容器时,会出现:
如何自动化管理容器?
容器挂了谁来拉起来?
如何弹性扩展?
如何做滚动更新?
如何发现服务和负载均衡?
答案就是:Kubernetes。
为什么使用 Kubernetes(K8s)?
Kubernetes 是容器编排的事实标准,它能够自动化管理大规模容器集群。
🔥 K8s 提供的核心能力:
✔ 服务发现 & 负载均衡
自动分配容器 IP,流量大时自动分流。
✔ 存储编排
自动挂载本地盘、云盘、网络存储。
✔ 自动部署 & 回滚
定义好“期望状态”,K8s 会自动将系统调整到目标状态。
✔ 资源调度(装箱)
根据容器需求自动调度到最合适的节点。
✔ 自我修复
容器挂了 → 自动重启 健康检查失败 → 自动替换 就绪前不对外服务
✔ 密钥与配置管理
密码、密钥等敏感信息可以安全管理,不用写进镜像。
一句话:Kubernetes 让容器集群的运维进入全自动时代。
Kubernetes 简介
Kubernetes 是一个开源的容器管理平台:
Google 2014 年开源
源自 Google 十多年 Borg 生产经验
拥有最大容器生态系统
支持所有主流云厂商
“Kubernetes”意为“舵手”,简称 k8s(中间 8 个字母)。
Kubernetes 不是什么?你可能误解了
Kubernetes 不是:
❌ PaaS 平台
❌ CI/CD 系统
❌ 数据库、中间件平台
❌ 日志监控系统
❌ 机器管理系统
❌ 单体式部署工具
Kubernetes 提供的是:
声明式 API
弹性伸缩机制
自动化调度
可插拔的组件体系
K8s 是构建云平台的基座,而不是完整的云平台本身。
Kubernetes 集群原理解析
集群架构:Master & Node 分工
🧠 控制面(Control Plane / Master)
负责“大脑级”功能:
kube-apiserver
:所有操作的入口
etcd
:存储集群状态的键值数据库
scheduler
:调度器
controller-manager
:各种控制器
💪 工作节点(Node)
负责运行应用:
kubelet
:管理 Pod
kube-proxy
:管理网络
容器运行时(containerd/Docker)
🧱 Pod:K8s 最小调度单元
一个 Pod = 一个或多个紧密耦合的容器
共享网络、存储与生命周期

Kubernetes 是如何部署一个 Tomcat 的?
当你运行:
kubectl create deploy tomcat --image=tomcat:8K8s 内部会发生 13 个步骤:
kubectl 将请求发送给 apiserver
apiserver 写入 etcd
etcd 触发事件
controller-manager 监听到新的 Deployment
生成对应 Pod 的期望状态
apiserver 写入 etcd
etcd 再触发事件
scheduler 发现“有未调度 Pod”
选择最合适节点(例如 node-02)
写回调度结果
各节点的 kubelet 获取调度事件
node-02 的 kubelet 发现需要自己运行
启动 Pod,并向 apiserver 汇报状态
Kubernetes 的核心理念:不断将“实际状态”向“期望状态”靠拢。


参与讨论
(Participate in the discussion)
参与讨论