Kubernetes学习指北
一、 大纲
1. 了解基础概念
| 概念 | 说明 |
|---|---|
| Pod | 最小的调度单位,一个 Pod 可以包含一个或多个容器 |
| Node | Kubernetes 集群的工作节点 |
| Deployment | 管理 Pod 的副本和升级策略 |
| Service | 用于 Pod 间通信和对外暴露 |
| ConfigMap / Secret | 配置和敏感信息管理 |
| Volume | 数据卷,用于持久化数据 |
| Namespace | 命名空间,多租户环境的逻辑隔离 |
| Ingress | 对外 HTTP/HTTPS 流量管理 |
| kube-apiserver、kube-scheduler、kube-controller-manager | Master 组件,负责调度、管理集群 |
2. 核心组件及职责 (必须的核心组件)
- kube-apiserver (API 服务器)
- 作用:
- 集群的 大脑入口
- 负责 接收请求(kubectl、Dashboard、其他服务),然后转给 etcd 或控制器
- 所有组件(scheduler、controller、kubelet)都通过它通信。
- 像是办事大厅,所有人(开发、运维、调度器)都必须来这里递交申请。
- 作用:
- kube-scheduler (调度器)
* 作用:
- 负责 给 Pod 找宿主机。
- 根据 资源情况(CPU、内存)、约束(亲和性、污点)、策略 来决定 Pod 放在哪个 Node 上。 * 像是一个 派单员,根据司机(Node)的空闲情况,把订单(Pod)分配给合适的人。
- kube-controller-manager (控制器管理器)
* 作用:
- 内部包含很多 控制器(controller),比如:
- Deployment Controller:保证副本数量正确
- Node Controller:监控节点状态。
- Endpoint Controller:维护 Service → Pod 的映射。
- 核心任务是:对比实际状态和期望状态,不断修正。 * 像是一个 巡检员,不停检查「理想状态」和「现实情况」是不是一致,如果发现差错,就赶紧修正。
- 内部包含很多 控制器(controller),比如:
- kubelet (节点代理)
- 作用:
- 跑在每个 Node 上的 代理。
- 负责和 kube-apiserver 交互,接收“要运行哪些 Pod”。
- 调用底层 容器运行时(containerd、CRI-O、Docker) 来真正启动容器。
- 还会 汇报 Pod 和 Node 的运行状态。 * 像是 工地上的施工队长,接到上级(apiserver)的命令,就去调度工人(containerd)建房子(Pod)。
- 作用:
- etcd
- 作用:
- 分布式键值存储,保存集群的所有状态(Pod、Service、配置等)
- 作用:
* 像是 工地上的施工队长,接到上级(apiserver)的命令,就去调度工人(containerd)建房子(Pod)
- 容器运行时(Container Runtime,如 containerd、CRI-O、DockerShim)
- 作用:
- kubelet 本身不会直接运行容器,它要依赖运行时。
- 真正负责创建和运行容器的底层引擎。
- 常见的有
- containerd(最主流,K8s 默认推荐)
- CRI-O(轻量化,专门为 K8s 服务)
- Docker(以前常用,但现在 K8s 不直接依赖它了,而是通过 containerd) * 比喻:工人,真正搬砖盖房子(运行容器)。
- 作用:
3. 网络插件(通常必须)
- Flannel / Calico / Cilium / Weave 等
- 作用:
- Kubernetes 默认不带跨节点网络,需要 CNI 插件:
- 提供 Pod 跨节点通信的网络能力。
- 在多节点集群中 必须(单节点集群不一定需要)
4. 常用工具
- kubectl
- 集群客户端工具,用于执行命令、部署应用。
- 从严格意义上来说 不是集群必须,但管理集群时必不可少。
- kubeadm
- 安装和初始化 Kubernetes 的工具。
- kubeadm init 的时候会用静态 Pod 的方式自动在 control-plane 节点上拉取(apiserver、scheduler、controller-manager、etcd)这些镜像并启动
- 不是必须,也可以手动部署 K8s(kubeadm 只是简化安装)。
5. 环境搭建
- 方案 A:单机多节点学习(推荐)Kubernetes学习指北之单节点集群
- 方案 B:一键单机集群(开发学习) Kubernetes学习指北之单节点集群
6. 学习操作命令
- 安装 kubectl
- 常用命令:
kubectl get nodes # 查看节点 kubectl get pods # 查看 Pod kubectl get svc # 查看服务 kubectl describe pod POD # 查看 Pod 详情 kubectl logs POD # 查看容器日志 kubectl apply -f file.yaml # 创建资源 kubectl delete -f file.yaml # 删除资源
7. 部署简单应用
8. 进阶
ConfigMap / Secret / Volume:学习如何管理配置和数据
Deployment / StatefulSet / DaemonSet:理解无状态和有状态应用部署
Ingress / NetworkPolicy:掌握流量和安全策略
Helm:学习用 Helm 管理复杂应用(如 MySQL、Redis、Consul、Kong)
9. 学习资源
- 官方文档:https://kubernetes.io/zh/docs/