本文介绍Kubernetes控制面内核系列文章,聚焦kube-apiserver与etcd间的存储层。文章指出当前知识缺口,定义五条排障坐标系:Storage/etcd耦合、Watch/cache、Admission、AuthN/AuthZ、流控。版本锚定v1.30.3,提供16篇阅读路线,强调通过分层定位504、410等故障,而非简单直连etcd排查。
本文拆解kube-apiserver请求路径,从TLS终止到etcd写入,需经过APF流控、认证、授权、Admission等拦截点。APF在认证前,Admission在REST handler内。请求失败时需区分是Webhook拒绝、APF排队还是etcd问题,不能简单归因于etcd慢。GVR路由将请求映射到对应storage实现。
kube-apiserver通过storage.Interface与etcd交互,存储protobuf序列化数据,key由前缀拼接,value经Transformer加密。GuaranteedUpdate用etcd Txn实现乐观并发写,Create/Delete/Watch各有路径。排障需关注etcd延迟、转换失败等指标,区分apiserver与etcd问题。
本文介绍Kubernetes v1.30.3中kube-apiserver的watch cache机制,核心是Cacher组件:它通过watchCache环形缓冲存储事件,用Ready门控制启动同步,dispatch实现内存多路分发,bookmark维持资源版本推进。当缓存未命中或未就绪时回退到etcd,可能引发List风暴,需调整缓存容量和bookmark频率优化。
本文介绍Kubernetes v1.30.3中kube-apiserver的认证链结构,涵盖X509证书、SA token、静态Bearer、Bootstrap、OIDC及Webhook等认证器边界。文章区分401(认证失败)、403(授权失败)、503(存储或Webhook故障)等错误码,并讨论SA token过期、OIDC JWKS缓存等排障要点,强调认证与授权职责分离。
本文介绍Kubernetes v1.30中kube-apiserver的过载保护机制,包括旧的max-in-flight全局并发限制和新的API Priority and Fairness(APF)公平排队系统。APF通过FlowSchema和PriorityLevel配置,使用SFVR算法实现流量分类和公平调度。文章详细区分429、504等超载症状的排查路径,强调先检查APF等待指标,再排查etcd或Webhook,并提供默认配置和调参建议。
kube-apiserver无leader选举,多实例并发运行共享etcd,与controller-manager等不同。运维要点包括:滚动升级逐实例替换、处理409冲突、APF容量为各实例之和。核心flag有--etcd-servers、--etcd-servers-overrides(分集群events)、--request-timeout、--shutdown-delay-duration(需≥LB健康检查间隔×失败阈值)、--encryption-provider-config。升级顺序:etcd→apiserver→controller-manager→scheduler→kubelet,版本偏差不超过2个minor。健康检查中/readyz反映etcd连通性,/healthz不等价于etcd健康。
本文介绍kube-apiserver排障方法,提出五轴坐标系:Storage/etcd、Watch/cache、Admission、Auth、APF。通过症状映射表快速定位问题轴,如401/403查Auth,503查Admission,504查APF,410查Watch。强调先定轴再下钻,避免误操作,并列出关键metrics和命令,区分apiserver与etcd问题,指导高效排障。
本文总结kube-apiserver排障系列终章,提出机制排除树,按症状(401/403、webhook 503、APF 429、etcd延迟、Watch错误等)定位至Auth、Admission、APF、Storage或Watch轴。回收etcd系列停损线,明确Kine SQL后端Watch语义差异及events分集群边界。列出三个开放问题(watch cache SLO、线性读一致性、Lease fencing),强调以实测关闭,并给出ADR友好收束建议。
本文介绍kube-apiserver生产内核系列,聚焦控制面故障排障,以Storage/Watch/Admission/Auth/APF五轴为坐标系,规划16篇阅读路线。内容涵盖请求路径、watch cache、resourceVersion、Webhook、APF等机制,版本锚定Kubernetes v1.30.3,旨在帮助SRE归因504、410等错误,区分直连etcd与apiserver排障边界。
本文讨论Kubernetes控制面与etcd的耦合关系。kube-apiserver是唯一直接连接etcd的组件,通过watch cache合并客户端请求。resourceVersion对应etcd的mod revision,用于乐观并发控制。Node Lease通过etcd Lease机制实现心跳,减少写入放大。排障时需区分apiserver超时与etcd五轴问题,避免误判。
Kubernetes架构由控制平面节点和工作节点组成。控制平面节点负责管理集群状态和调度工作负载,主要组件包括etcd、kube-apiserver、controller-manager和kube-scheduler。工作节点运行应用,包含kubelet、kube-proxy和容器运行时。etcd存储状态,kube-apiserver处理API请求,controller-manager监控状态,kube-scheduler分配节点,kube-proxy负责流量路由。
在Kubernetes中,Master Node类似于购物中心的管理办公室,负责协调集群活动。kube-apiserver作为中央控制台,处理所有请求;etcd存储重要信息,如商店位置;kube-controller-manager管理任务,确保Pods数量正常;kube-scheduler负责资源分配和Pods调度。
Kubernetes操作流程包括kubectl发送API请求,kube-apiserver处理请求并更新etcd,kube-controller-manager监控资源状态,kubelet执行指令,kube-scheduler分配Pods,kube-proxy配置网络。配置文件位于/etc/kubernetes/,以确保集群正常运行。
Kubernetes 1.32引入流式API列表请求,显著提升了kube-apiserver的内存效率。传统列表请求会迅速耗尽内存,而流式请求通过逐个传输数据,保持恒定的内存开销。测试表明,启用后内存使用量从20GB降至约2GB,增强了系统稳定性,尤其在处理大量对象时。
Kubernetes控制平面管理集群状态,主要由etcd、kube-apiserver、kube-scheduler、kube-controller-manager和cloud-controller-manager等组件组成。etcd负责存储数据,kube-apiserver处理API请求,kube-scheduler分配节点,kube-controller-manager维护集群状态,cloud-controller-manager实现云服务集成。这些组件协同工作,确保Kubernetes的高效与可靠。
本文介绍了kube-apiserver的认证鉴权能力,包括HTTPS身份验证、三种认证方式和RBAC配置。
本文介绍了 kube-apiserver 的钩子函数和 bootstrap-controller 的创建和启动逻辑,以及 Runner 对象和函数的实现。kube-apiserver 的 controller 通过注册钩子函数实现监控和操作资源。
本文介绍了 kube-apiserver 中的准入控制参数初始化和应用参数的过程,以及两个插件的实现:ServiceAccount 和 NamespaceLifecycle。准入控制可以通过 MutatingAdmissionWebhook 和 ValidatingAdmissionWebhook 的方式扩展。
本文介绍了 kube-apiserver 后端存储的实现方式,包括 Storage、REST 和 Store 三个对象的构造和关系,以及 handler 对象处理请求的方法。同时,文章详细介绍了创建资源的具体实现,包括获取注册的默认 GVR、构造 reqscope 变量、创建 decoder、获取请求体等步骤。最后,文章介绍了将对象持久化到 ETCD 的过程。
完成下面两步后,将自动完成登录并继续当前操作。