一份面向生产环境的 Kubernetes 架构详解,覆盖资源管理、QoS 类、CPU 节流陷阱、Pod 探针、网络与存储,以及如何通过 CRD 和 Operator 扩展集群能力。
资源请求与限制
请求(Requests)是 Pod 启动所需的最低 CPU 和内存,调度器据此决定节点放置;省略请求会导致调度失衡和节点资源枯竭。限制(Limits)是 Pod 可消耗的上限:内存为不可压缩资源,超限 1MB 即触发 OOMKilled 终止容器;CPU 为可压缩资源,超限后由 CFS 调度器执行节流,应用存活但延迟飙升。
资源超卖与 QoS 类
超卖指节点上所有容器限制总和超过物理容量,而请求总和仍在范围内。CPU 超卖安全可控,内存超卖风险极高,多 Pod 同时触顶会引发级联 OOMKilled。Kubernetes 依据请求与限制配置自动划分 QoS 类:Guaranteed(请求等于限制)受最高保护,Burstable(请求小于限制)其次,BestEffort(未定义请求与限制)在内存压力下最先被终止。
CFS 配额与 CPU 节流陷阱
内核以 100ms 为周期评估 CPU 用量。若 Pod 在前 20ms 内耗尽整周期配额,剩余 80ms 将被锁死,即使宿主机空闲率高达 80% 也会出现 500ms 以上延迟尖峰。许多 SRE 团队因此对延迟敏感微服务直接取消 CPU 限制,仅依赖调优的请求值与 HPA 应对流量。
安全与可观测性
RBAC 通过 ServiceAccount、Role 和 Binding 限制 Pod 权限,防止漏洞横向扩散。Prometheus 采集指标、Grafana 可视化、Alertmanager 告警构成监控栈。服务网格(Istio/Linkerd)通过 Sidecar 代理实现 mTLS 加密与金丝雀流量拆分。
Pod 生命周期与探针
启动探针等待应用完成初始化;存活探针检测死锁并重启容器;就绪探针失败时仅摘除 Service 端点,不重启 Pod,恢复后流量自动回归。
网络与调度
ClusterIP 仅供集群内通信,NodePort 不安全,LoadBalancer 按微服务逐个开通成本高昂。Ingress 作为集群网关统一终结 TLS 并按域名或路径路由。污点与容忍决定 Pod 能否调度到特定节点,节点亲和性支持硬约束与软偏好。
弹性伸缩与存储
HPA 依据 CPU 内存指标扩缩容,响应迟缓;KEDA 监听 Kafka、S3 等外部事件源,可缩容至零并秒级拉起副本。CSI 驱动负责动态供给云盘,PV 是集群级存储资源,PVC 是使用申请,StorageClass 触发动态供给流程。
扩展 Kubernetes
CRD 向 API 注册自定义资源(如 ModelDeployment),Operator 以自定义控制器监听这些资源并编排底层标准对象,将 Kubernetes 从应用运行器升级为平台构建器。
#开发者 #工具 #Kubernetes #DevOps #SRE #CRD #Operator #CICD
@DevToolboxHub