你有没有遇到过这种情况?
你写了一个很棒的Web应用,用Docker打包好部署到服务器,跑得很顺利。
然后老板说:用户太多了,要加两台服务器。
你开始头疼——两个服务器上的容器怎么同步?一个崩了怎么自动重启?流量怎么分配?
这时候,Kubernetes(简称K8s)就派上用场了。
K8s 到底是什么?
Kubernetes是Google在2014年开源的容器编排平台。
用大白话说:Docker负责把一个应用打包成容器,Kubernetes负责帮你管理成百上千个这样的容器。
想象你有一百个外卖骑手(容器),他们分散在城市各处(不同服务器)。如果没有调度中心,你会累死——哪个骑手接哪个单、哪条路最近、骑手累了怎么办,全要你操心。
Kubernetes就是那个调度中心。它知道所有骑手在哪、谁有空、谁在休息,自动把订单分配给最合适的骑手。
K8s 的核心概念
Pod:最小单元
K8s里最小部署单位叫Pod。一个Pod可以跑一个或多个容器。
就像快递盒,里面可能装一件商品,也可能装好几件小商品。大多数情况下,一个Pod跑一个容器就够。
Deployment:怎么部署
Deployment决定了你部署几个副本、用哪个镜像、怎么更新。
比如你说"部署3个Nginx容器",K8s会确保任何时候都有3个在跑。如果你更新了镜像,它会滚动替换,保证服务不中断。
Service:怎么访问
Pod有IP,但容器一重启IP就变了。怎么办?
Service给一组Pod提供一个固定的入口地址。就像你公司的总机号码,不管员工换不换工位,总机永远一样。
Node:物理服务器
Node是实际跑Pod的服务器(物理机或虚拟机)。K8s集群里可以有很多Node。
Cluster:整个集群
所有Node加上控制中心(Master节点)组成的整体,就叫集群。
K8s 能帮你做什么?
自动扩缩容:流量高峰自动加容器,低谷自动减。省的钱可能就是几万块服务器费用。
自我修复:容器崩了自动重启,节点坏了自动把容器搬到其他节点。你基本不用半夜爬起来救火。
滚动更新:新版本上线时,一个一个替换旧版本,永远有服务在跑,用户无感知。
负载均衡:流量自动分配到多个Pod,不会让某一台服务器累死。
声明式配置:你告诉K8s"我要什么状态",它负责让它变成那样。不用手动一步一步操作。
简单理解 K8s 的工作流程
- 你写一个YAML文件,描述"我要3个Nginx容器,每个占512MB内存"
- 把文件提交给K8s(
kubectl apply -f nginx.yaml) - K8s的Master节点收到请求,查找有空位的Node
- 在合适的Node上创建Pod,启动容器
- 创建Service,把外部流量引导到这些Pod
- 定期检查状态——如果某个Pod挂了,自动重建
整个过程你只需要写配置文件,剩下的交给K8s。
K8s 和 Docker 是什么关系?
Docker负责打包和运行容器,K8s负责调度和管理容器。
两者不冲突,配合使用效果最好。就像Docker是砖头,K8s是施工队——砖头再好,没有施工队也盖不起高楼。
2026年的开发标准流程:用Docker打包应用,用K8s部署运行。
想快速上手吗?
本地学习K8s不需要买服务器。用 Minikube 或 Kind 在你的电脑上跑一个单节点集群,几分钟就能体验。
生产环境的话,国内各大云厂商都提供托管版K8s(阿里云ACK、腾讯云TKE、华为云CCE),不用自己维护Master节点,开箱即用。
Navbox 上也有 Kubernetes 配置生成工具,可以辅助生成常用的YAML配置文件。
一句话总结
Kubernetes是容器时代的操作系统——Docker把应用装进容器,Kubernetes帮你管理这些容器集群,自动搞定扩缩容、故障恢复和流量分发。
学会了它,你就从"运维一个人"变成了"管理系统本身"。