K8s 全称 Kubernetes,中文常叫「容器编排平台」,由谷歌基于内部 Borg 系统开源,核心作用:批量管理服务器上的容器。
Docker 是打包应用的工具(把程序 + 依赖打包成镜像);K8s 是调度、运维成千上万个 Docker 容器的管理系统。
一、核心基础概念
1. 容器 vs 虚拟机
虚拟机(VM,VMware / 云主机)
完整独立系统:内核 + 操作系统 + 应用,占用资源极大,启动分钟级,扩容慢。
容器(Docker)
共享宿主机内核,只打包程序、库、配置,体积几十 MB,启动秒级,隔离轻量。 痛点:一台机器跑十几个容器还好,上百台机器、上千容器手动管理会崩溃:
- 手动启停、扩容、故障重启
- 多机器分发容器、负载均衡、滚动更新
- 存储、网络、权限统一管理 K8s 就是解决以上所有痛点的自动化管理平台
2. K8s 集群两大角色(集群 = 一堆服务器组成)
① Master 控制节点(大脑,管控集群)
集群中控中心,不跑业务程序,只负责调度、管理资源,包含 4 个核心组件:
② Node 工作节点(干活的,跑业务容器)
真正运行项目 / 服务的服务器,每个 Node 必备 3 组件:
辅助工具
kubectl:本地客户端命令行工具,我们操作 K8s 集群唯一命令工具,所有增删改查都用它。
3. K8s 最小核心资源对象(从底层到上层,循序渐进)
1)Pod(最小调度单元,重中之重)
- 定义:K8s 里最小、不可分割的单元,一个 Pod 内可装 1~N 个容器(通常只放 1 个业务容器)
- 特点:
- 同一 Pod 内所有容器共享网络、存储卷,共用 IP
- Pod 生命周期短暂:故障、扩容、更新都会销毁重建,IP 会变
- 不直接操作 Pod,业务全部通过 Deployment 管理 Pod
- 通俗举例:一个 Nginx 程序镜像 → 打包成一个 Pod
2)Deployment(无状态应用控制器,90% 业务用它)
普通人部署 Web、Java 后端、Python 项目全部用 Deployment 核心能力:
3)Service(固定访问入口,解决 PodIP 频繁变动问题)
前面说 Pod 销毁重建 IP 会变,外部 / 内部程序没法稳定访问,Service 作用:
表格
| ClusterIP(默认) | 仅集群内部互相访问(后端服务互调) |
| NodePort | 通过节点端口暴露,外部可临时测试访问 |
| LoadBalancer | 云厂商负载均衡,生产环境对外提供服务 |
| ExternalName | 映射外部第三方服务 |
4)ConfigMap / Secret(配置分离)
- ConfigMap:存放明文配置(配置文件、环境变量、参数),不打包进镜像,修改无需重建镜像
- Secret:存放敏感数据(数据库账号密码、密钥、Token),加密存储,不明文展示
5)Volume 存储卷
Pod 销毁后容器内数据全部丢失,Volume 给 Pod 挂载持久化存储:
- emptyDir:临时存储,Pod 删除数据清空
- hostPath:挂载宿主机本地目录
- PV/PVC:集群持久化存储(生产数据库必备)
6)Namespace 命名空间
集群资源隔离,相当于文件夹,用来区分环境:
- 默认 default:不指定命名空间的资源都放这里
- 示例:dev 开发环境、test 测试、prod 生产,三者资源完全隔离互不干扰


