Kubernetes(K8S)知识库
Kubernetes(K8S)知识库
整理日期:2026-08-30 说明:本文档以 CKA/CKS 认证体系为主线,结合中小企业实战、入门实战、架构师高级班(Ansible 部署、弹性伸缩、Helm、网络、Ceph 存储、微服务迁移、CI/CD)及随堂 md 文档,整理为系统化 Kubernetes 知识库。
一、资料地图
- 认证主线 + 核心基础:CKA 认证课(1.2x,全新 PSI 考试系统):13 大章
- 安全进阶:CKS 安全专家课(16 章):CIS/kube-bench/Trivy/SecurityContext/Seccomp/AppArmor/gVisor/Falco/RBAC/审计
- 实战入门:中小企业实战:Docker、Harbor、K8s 部署、Ingress、Rancher、监控
- 零基础入门:入门实战:kubeadm 部署、Pod/Deployment/Service/Ingress/Helm
- 架构师进阶:高级班:Ansible 部署、弹性伸缩、Helm v3、网络、Ceph、微服务迁移、GitLab/Jenkins CI/CD、Pinpoint
- 网络理论:集群网络文档(OSI/交换路由/TCP-UDP/网络模型/Flannel VXLAN)
- 理论+实操:高级班随堂文档:Ansible 部署、弹性伸缩、Helm、网络、Ceph 7 篇
二、K8S 知识体系总览
Kubernetes 知识树
├── 1. 容器基础(Docker)
│ ├── 容器发展史、资源隔离(Cgroup/Namespace)
│ ├── 镜像、Dockerfile、多阶段构建、Harbor 仓库
│ └── Docker 网络与存储
├── 2. K8S 核心概念与架构
│ ├── Master 组件(apiserver/controller-manager/scheduler/etcd)
│ ├── Node 组件(kubelet/kube-proxy/容器运行时)
│ └── 核心资源对象(Pod/Deployment/Service/...)
├── 3. 集群部署
│ ├── kubeadm 部署(单 Master/多 Master)
│ ├── Ansible 二进制部署(生产推荐)
│ └── 高可用(Nginx+Keepalived、etcd 集群)
├── 4. 工作负载
│ ├── Pod(探针、InitContainer、临时容器、Sidecar)
│ ├── Deployment / StatefulSet / DaemonSet
│ ├── Job / CronJob
│ └── HPA 自动扩缩容
├── 5. 网络
│ ├── 网络模型(Pod 一 Pod 一 IP)
│ ├── Service(ClusterIP/NodePort/LoadBalancer/ExternalName)
│ ├── Ingress(HTTP/HTTPS 路由)
│ ├── CNI 与 Flannel(VXLAN/Host-GW)、Calico、kube-proxy(iptables/ipvs)
│ └── NetworkPolicy(安全隔离)
├── 6. 配置与存储
│ ├── ConfigMap / Secret(配置分离、热更新)
│ ├── PV / PVC / StorageClass(静态/动态供给)
│ └── Ceph(RBD/CephFS/RGW)
├── 7. 调度与弹性伸缩
│ ├── 污点与容忍(Taint/Toleration)
│ ├── 亲和性(Node/Pod Affinity、拓扑域)
│ ├── CA(Cluster Autoscaler)/ HPA / VPA
│ └── 基于 Prometheus 自定义指标伸缩
├── 8. 包管理与部署工具
│ ├── Helm v3(Chart/Release、模板、仓库)
│ └── Rancher(容器管理平台)
├── 9. 安全(CKS)
│ ├── CIS Benchmark、kube-bench
│ ├── 镜像漏洞扫描(Trivy)
│ ├── SecurityContext、Capabilities、Seccomp、AppArmor
│ ├── gVisor 沙箱、Sysdig/Falco 运行时安全
│ ├── RBAC、ServiceAccount、审计日志
│ └── 供应链安全(ImagePolicyWebhook)
├── 10. 监控运维
│ ├── Prometheus + Grafana、Metrics Server
│ ├── 集群监控(Weave Scope)、链路追踪(Pinpoint)
│ └── 故障排查(kubectl debug、节点/Master 故障)
└── 11. 微服务与 CI/CD
├── 微服务容器化迁移(SpringCloud 上 K8S)
├── GitLab + Harbor + Jenkins Pipeline
└── 发布流程与灰度发布三、核心知识点详解
3.1 容器基础(对应 003 套第 1-2 章)
- 容器发展史:虚拟化 → 容器化;容器 = 进程隔离 + 资源限制
- Cgroup:资源隔离(CPU/内存/IO 限制);Namespace:进程/网络/文件系统隔离
- Docker 网络:bridge(默认网桥)、host、none、overlay;容器间通信(veth 对 + 网桥 + iptables)
- 镜像与 Dockerfile:分层镜像、FROM/RUN/COPY/ADD/CMD/ENTRYPOINT/ENV/EXPOSE
- 多阶段构建、Scratch 小镜像;Harbor 企业级镜像仓库(公私仓库、镜像复制)
3.2 核心架构(对应 CKA 第 02、06 章)
Master 组件
- kube-apiserver:集群唯一入口,所有请求的网关(REST API)
- kube-controller-manager:控制器(副本数、节点、端点、服务账户等)
- kube-scheduler:调度 Pod 到合适 Node
- etcd:分布式键值存储,保存集群全部状态(必须备份!) Node 组件
- kubelet:节点代理,管理 Pod 生命周期
- kube-proxy:实现 Service 负载均衡(iptables / ipvs 模式)
- 容器运行时:Docker / containerd / CRI-O 核心资源对象扫盲
- Pod(最小调度单元)、Deployment(无状态)、StatefulSet(有状态)、DaemonSet(守护)
- Service(服务发现+负载均衡)、Ingress(七层路由)、ConfigMap/Secret(配置)
- PV/PVC(存储)、HPA(扩缩容)、RBAC(权限)、Namespace(隔离)
3.3 集群部署
kubeadm 方式(004 套 + CKA)
# Master 初始化(指定 Pod 网段)
kubeadm init --pod-network-cidr=10.244.0.0/16
# Node 加入
kubeadm join <MasterIP>:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
# 网络插件(CNI)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 图形界面
kubectl apply -f kubernetes-dashboard.yamlAnsible 二进制部署(高级班第 1 章,生产推荐)
- 服务器规划:Master ×2 + Node ×2 + 负载均衡(Nginx+Keepalived)
- 系统初始化:关 SELinux/firewalld/swap、时间同步、写 hosts
- 部署顺序:etcd 集群 → Master(apiserver/controller-manager/scheduler,TLS Bootstrapping)→ Node(docker/kubelet/kube-proxy)→ 插件(Flannel/Web UI/CoreDNS/Ingress)→ Master 高可用
- 一键部署:
ansible-playbook -i hosts single-master-deploy.yml -uroot -k - 分阶段控制:
--tags addons(只跑插件阶段)
3.4 工作负载
Pod(CKA 第 06 章)
- 为什么要引入 Pod:多容器共享网络/存储,方便管理
- 定义:
apiVersion: v1; kind: Pod; spec.containers[].image/ports/resources - 三种探针:livenessProbe(存活)、readinessProbe(就绪)、startupProbe(启动)
- 零宕机发布:readiness + liveness + 优雅终止
- InitContainer(初始化容器,先于业务容器执行)
- 临时容器(Ephemeral Container):在线 debug
- Sidecar 模式:日志/代理伴生容器(CKA 考题) 控制器
- Deployment:无状态应用,滚动更新/回滚/扩缩容/暂停恢复(
kubectl rollout status/undo/pause/resume) - StatefulSet:有状态(稳定网络标识、有序部署、PVC 绑定),灰度/级联删除
- DaemonSet:每节点一个(日志、监控 agent)
- Job/CronJob:批处理与定时任务 HPA(自动扩缩容):详见 3.7 弹性伸缩
3.5 网络(对应第四章文档 + CKA 第 08 章)
网络基础知识(理论)
- OSI 七层:物理/数据链路/网络/传输/会话/表示/应用;交换机(二层)、路由器(三层)
- 广播域、VLAN、ARP;静态路由 vs 动态路由(RIP/OSPF/BGP)
- TCP 面向连接可靠 / UDP 无连接快速 K8S 网络模型(4 条硬性要求)
- 一个 Pod 一个 IP
- Pod 与任何 Pod 直接通信,无需 NAT
- 所有节点可与所有 Pod 直接通信,无需 NAT
- Pod 内外看到同一 IP Pod 网络实现
- infra container(pause 容器)共享网络命名空间,Pod IP 即 infra 容器 IP
- 同节点 Pod 通信:veth 对 → 网桥(cni0)→ 目标 veth
- 跨节点通信:CNI 插件实现(Flannel/Calico) CNI(容器网络接口)
- 规范:CNI Plugin(连接容器到主机)+ IPAM(分配 IP)
- kubelet 参数:
--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/binFlannel 工作模式 - UDP(已弃用)、VXLAN(Overlay 隧道,默认)、Host-GW(直连路由,性能高)
- VXLAN 原理:VTEP 设备(flannel.1)→ 目的 MAC(ARP 表)→ FDB 转发表(宿主机 IP)→ UDP 二次封装 → 对端拆包转发 Service 与 Ingress
- Service 类型:ClusterIP(集群内)、NodePort(节点端口对外)、LoadBalancer(云负载)、ExternalName(外部域名代理)
- Service 也可反代 k8s 外部服务/域名
- Ingress:七层 HTTP/HTTPS 路由(多域名、TLS 证书、路径转发)
- kube-proxy 工作模式:iptables(默认)vs ipvs(性能更好,
--proxy-mode=ipvs) NetworkPolicy(网络策略) - 默认 Pod 网络全通;NetworkPolicy 按标签/网段隔离入站出站流量
- 典型场景:隔离中间件服务、服务发布限制(CKA/CKS 高频考题)
3.6 配置与存储
ConfigMap / Secret(CKA 第 09 章)
- 创建形式:命令行(
kubectl create configmap)、文件(--from-file)、清单 YAML - 使用:valueFrom 环境变量、envFrom 批量、文件挂载(volume)、subPath 防覆盖
- Secret 类型:Opaque、tls(HTTPS 证书)、docker-registry(私有仓库拉取)
- 热更新:ConfigMap/Secret 更新后挂载文件自动更新(env 方式不自动)
- 不可变配置:
immutable: true(1.19+) PV / PVC / StorageClass - PV:管理员提供的存储卷(NFS/iSCSI/云盘);PVC:用户的存储申请
- 静态供给:手动创建 PV 匹配 PVC;动态供给:StorageClass + provisioner 自动创建
- 访问模式:ReadWriteOnce / ReadOnlyMany / ReadWriteMany
- 生命周期:Available → Bound → Released
3.7 弹性伸缩(对应高级班第 2 章文档)
三种伸缩层次
- CA(Cluster Autoscaler):Node 级扩缩容(云上自动加/删节点)
- HPA(Horizontal Pod Autoscaler):Pod 数量伸缩(最常用)
- VPA(Vertical Pod Autoscaler):Pod CPU/内存配置伸缩(addon-resizer) 基于 CPU 的 HPA(Metrics Server)
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: demo-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: demo
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50基于 QPS 自定义指标(Prometheus + prometheus-adapter)
- 流程:Pod 暴露 /metrics → Prometheus 采集 → prometheus-adapter 注册 custom.metrics.k8s.io → HPA 查询指标 → 调整副本
- 关键配置:seriesQuery 定义指标、metricsQuery 计算
sum(rate(...[2m])) - 压测验证:
ab -n 100000 -c 100 http://.../metrics
3.8 Helm(对应高级班第 3 章)
为什么需要 Helm
- 复杂应用资源文件多;需要整体管理、复用、版本管理 核心概念
- Chart(应用包)、Release(部署实例)、Repository(仓库)
- Helm v3 变化:删除 Tiller、Release 名称可跨 Namespace 重用、Chart 可推送镜像仓库、命令更名(delete→uninstall、inspect→show、fetch→pull)、依赖写在 Chart.yaml Chart 结构
mychart/
├── Chart.yaml # 元数据(name/version/dependencies)
├── values.yaml # 默认配置值
├── templates/ # Go template 模板(deployment.yaml/service.yaml...)
└── charts/ # 子 chart模板与内置对象
- 内置对象:
.Release.Name/.Namespace/.Revision、.Chart、.Values - 调试:
helm install --dry-run --debug ./mychart - Values 来源优先级:values.yaml < -f 文件 < --set 常用命令
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm install <release> <chart> -n <ns>
helm upgrade / helm rollback / helm uninstall / helm list / helm history
helm pull stable/mysql --untar3.9 存储之 Ceph(对应高级班第 5 章文档)
为什么用 Ceph:开源分布式存储,高扩展/高性能/高可靠,提供块(RBD)、文件(CephFS)、对象(RGW/S3)三种存储 核心概念
- RADOS:可靠自动分布式对象存储(Ceph 内核)
- CRUSH 算法:去中心化数据寻址,支持容灾域隔离(机架感知)
- Pool(存储池):副本 / 纠删码;PG(放置组):数据均衡与恢复最小粒度;OSD:物理存储进程
- Monitor(集群状态)、MDS(元数据服务)、Mgr(管理)、RGW(对象网关) K8S 使用 Ceph
- PV/PVC 概述;动态供给:StorageClass + provisioner 自动创建 PV
- RBD 块存储:ReadWriteOnce/ReadOnlyMany;external-storage rbd-provisioner
- CephFS 文件存储:多读多写共享
- 监控:Prometheus + Grafana 监控 Ceph、Ceph Dashboard
3.10 安全(对应 CKS 课)
| 主题 | 工具/要点 | | 集群基线 | CIS Benchmark、kube-bench(检测与修复、自定义规则) | | 镜像安全 | Trivy 漏洞扫描(含集成 Harbor) | | 最小权限 | SecurityContext、Capabilities(最小能力集) | | 系统调用安全 | Seccomp(禁用危险 syscall)、AppArmor(强制访问控制) | | 运行时安全 | gVisor(用户态内核沙箱)、Sysdig(系统监控)、Falco(异常检测规则) | | 审计 | API Server 审计日志(阶段、策略、参数配置) | | 网络隔离 | NetworkPolicy | | 供应链 | ImagePolicyWebhook(镜像来源准入控制)、TLS 证书签发 | | 认证授权 | ServiceAccount、RBAC(Role/ClusterRole/绑定)、kubeconfig、Dashboard Token 认证 | CKS 考题类型:kube-bench、ServiceAccount、NetworkPolicy、RBAC、Audit、Secrets、Dockerfile、gVisor、Trivy、AppArmor、Sysdig/Falco、容器安全上下文、APIServer 认证、TLS 安全、ImagePolicyWebhook
3.11 监控与 CI/CD(对应 003/高级班)
监控
- Prometheus:指标采集(pull 模型);Grafana:可视化仪表盘
- Metrics Server:HPA/kubectl top 数据源
- Weave Scope:集群可视化拓扑
- Pinpoint:微服务链路追踪 微服务容器化迁移
- 部署 SpringCloud 微服务的考虑:配置中心、服务发现、网关、日志、链路
- 发布流程:代码 → GitLab → Jenkins Pipeline(构建/测试/镜像)→ Harbor → K8S 滚动发布
- 工具:GitLab、Harbor、Jenkins(参数化构建、Pipeline 脚本)
四、常用命令速查
| 分类 | 命令 | | 资源 | kubectl get pods -A、kubectl describe pod xxx、kubectl apply -f yaml | | 日志 | kubectl logs -f pod、kubectl logs pod -c 容器 | | 进入 | kubectl exec -it pod -- bash | | 扩缩容 | kubectl scale deploy xxx --replicas=5、kubectl autoscale deploy xxx --min=1 --max=10 | | 更新 | kubectl rollout status deploy、kubectl rollout undo deploy | | 节点维护 | kubectl cordon node、kubectl drain node --ignore-daemonsets、kubectl uncordon node | | 标签 | kubectl label node xxx disk=ssd、kubectl get pods -l app=web | | 证书 | kubectl get csr、kubectl certificate approve xxx | | 端口转发 | kubectl port-forward pod 8080:80 | | 集群 | kubectl cluster-info、kubectl get events --sort-by=.lastTimestamp | | 备份 | etcdctl snapshot save backup.db |
五、学习路线建议
阶段一 容器基础(1-2 周)
003 套第 1-2 章(Docker、Cgroup、镜像、Dockerfile、Harbor)
阶段二 K8S 入门(3-4 周)
004 套入门实战(kubeadm 部署、Pod、Deployment、Service、Ingress、Helm)
+ 003 套第 3-5 章(资源对象、监控、Rancher、RBAC)
阶段三 CKA 认证(1-2 个月)
CKA 课 02-13 章(架构、核心资源、网络、存储、调度、RBAC、Docker)
+ 集群网络 md 文档 + 高级班弹性伸缩/Helm 文档
+ 题库与 PSI 考试系统练习
阶段四 架构师进阶(2-3 个月)
高级班:Ansible 二进制部署 → 弹性伸缩(CA/HPA/VPA)→ Helm v3
→ 集群网络(Flannel/Calico)→ Ceph 存储 → 微服务迁移 → GitLab/Jenkins CI/CD
阶段五 安全认证 CKS(可选)
CKS 16 章:kube-bench → Trivy → SecurityContext/Seccomp/AppArmor
→ gVisor/Falco → 审计 → RBAC → 模拟题六、认证考试要点(CKA / CKS)
- CKA(1.2x):考试时间 2 小时,实操题(终端答题),PSI 浏览器考试系统
- CKA 考纲覆盖:日志/指标、扩缩容、节点维护、固定节点部署、多容器 Pod、Service、Sidecar、RBAC、NetworkPolicy、PV/CSI/StorageClass、集群故障排查(Node/Master/etcd)、Ingress、Etcd 备份恢复、集群升级
- CKS(1.26 新增 1.30 部署):16 章覆盖集群加固、镜像安全、容器运行时安全、审计、供应链安全
- 报名优惠:国内/国外站点报名、折扣券、3 折考试+培训课(见 CKA 课第 05 章)
