当前位置: 首页 > news >正文

8.k8s-node组件介绍

k8s-node组件介绍

    • 一、节点组件概述
    • 二、kubelet
      • 2.1 定义与作用
      • 2.2 部署方式
      • 2.3 核心配置(/var/lib/kubelet/config.yaml)
    • 三、kube-proxy
      • 3.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。


二、kubelet

2.1 定义与作用

kubelet 是运行在每个节点上的 Kubernetes 代理进程,负责与 Master 通信并管理节点上的容器化工作负载。

核心职责:

职责说明
Pod 生命周期管理创建、启动、停止、删除 Pod 中的容器
状态上报定期向 apiserver 报告节点与 Pod 状态
健康检查执行 livenessProbe、readinessProbe
资源监控采集节点与容器的 CPU、内存使用数据
Volume 管理挂载和卸载 Pod 声明的存储卷
静态 Pod 管理监控staticPodPath目录,自动创建/删除静态 Pod

2.2 部署方式

二进制进程:

# 通过 yum 安装,systemd 管理yuminstall-y kubelet systemctlenablekubelet systemctl start kubelet

yum安装的kubelet是二进制方式运行的。

2.3 核心配置(/var/lib/kubelet/config.yaml)

配置项作用典型值
staticPodPath静态 Pod 监控目录/etc/kubernetes/manifests
cgroupDrivercgroup 驱动,必须与容器运行时一致systemd
clusterDNS集群 DNS 服务 IP(CoreDNS)10.96.0.10
clusterDomain集群域名后缀cluster.local
authentication与 apiserver 双向 TLS 认证使用 CA 证书
authorization鉴权模式Webhook
rotateCertificates证书自动轮转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.yaml
apiVersion: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:"0"verbosity:0memorySwap:{}nodeStatusReportFrequency:0snodeStatusUpdateFrequency:0srotateCertificates:trueruntimeRequestTimeout:0sshutdownGracePeriod:0sshutdownGracePeriodCriticalPods:0sstaticPodPath:/etc/kubernetes/manifestsstreamingConnectionIdleTimeout:0ssyncFrequency:0svolumeStatsAggPeriod:0s

三、kube-proxy

3.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/logs
controller-manager/scheduler ↔ apiserver客户端证书双向验证

与传统 HTTPS 区别:

  • 单向 TLS:仅客户端验证服务端证书
  • 双向 TLS(mTLS):服务端与客户端互相验证证书,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 对象VirtualMachineDatabase
自定义控制器监听 CRD 变化,驱动实际状态云盘控制器、负载均衡器控制器
OperatorCRD + 自定义控制器封装etcd-operator、prometheus-operator

5.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 <service>Endpoints 未正确更新

iptables 规则恢复:

kubectl delete pod -n kube-system -l k8s-app=kube-proxy

七、总结

组件部署形态核心依赖职责边界
kubelet二进制进程无(独立管理静态 Pod)Pod 生命周期
kube-proxyDaemonSetapiserverService 网络代理
CNI 插件DaemonSetPod 跨主机通信

核心结论:

  1. kubelet 是节点的“心脏”——以二进制形式常驻,独立于集群控制平面
  2. kube-proxy 是 Service 的“翻译官”——将虚拟 IP 转化为具体转发规则
  3. Pod 跨主机通信 ≠ kube-proxy——这是 CNI 的职责,常见混淆点
  4. 全链路 mTLS——Kubernetes 安全架构的基石
  5. 控制器模式可扩展——第三方 Controller 与核心控制器平等协作

一句话架构:

kubelet 管死活,kube-proxy 管流量,CNI 管连通,三者合一构成节点运行时的完整能力。

http://www.jsqmd.com/news/375734/

相关文章:

  • 轮式并联五连杆下肢机器人运动控制:从建模到强化学习仿真训练
  • 9. k8s-ReplicaSets介绍
  • PolymerGNN完整复现:面向聚酯树脂Tg与IV预测的单任务/多任务图神经网络架构
  • 甲基化生物信息学分析及批次效应校正全流程
  • [ABC400E] Ringos Favorite Numbers 3 题解
  • 万寿菊多酚提取物的液质联用(LC-MS/MS)、FTIR表征及抗氧化活性评估——全流程分析与代码实现
  • 基于stm32的四旋翼无人机控制系统设计
  • 股票智能体:多标准图形比对、归档与实时分类系统
  • 开发1
  • Katago+lizzieyzy试用:当食不食全局破
  • 生产环境idea2024创建JavaWeb项目以及配置Tomcat最佳实践与性能优化
  • 【计算机毕业设计案例】基于springboot的小学生课外研学活动管理系统基于springboot的小学生研学活动管理系统(程序+文档+讲解+定制)
  • QT TCP网络编程
  • python私有属性
  • 大数据场景中Zookeeper的权限管理秘籍
  • 读后感1
  • 2026卫生间隔断品牌推荐:中高端商用空间选型指南,5大优质品牌深度测评 - 博客湾
  • 基于Nodejs+vue+ElementUI的陶瓷销售商城平台的设计与实现
  • 基于Nodejs+vue+ElementUI的贫困地区儿童在线帮扶系统
  • AI嵌入模型在社交媒体分析中的实战案例
  • BISHI42 余数求和
  • YOLO26涨点改进 | 全网独家首发、卷积改进篇 | TCSVT 2025 | 引入SPASPP空洞空间金字塔池化,改进原SPPF模块,增强了多尺度感知能力与细节保持能力,适合红外小目标检测任务
  • P1175 学习笔记
  • python __getitem__() __setitem__() 方法
  • 计算机Java毕设实战-基于SpringBoot的研学旅游服务基于springboot的小学生研学活动管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 计算机Java毕设实战-基于springboot+vue的陶瓷售卖系统基于springboot的陶瓷售卖系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Yak学习1:环境搭建和基础语法1
  • 【课程设计/毕业设计】基于springboot的小学生研学活动管理系统基于Java springboot小学生研学管理系统考勤签到活动报名【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于springboot的陶瓷售卖系统陶瓷购物网站【附源码、数据库、万字文档】
  • Java毕设项目:基于springboot的小学生研学活动管理系统(源码+文档,讲解、调试运行,定制等)