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

维度DeploymentStatefulSet
身份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