什么是Kubernetes?

一、Kubernetes 简介
Kubernetes(简称 K8s)是 Google 开源的一个 容器编排系统,目前由 CNCF(Cloud Native Computing Foundation) 维护。
它的目标是让容器化应用的 部署、扩缩、运维 更自动化,解决单机 Docker 无法很好支持 大规模应用管理 的问题。
👉 关键词:自动化、弹性伸缩、服务发现、跨机器编排
二、Kubernetes 的发展背景
-
单机部署时代
-
应用直接运行在物理机 → 难以隔离、浪费资源。
-
-
虚拟机时代
-
VMware、KVM 等虚拟机解决了资源隔离,但启动慢、运维复杂。
-
-
容器时代(Docker)
-
容器轻量级,启动快,适合微服务架构。
-
问题:容器编排、调度、运维复杂,需要更高层次的管理。
-
-
Kubernetes 出现
-
来源:Google 内部的 Borg/Omega 系统经验。
-
提供完整的容器生命周期管理。
-
三、Kubernetes 核心概念
1. 基础对象
-
Pod
最小部署单元,包含一个或多个容器(共享存储和网络)。 -
Service
把一组 Pod 对外暴露为一个网络服务,支持负载均衡和服务发现。 -
Volume
容器共享的存储卷,解决数据持久化问题。 -
Namespace
逻辑隔离,常用于多租户环境。
2. 高级对象
-
Deployment
管理无状态应用(如 Web 服务),支持滚动更新、回滚。 -
StatefulSet
管理有状态应用(如 MySQL、Kafka),Pod 有固定顺序和唯一标识。 -
DaemonSet
在每个节点运行一个 Pod(如日志收集、监控 Agent)。 -
Job / CronJob
一次性任务 / 定时任务。
3. 控制器
-
ReplicaSet:确保某个 Pod 副本数量。
-
Horizontal Pod Autoscaler (HPA):根据负载自动扩缩 Pod。
四、Kubernetes 架构
Kubernetes 采用 主从架构(Master / Worker)。
1. 控制平面(Control Plane)
运行在 Master 节点,主要组件:
-
API Server:所有操作的入口(kubectl、UI、API 调用)。
-
etcd:分布式键值存储,保存集群状态。
-
Scheduler:负责 Pod 调度,决定 Pod 运行在哪个 Node。
-
Controller Manager:执行各种控制器逻辑(Deployment、Node 管理等)。
2. 工作节点(Worker Node)
运行应用的地方,主要组件:
-
kubelet:节点上的代理,负责 Pod 的生命周期。
-
kube-proxy:实现 Service 的负载均衡与网络代理。
-
Container Runtime:容器运行时(Docker、containerd、CRI-O)。
3. 网络模型
-
每个 Pod 都有唯一 IP(CNI 插件实现,比如 Flannel、Calico)。
-
Pod 与 Pod 跨 Node 通信无需 NAT。
-
Service 提供稳定访问入口。
五、工作流程(示例)
-
用户执行命令:
kubectl create deployment nginx --image=nginx -
API Server 接收请求 → 写入 etcd。
-
Controller Manager 发现需要创建 Pod。
-
Scheduler 选择合适的 Node。
-
kubelet 在目标 Node 启动容器。
-
kube-proxy 配置网络规则,让外部流量能访问该 Pod。
六、Kubernetes 特性
-
自愈能力:Pod 异常退出会自动拉起。
-
滚动更新与回滚:更新应用时逐个替换 Pod,出错时回退。
-
自动扩缩:支持 Pod 数量自动调整。
-
服务发现与负载均衡:内置 DNS 和代理机制。
-
存储编排:自动挂载 PV/PVC。
-
多租户支持:通过 Namespace、RBAC 权限控制。
七、Kubernetes 的优缺点
| 优点 | 缺点 |
|---|---|
| 自动化运维(自愈、扩缩容) | 学习曲线陡峭 |
| 跨平台(公有云/私有云/裸机) | 集群搭建和维护复杂 |
| 微服务友好,支持 CI/CD | 资源开销大(Master 节点、etcd) |
| 社区活跃、生态丰富 | Debug 难度高,涉及网络/存储/安全 |
八、Kubernetes 应用场景
-
互联网企业:大规模微服务架构(电商、社交、视频)。
-
大数据/AI:调度 Spark、TensorFlow 分布式任务。
-
金融行业:高可用交易系统、风控系统。
-
混合云/多云:应用跨云部署,避免厂商锁定。
九、和 Docker 的关系
-
Docker 提供 容器运行时。
-
Kubernetes 是 容器编排平台,可以使用 Docker 也可以用 containerd。
👉 可以理解为:Docker 解决单个容器,K8s 解决成百上千容器的管理问题。
十、常用命令
# 查看节点 kubectl get nodes # 查看 Pod kubectl get pods -n kube-system # 部署应用 kubectl create deployment myapp --image=nginx # 扩缩容 kubectl scale deployment myapp --replicas=5 # 暴露服务 kubectl expose deployment myapp --port=80 --type=NodePort
总结
Kubernetes 是一个 容器编排和管理平台,通过自动化方式实现应用的:
-
部署
-
扩缩容
-
负载均衡
-
服务发现
-
存储管理
-
监控与运维
它已经成为 云原生的事实标准,是现代微服务架构的基石。
更多推荐



所有评论(0)