Skip to content

Kubernetes 进阶

探针、HPA、Ingress、存储、StatefulSet。

Updated View as Markdown
For humans

Kubernetes 进阶

核心之外的工程能力:健康检查、自动扩缩、流量入口、有状态应用

探针:健康检查

探针 检查什么 失败动作
livenessProbe 进程还活着吗 重启容器
readinessProbe 能接收流量吗 从 Service 摘除
startupProbe 启动完成了吗 延迟其他探针(慢启动应用)
readinessProbe:
  httpGet:
    path: /healthz    # 真实依赖检查(见系统设计健康检查篇)
    port: 8000
  initialDelaySeconds: 5
  periodSeconds: 10

要点:readiness 和 liveness 分开(启动慢 ≠ 死掉);探针要反映真实能力(连得上 DB)。

HPA:水平扩缩

HPA: 指标驱动副本数

  • HPA(HorizontalPodAutoscaler)按指标自动调副本数
  • 常见指标:CPU 利用率、QPS(自定义指标)、队列长度
  • 无状态应用才能自由扩缩(状态外置,见系统设计水平扩展篇)
  • 缩容要稳定窗口(防抖动)

Ingress:七层入口

  • Ingress:集群入口路由(域名 → 服务),替代一堆 NodePort
  • 基于 Nginx/Envoy 等 Ingress Controller 实现
  • 能力:域名路由、TLS 终止、路径重写、限流(对应 L7 负载均衡,见系统设计篇)

存储:PV/PVC

  • 容器文件系统是临时的(Pod 重建即丢)
  • PV(持久卷):存储资源(云盘/NFS);PVC:使用声明
  • 无状态应用别用存储(扩容麻烦);有状态应用(数据库)用 StatefulSet

StatefulSet

维度 Deployment StatefulSet
身份 Pod 随机名 稳定网络标识(固定序号)
存储 共享/临时 每个 Pod 独立 PVC
顺序 并行 有序启停
适用 无状态 数据库、有状态服务

StatefulSet 让数据库上 K8s 成为可能(但生产数据库仍倾向托管服务,运维复杂度高)。

面试追问

  1. 三种探针? liveness(活没活)、readiness(能接流量没)、startup(启动完没)。职责分离
  2. readiness 失败会怎样? 从 Service 摘除,不重启。liveness 失败才重启
  3. HPA 怎么扩缩? 指标对比期望值,自动调副本。无状态才能自由扩缩
  4. Ingress 是什么? 七层入口:域名路由、TLS、限流。基于 Nginx/Envoy
  5. StatefulSet 和 Deployment? 稳定身份 + 独立存储 + 有序启停。有状态应用用
Navigation

Type to search…

↑↓ navigate↵ selectEsc close