K8s-CSI卷挂载流程
CSI 存储卷挂载通信流程目标这篇文档只回答一个核心问题:kubelet 如何通过 CSI (Container Storage Interface) 完成 Pod 存储卷的挂载? 重点放在 VolumeManager 与 CSI driver 的交互,以及 attach/mount 的完整流程。 一句话摘要kubelet 的 VolumeManager 通过 CSINode 和 CSIDriver 对象发现 CSI driver,然后通过 gRPC 调用 CSI driver 的 NodeStageVolume/NodePublishVolume 完成卷的挂载。 1. 流程总览从通信视角看,这条链路可以拆成 3 个阶段: 卷准备阶段:CSI controller 完成 attach (对于块存储)。 节点挂载阶段:kubelet 通过 CSI driver 完成 stage 和 publish。 容器挂载阶段:kubelet 将卷 bind mount 到容器内。 架构总览图flowchart TB subgraph 控制面["控制面...
K8s-DNS解析流程
DNS 解析流程本文档描述 Kubernetes 集群中 CoreDNS 如何解析 Service 到 Pod IP 的完整流程。 概述Kubernetes DNS 解析涉及以下核心组件: CoreDNS:集群 DNS 服务器 kube-dns Service:指向 CoreDNS Pod 的 Service EndpointSlice:记录 CoreDNS Pod 的 IP 地址 Pod /etc/resolv.conf:Pod 内的 DNS 配置 flowchart TD subgraph Pod["Pod (应用容器)"] A["应用发起 DNS 查询"] B["读取 /etc/resolv.conf"] end subgraph CoreDNS["CoreDNS Pod"] C["CoreDNS 服务"] D["Watch API Server&quo...
K8s-Deployment滚动更新流程
Deployment 滚动更新流程本文档描述 Kubernetes Deployment 如何通过 ReplicaSet Controller 管理滚动更新的完整流程。 概述Deployment 滚动更新涉及以下核心组件: Deployment Controller:管理 Deployment 生命周期 ReplicaSet Controller:管理 Pod 副本数 API Server:存储和分发资源状态 flowchart TD subgraph User["用户操作"] A["kubectl apply -f deployment.yaml"] end subgraph APIServer["API Server"] B["Deployment 资源"] C["ReplicaSet 资源"] D["Pod 资源"] end subgraph D...
K8s-EndpointSlice控制器流程
EndpointSlice 控制器流程本文档描述 Kubernetes EndpointSlice 控制器如何让 Service 感知后端 Pod 变化的完整流程。 概述EndpointSlice 控制器负责: 监听 Service 和 Pod 变化 生成和管理 EndpointSlice 资源 记录 Service 后端 Pod 的 IP 地址和端口 flowchart TD subgraph APIServer["API Server"] A["Service 资源"] B["Pod 资源"] C["EndpointSlice 资源"] D["Node 资源"] end subgraph EndpointSliceController["EndpointSlice Controller"] E["Watch Service"] ...
K8s-PVC供应与绑定流程
PVC 供应与绑定流程本文档描述 Kubernetes 中 PVC(PersistentVolumeClaim)、PV(PersistentVolume)和 StorageClass 的完整交互流程。 概述PVC 供应与绑定涉及以下核心组件: PV Controller:管理 PV 和 PVC 的绑定 StorageClass:定义动态供应参数 Provisioner:实际创建存储卷(in-tree 或 CSI) Scheduler:处理 WaitForFirstConsumer 模式 flowchart TD subgraph User["用户操作"] A["创建 PVC"] end subgraph APIServer["API Server"] B["PVC 资源"] C["PV 资源"] D["StorageClass"] end subgra...
K8s-Pod在节点落地流程
Pod 在节点落地通信流程目标这篇文档只回答一个核心问题:kubelet 如何把“期望运行”的 Pod 变成“真实运行”的容器? 重点放在 kubelet 内部各组件之间的协作与 CRI 通信边界,而不是每一个 gRPC 字段的含义。 一句话摘要kubelet 收到 Pod 更新后,把期望态交给 podWorkers;podWorkers 驱动单 Pod 生命周期状态机,再由 kubeGenericRuntimeManager 通过 CRI 调用容器运行时完成 sandbox、镜像与容器操作。 1. 流程总览从通信视角看,这条链路可以拆成 3 个阶段: 更新接入阶段:kubelet 从 Pod source 收到属于本节点的 Pod 更新,并交给内部子系统。 状态机驱动阶段:podWorkers 根据当前状态决定执行同步、终止还是清理。 运行时执行阶段:runtime manager 通过 CRI 把操作翻译给容器运行时,完成 sandbox 和容器的创建/销毁。 Mermaid:总览图flowchart LR A[Pod update from sour...
K8s-Pod调度与绑定流程
Pod 调度与绑定通信流程目标这篇文档只回答一个核心问题:一个 Pod 是怎么从“等待调度”变成“被某个节点上的 kubelet 感知到”的? 重点放在组件之间的通信与职责边界,而不是调度器内部打分算法细节。 一句话摘要kube-scheduler 负责为 Pod 选节点,kube-apiserver 负责持久化绑定结果,kubelet 通过监听 API Server 中属于本节点的 Pod 更新来感知这次分配。 1. 流程总览从通信视角看,这条链路可以拆成 3 个阶段: 调度决策阶段:scheduler 为 Pod 选择目标节点。 绑定落盘阶段:scheduler 通过 API Server 把绑定结果写回集群状态。 节点感知阶段:目标节点上的 kubelet 观察到这个 Pod 已经分配给自己,开始进入节点侧处理。 Mermaid:总览图flowchart LR A[Pending Pod] --> B[kube-scheduler] B --> C[select target node] C --> D[kube-apiser...
K8s-节点心跳与健康流程
节点心跳与健康状态通信流程目标这篇文档只回答一个核心问题:kubelet 如何把节点健康信号汇报给控制面,控制面又如何据此做出判断和后续动作? 重点放在两类心跳信号的协作关系,以及控制面如何综合判断节点健康。 一句话摘要kubelet 周期性更新 NodeStatus 并续约 Lease;node lifecycle controller 通过 informer/lister 观察 Node 与 Lease,综合判断节点健康,再触发 taint、Pod not-ready 传播与后续驱逐流程。 1. 流程总览从通信视角看,这条链路包含两类并行的心跳信号: NodeStatus 心跳:携带节点条件(Ready、MemoryPressure 等)和容量信息。 Lease 心跳:轻量级的存活信号,用于快速检测节点失联。 控制面会综合这两类信号来判断节点健康状态。 Mermaid:总览图flowchart LR A[Kubelet] --> B[syncNodeStatus] A --> C[nodeLeaseController] B...
K8s-kube-proxy服务代理流程
kube-proxy 服务代理通信流程目标这篇文档只回答一个核心问题:kube-proxy 如何实现 Service 的负载均衡和网络代理? 重点放在 kube-proxy 与 API Server 的交互、规则同步机制以及 iptables/IPVS 模式的差异。 一句话摘要kube-proxy 通过 watch API Server 中的 Service 和 EndpointSlice 对象,在本地维护 iptables/IPVS 规则,将到达 Service ClusterIP 的流量转发到后端 Pod。 1. 流程总览从通信视角看,这条链路可以拆成 3 个阶段: 配置获取阶段:kube-proxy watch Service 和 EndpointSlice 对象。 规则计算阶段:根据 Service 类型计算需要生成的代理规则。 规则同步阶段:将规则写入 iptables/IPVS,实现流量转发。 架构总览图flowchart TB subgraph 控制面["控制面"] API[kube-a...
K8s-kubelet深度剖析
Kubelet 深度分析本文档深入分析 Kubernetes Kubelet 组件的架构设计、启动流程、核心功能和关键子系统。 目录 架构概览 关键数据结构 启动流程分析 核心功能原理 关键子系统详解 5.1 PodManager 5.2 StatusManager 5.3 ProbeManager 5.4 VolumeManager 5.5 EvictionManager 5.6 PLEG 边界情况与错误处理 性能优化 最佳实践 1. 架构概览1.1 Kubelet 在 Kubernetes 架构中的位置Kubelet 是 Kubernetes 集群中运行在每个节点上的核心代理(Node Agent),是 Kubernetes 控制平面与节点级容器运行时之间的桥梁。它负责维护节点上容器的生命周期,并将节点状态上报给 API Server。 在 Kubernetes 整体架构中,Kubelet 处于如下位置: 12345678910111213141516171819202122+-------------------------+ +----------...
