Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Kubernetes 基础教程

🔷 0. Kubernetes 1.33 新变化(重要)

在介绍核心概念之前,先说 1.33 相比旧版本的关键变化:(非常重要)

✅ 1. dockershim 已彻底移除(很久前移除,1.33 完全不支持 Docker)

只能用:

  • containerd(最标准)
  • CRI-O

✅ 2. Pod Security Admission(PSA)完全替代 PodSecurityPolicy

PSP 早已废弃,1.33 必须使用 PSA:

  • privileged
  • baseline
  • restricted

✅ 3. kube-proxy 可选:支持 eBPF 模式(Cilium 主流)

iptables/ipvs 依旧兼容,但 eBPF 越来越常见。

✅ 4. Service API(Gateway API)愈发成熟

Ingress 仍可用,但 Gateway API 是未来趋势。

✅ 5. Kubelet 100% GA(稳定)

包含:

  • secure serving
  • cri 封装
  • resource metrics

✅ 6. 增强调度(Scheduler v2 特性持续增强)

包括:

  • Topology Aware Scheduling
  • NUMA 感知调度
  • 节点容量扩展插件

⚠️ 7. 1.33 默认不落盘 kubeadm config IF 不使用 –config

理论上 kubeadm init 不会自动创建 /etc/kubernetes/kubeadm-config.yaml。

🟦 1. Cluster(集群)

由 控制平面(Control-plane)+ 工作节点(Node) 组成。

🟦 2. Control Plane(控制平面)组件·1.33 标准

2.1 kube-apiserver(核心 API 网关)

所有CLI、Controller、Scheduler 都必须经过 API Server。

2.2 etcd(唯一数据源)

存储:

  • Pod / Deployment / Node / Service / ConfigMap 全部集群状态

2.3 kube-scheduler

负责调度 Pod 到对应 Node。

1.33 的增强点:

  • 滚动更新插件
  • NUMA 调度
  • 节点拓扑负载调度

2.4 kube-controller-manager

集成多个 Controller:

  • Deployment Controller
  • StatefulSet Controller
  • Node Controller
  • Job Controller
  • TTL Controller
  • CSR Controller
  • ……

所有控制器本质都是:“目标状态” VS “实际状态” -> 自动调节

2.5 cloud-controller-manager(云环境可选)

管理云相关资源:

  • LoadBalancer
  • Volume
  • Route

🟦 3. Node(节点)组件 · Kubernetes 1.33 标准

3.1 kubelet

Node 的守护进程:

  • 保证 Pod 运行
  • 负责与 API Server 通信
  • 管理容器生命周期

3.2 kube-proxy(iptables / ipvs / eBPF 三种)

三模式仍支持,但:

  • eBPF(Cilium)是最新趋势
  • kube-proxy 本身并未来被废弃(官方澄清)

3.3 Container Runtime(必须是 CRI)

K8S 1.33 仅支持:

  • containerd
  • CRI-O

Docker 已长期不支持。

🟦 4. Pod(最小调度单位)

  • 一组容器
  • 共享:IP、Volume、IPC、PID

Pod 是“调度单位”,不是“运行单位”。

🟦 5. Workload(应用工作负载)

5.1 Deployment(无状态服务)

支持:

  • 滚动更新
  • 回滚
  • 副本自愈

最常用。

5.2 StatefulSet(有状态服务)

特性:

  • 稳定持久的 Pod 名称
  • 稳定绑定 PVC
  • 有序部署

适用于数据库:

  • PostgreSQL
  • MongoDB
  • ES
  • Redis Cluster

5.3 DaemonSet

所有 Node 运行一个副本,例如:

  • 监控(Node Exporter)
  • CNI 代理(Calico Node)
  • 日志收集(Fluent-bit)

5.4 Job / CronJob

一次性任务、定时任务。

🟦 6. Service(服务发现)

Service 是“虚拟 IP(ClusterIP)”。

Pod IP 会变,但 Service IP 不变。

类型:

  • ClusterIP(默认,只能内部访问)
  • NodePort(30000–32767)
  • LoadBalancer(云环境)
  • Headless(无 ClusterIP)

用于 StatefulSet 域名。

Kubernetes 1.33 新重点:Gateway API

Ingress 未来被 Gateway API 替代。

🟦 7. Ingress / Gateway API(L7 HTTP 代理)

Ingress 一直支持,但 K8S 的未来标准是:

Gateway API(成熟度已高)

  • HTTPRoute
  • TCPRoute
  • TLSRoute
  • GatewayClass

🟦 8. ConfigMap / Secret(配置信息)

ConfigMap

非敏感信息。

Secret

敏感信息(base64,但不安全)

K8S 1.33 推荐开启:

KMS 键管理
SecretEncryption

🟦 9. Volume / PV / PVC(持久化存储)

Volume(Pod 内)

临时或持久。

PV(PersistentVolume)

由管理员提供。

PVC(PersistentVolumeClaim)

用户的请求(绑定 PV)。

新变化

K8S 1.33 对 CSI 插件支持更完善(特性 GA)。

🟦 10. Namespace(逻辑隔离)

常见:

  • default
  • kube-system
  • kube-public
  • dev / test / prod

🟦 11. Label / Selector

用于选择 Pod、Deployment、Service。

核心查找机制:

app: nginx
env: prod
component: backend

🟦 12. Annotation

存储元信息,如:

  • 版本
  • 发布人
  • commit hash
  • Sidecar 注入 hint

🟦 13. Taint & Toleration

控制 Pod 不能调度到某节点。

例子:

node-role.kubernetes.io/master=:NoSchedule

🟦 14. Affinity(亲和)/ Anti-Affinity(反亲和)

决定 Pod 运行在哪些节点。

用于:

  • 高可用
  • 分布式架构隔离

🟦 15. CNI(网络插件)

负责 Pod 网络通信。

主流:

  • Calico(默认首选)
  • Cilium(eBPF)
  • Flannel(简单但过时)
  • Weave(历史项)

🟦 16. CSI(存储插件)

提供存储接口:

  • Ceph RBD
  • NFS
  • EBS
  • Local Path

🟦 17. CRD(自定义资源定义)

扩展 Kubernetes 的 API。

所有生态工具(如 Istio)都基于 CRD。

🟦 18. Operator(自动化运维)

基于 CRD 的自动化控制器。

例如:

  • Postgres Operator
  • MongoDB Operator
  • Redis Operator

🟦 19. kubeadm(集群管理) · 1.33 特性

  1. 允许生成 kubeadm-config.yaml
  2. init/join 支持 K8S 1.33 所有新字段
  3. 更好的 TLS 管理(cert renew)

🟦 20. kubectl(集群 CLI)

常用操作:

  • apply
  • get
  • describe
  • logs
  • exec
  • rollout
  • drain / cordon / uncordon