Kubernetes 基础教程
在介绍核心概念之前,先说 1.33 相比旧版本的关键变化:(非常重要)
只能用:
- containerd(最标准)
- CRI-O
PSP 早已废弃,1.33 必须使用 PSA:
- privileged
- baseline
- restricted
iptables/ipvs 依旧兼容,但 eBPF 越来越常见。
Ingress 仍可用,但 Gateway API 是未来趋势。
包含:
- secure serving
- cri 封装
- resource metrics
包括:
- Topology Aware Scheduling
- NUMA 感知调度
- 节点容量扩展插件
理论上 kubeadm init 不会自动创建 /etc/kubernetes/kubeadm-config.yaml。
由 控制平面(Control-plane)+ 工作节点(Node) 组成。
所有CLI、Controller、Scheduler 都必须经过 API Server。
存储:
- Pod / Deployment / Node / Service / ConfigMap 全部集群状态
负责调度 Pod 到对应 Node。
1.33 的增强点:
- 滚动更新插件
- NUMA 调度
- 节点拓扑负载调度
集成多个 Controller:
- Deployment Controller
- StatefulSet Controller
- Node Controller
- Job Controller
- TTL Controller
- CSR Controller
- ……
所有控制器本质都是:“目标状态” VS “实际状态” -> 自动调节
管理云相关资源:
- LoadBalancer
- Volume
- Route
Node 的守护进程:
- 保证 Pod 运行
- 负责与 API Server 通信
- 管理容器生命周期
三模式仍支持,但:
- eBPF(Cilium)是最新趋势
- kube-proxy 本身并未来被废弃(官方澄清)
K8S 1.33 仅支持:
- containerd
- CRI-O
Docker 已长期不支持。
- 一组容器
- 共享:IP、Volume、IPC、PID
Pod 是“调度单位”,不是“运行单位”。
支持:
- 滚动更新
- 回滚
- 副本自愈
最常用。
特性:
- 稳定持久的 Pod 名称
- 稳定绑定 PVC
- 有序部署
适用于数据库:
- PostgreSQL
- MongoDB
- ES
- Redis Cluster
所有 Node 运行一个副本,例如:
- 监控(Node Exporter)
- CNI 代理(Calico Node)
- 日志收集(Fluent-bit)
一次性任务、定时任务。
Service 是“虚拟 IP(ClusterIP)”。
Pod IP 会变,但 Service IP 不变。
类型:
- ClusterIP(默认,只能内部访问)
- NodePort(30000–32767)
- LoadBalancer(云环境)
- Headless(无 ClusterIP)
用于 StatefulSet 域名。
Kubernetes 1.33 新重点:Gateway API
Ingress 未来被 Gateway API 替代。
Ingress 一直支持,但 K8S 的未来标准是:
Gateway API(成熟度已高)
- HTTPRoute
- TCPRoute
- TLSRoute
- GatewayClass
非敏感信息。
敏感信息(base64,但不安全)
K8S 1.33 推荐开启:
KMS 键管理
SecretEncryption
临时或持久。
由管理员提供。
用户的请求(绑定 PV)。
K8S 1.33 对 CSI 插件支持更完善(特性 GA)。
常见:
- default
- kube-system
- kube-public
- dev / test / prod
用于选择 Pod、Deployment、Service。
核心查找机制:
app: nginx
env: prod
component: backend
存储元信息,如:
- 版本
- 发布人
- commit hash
- Sidecar 注入 hint
控制 Pod 不能调度到某节点。
例子:
node-role.kubernetes.io/master=:NoSchedule
决定 Pod 运行在哪些节点。
用于:
- 高可用
- 分布式架构隔离
负责 Pod 网络通信。
主流:
- Calico(默认首选)
- Cilium(eBPF)
- Flannel(简单但过时)
- Weave(历史项)
提供存储接口:
- Ceph RBD
- NFS
- EBS
- Local Path
扩展 Kubernetes 的 API。
所有生态工具(如 Istio)都基于 CRD。
基于 CRD 的自动化控制器。
例如:
- Postgres Operator
- MongoDB Operator
- Redis Operator
- 允许生成 kubeadm-config.yaml
- init/join 支持 K8S 1.33 所有新字段
- 更好的 TLS 管理(cert renew)
常用操作:
- apply
- get
- describe
- logs
- exec
- rollout
- drain / cordon / uncordon