8.k8s-node组件介绍

📅 发布时间:2026/7/6 6:38:54 👁️ 浏览次数:
8.k8s-node组件介绍
k8s-node组件介绍一、节点组件概述二、kubelet2.1 定义与作用2.2 部署方式2.3 核心配置/var/lib/kubelet/config.yaml三、kube-proxy3.1 定义与作用3.2 部署方式3.3 工作模式四、集群通信架构4.1 通信协议4.2 架构全景图4.3 关键架构特征五、第三方控制器与扩展机制5.1 需求背景5.2 扩展方式5.3 架构位置六、节点组件故障排查6.1 kubelet 常见问题6.2 kube-proxy 常见问题七、总结一、节点组件概述Kubernetes 节点Node 包含两个核心组件分别负责容器生命周期管理与网络流量转发组件部署方式核心职责kubelet二进制进程yum安装Pod 生命周期管理kube-proxyDaemonSetService 网络代理与负载均衡注Master 节点同时也是特殊 Node同样运行 kubelet 与 kube-proxy。二、kubelet2.1 定义与作用kubelet 是运行在每个节点上的 Kubernetes 代理进程负责与 Master 通信并管理节点上的容器化工作负载。核心职责职责说明Pod 生命周期管理创建、启动、停止、删除 Pod 中的容器状态上报定期向 apiserver 报告节点与 Pod 状态健康检查执行 livenessProbe、readinessProbe资源监控采集节点与容器的 CPU、内存使用数据Volume 管理挂载和卸载 Pod 声明的存储卷静态 Pod 管理监控staticPodPath目录自动创建/删除静态 Pod2.2 部署方式二进制进程# 通过 yum 安装systemd 管理yuminstall-y kubelet systemctlenablekubelet systemctl start kubeletyum安装的kubelet是二进制方式运行的。2.3 核心配置/var/lib/kubelet/config.yaml配置项作用典型值staticPodPath静态 Pod 监控目录/etc/kubernetes/manifestscgroupDrivercgroup 驱动必须与容器运行时一致systemdclusterDNS集群 DNS 服务 IPCoreDNS10.96.0.10clusterDomain集群域名后缀cluster.localauthentication与 apiserver 双向 TLS 认证使用 CA 证书authorization鉴权模式WebhookrotateCertificates证书自动轮转true关键文件/etc/kubernetes/kubelet.conf连接 apiserver 的 kubeconfig 文件/etc/kubernetes/pki/ca.crt集群根 CA 证书/var/lib/kubelet/pki/kubelet 自身证书# 查看 连接 apiserver 的 kubeconfig 文件cat/var/lib/kubelet/config.yamlapiVersion:kubelet.config.k8s.io/v1beta1authentication:anonymous:enabled:falsewebhook:cacheTTL:0senabled:truex509:clientCAFile:/etc/kubernetes/pki/ca.crtauthorization:mode:Webhookwebhook:cacheAuthorizedTTL:0scacheUnauthorizedTTL:0scgroupDriver:systemdclusterDNS:-10.96.0.10clusterDomain:cluster.localcpuManagerReconcilePeriod:0sevictionPressureTransitionPeriod:0sfileCheckFrequency:0shealthzBindAddress:127.0.0.1healthzPort:10248httpCheckFrequency:0simageMinimumGCAge:0skind:KubeletConfigurationlogging:flushFrequency:0options:json:infoBufferSize:0verbosity:0memorySwap:{}nodeStatusReportFrequency:0snodeStatusUpdateFrequency:0srotateCertificates:trueruntimeRequestTimeout:0sshutdownGracePeriod:0sshutdownGracePeriodCriticalPods:0sstaticPodPath:/etc/kubernetes/manifestsstreamingConnectionIdleTimeout:0ssyncFrequency:0svolumeStatsAggPeriod:0s三、kube-proxy3.1 定义与作用kube-proxy 是运行在每个节点上的网络代理组件实现 Kubernetes Service 的抽象。核心职责职责说明Service 后端负载均衡将访问 ClusterIP 的流量转发至后端 Pod服务发现监听 Service 与 Endpoints 变化动态更新转发规则对外暴露服务NodePort、LoadBalancer 类型的流量入口本质kube-proxy 不是网络插件不负责 Pod 跨主机通信Pod 网络由 CNI 实现。3.2 部署方式DaemonSet# kubeadm 部署的集群kube-proxy 以 DaemonSet 形式运行kubectl get daemonset -n kube-system kube-proxy优势声明式管理只需配置一次新增节点自动运行故障自愈Pod 异常时 DaemonSet 自动重建统一版本全集群 kube-proxy 版本一致3.3 工作模式模式原理优缺点iptables默认维护 iptables NAT 规则稳定可靠大规模集群规则数庞大IPVS使用内核 IPVS 虚拟服务器高性能支持更复杂的负载均衡算法userspace已弃用用户态代理性能差仅作历史参考规则恢复机制# 删除 kube-proxy Pod 将触发重建自动恢复 iptables 规则kubectl delete pod -n kube-system kube-proxy-xxx四、集群通信架构4.1 通信协议Kubernetes 集群所有组件间通信均采用 HTTPS 双向 TLS 认证。通信链路证书类型特点kubelet ↔ apiserver客户端证书双向验证kube-proxy ↔ apiserver客户端证书双向验证apiserver ↔ etcd客户端证书双向验证apiserver ↔ kubelet客户端证书apiserver 访问 kubelet 获取 metrics/logscontroller-manager/scheduler ↔ apiserver客户端证书双向验证与传统 HTTPS 区别单向 TLS仅客户端验证服务端证书双向 TLSmTLS服务端与客户端互相验证证书Kubernetes 采用此模式4.2 架构全景图┌─────────────────────┐ │ etcd │ │ 静态 Pod │ └──────────┬──────────┘ │ ▼ ┌─────────────────────┐ │ kube-apiserver │◄────┐ │ 静态 Pod │ │ └──────────┬──────────┘ │ │ │ ┌───────────────────────┼────────────────┼───────────────┐ │ │ │ │ ▼ ▼ ▼ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ kcm │ │ kube-scheduler │ │ 各种第三方 │ │ │ 静态 Pod │ │ 静态 Pod │ │ Controller │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ │ │ └───────────────────────┼────────────────┘ │ │ │ ▼ │ ┌─────────────────────┐ │ │ Node(s) │ │ │ ┌───────────────┐ │ │ │ │ kubelet │──┘ │ │ │ 二进制 │ HTTPS(mTLS) │ │ └───────────────┘ ▲ │ │ ┌───────────────┐ │ │ │ │ kube-proxy │──┘ │ │ │ DaemonSet │ HTTPS(mTLS) │ │ └───────────────┘ │ │ ┌───────────────┐ │ │ │ CNI │Pod 网络非 mTLS │ │ │ (DaemonSet) │ │ │ └───────────────┘ │ └─────────────────────────────────────────┘4.3 关键架构特征特征说明apiserver 为中心所有组件只与 apiserver 通信组件间不直接通信双向 TLS全链路 mTLS 加密认证声明式 API所有组件均为 apiserver 的客户端通过 watch 机制获取状态变更可扩展性通过 CRD 第三方 Controller 扩展平台能力五、第三方控制器与扩展机制5.1 需求背景内置控制器Deployment、StatefulSet 等仅能管理 Kubernetes 原生资源。业务需求云服务商集成ALB Ingress、云盘自动挂载自定义业务编排逻辑外部系统联动5.2 扩展方式扩展点实现方式示例自定义资源CRD定义新的 API 对象VirtualMachine、Database自定义控制器监听 CRD 变化驱动实际状态云盘控制器、负载均衡器控制器OperatorCRD 自定义控制器封装etcd-operator、prometheus-operator5.3 架构位置第三方控制器与 kube-controller-manager 并列均作为 apiserver 的客户端均遵循控制器模式Reconcile Loop均支持 Leader Election 实现高可用六、节点组件故障排查6.1 kubelet 常见问题现象排查命令常见原因kubelet 未运行systemctl status kubelet未启动、cgroup 驱动不匹配Node 状态 NotReadyjournalctl -u kubelet -f网络插件未就绪、证书过期Pod 无法创建kubectl describe pod磁盘压力、内存压力、静态 Pod 路径错误6.2 kube-proxy 常见问题现象排查命令常见原因Service ClusterIP 无法访问iptables -t nat -L -ngrep NodePort 无法访问kubectl logs -n kube-system kube-proxy-xxx内核模块未加载IPVS部分后端不可达kubectl get endpoints serviceEndpoints 未正确更新iptables 规则恢复kubectl delete pod -n kube-system -l k8s-appkube-proxy七、总结组件部署形态核心依赖职责边界kubelet二进制进程无独立管理静态 PodPod 生命周期kube-proxyDaemonSetapiserverService 网络代理CNI 插件DaemonSet无Pod 跨主机通信核心结论kubelet 是节点的“心脏”——以二进制形式常驻独立于集群控制平面kube-proxy 是 Service 的“翻译官”——将虚拟 IP 转化为具体转发规则Pod 跨主机通信 ≠ kube-proxy——这是 CNI 的职责常见混淆点全链路 mTLS——Kubernetes 安全架构的基石控制器模式可扩展——第三方 Controller 与核心控制器平等协作一句话架构kubelet 管死活kube-proxy 管流量CNI 管连通三者合一构成节点运行时的完整能力。