Kubelet 配置参数深度分析报告

生成时间: 2026-01-19
分析对象: /var/lib/kubelet/config.yaml
报告版本: 4.0 (最新配置验证版)


📋 目录

  1. 配置状态总览
  2. 已配置参数分析
  3. 缺失参数分析
  4. 风险评估矩阵
  5. 优化建议配置
  6. 参考资料

配置状态总览

当前配置完整性

类别已配置参数数量需优化的参数缺失的关键参数
认证授权700
基本配置3🟡 1 (DNS)0
资源驱逐11🔴 3🟠 2 (Hard中缺失)
日志管理3🟠 2🟠 1
镜像管理1🟠 1🟠 2
特性门控1🔴 10
安全配置1300
性能参数10🟡 20
健康检查200
关机配置2🟡 20
资源预留0-🔴 2
进程管理0-🟠 1
总计53148

图例说明:

  • 🔴 严重风险 - 可能导致系统崩溃或数据丢失
  • 🟠 重要优化 - 建议优化以提升稳定性
  • 🟡 可选优化 - 择机处理
  • ✅ 配置正确 - 无需修改
  • ⚠️ 需验证 - 配置非标准或需确认

完整配置参数校验表

���配置参数 (55个)
#参数路径实际值状态说明
认证授权 (7)
1authentication.anonymous.enabledfalse✅正确禁用匿名访问
2authentication.webhook.cacheTTL0s✅使用默认值
3authentication.webhook.enabledtrue✅Webhook认证已启���
4authentication.x509.clientCAFile/etc/kubernetes/pki/ca.crt✅CA证书路径正确
5authorization.modeWebhook✅Webhook授权模式
6authorization.webhook.cacheAuthorizedTTL0s✅使用默认值
7authorization.webhook.cacheUnauthorizedTTL0s✅使用默认值
基本配置 (3)
8cgroupDriversystemd✅推荐的cgroup驱动
9clusterDNS246.96.0.10⚠️非标准IP段,需验证
10clusterDomaincluster.local✅标准集群域名
资源驱逐 (13)
11evictionHard.memory.available100Mi🔴值过低,建议4Gi
12evictionSoft.memory.available100Mi🔴与Hard相同,建议6Gi
13evictionSoft.imagefs.available5%🟡值偏低,建议15%
14evictionSoft.imagefs.inodesFree5%🟡值偏低,建议15%
15evictionSoft.nodefs.available5%🟡值偏低,建议15%
16evictionSoft.nodefs.inodesFree5%🟡值偏低,建议15%
17evictionSoftGracePeriod.memory.available10s🟠宽限期过短,建议2m
18evictionSoftGracePeriod.imagefs.available30s🟡建议增加到2m
19evictionSoftGracePeriod.nodefs.available30s🟡建议增加到2m
20evictionSoftGracePeriod.imagefs.inodesFree30s🟡建议增加到2m
21evictionSoftGracePeriod.nodefs.inodesFree30s🟡建议增加到2m
22evictionMaxPodGracePeriod30🟠数据库建议60
23evictionPressureTransitionPeriod0s🟡使用默认值5m
日志管理 (4)
24containerLogMaxFiles2🟠值偏少,建议5
25logging.flushFrequency0🟡建议改为5s
26logging.verbosity0✅正确的日志级别
27logging.options.json.infoBufferSize“0”✅无缓冲
镜像管理 (1)
28imageMinimumGCAge0s🟠建议改为5m
特性门控 (1)
29featureGates.ExecProbeTimeoutfalse🔴探针无超时保护,危险
安全配置 (13)
30rotateCertificatestrue✅证书轮换已启用
31-41tlsCipherSuites[0-11]12个加密套件✅/🟡主要使用强加密,含CBC模式
性能参数 (10)
42cpuManagerReconcilePeriod0s✅默认5s
43fileCheckFrequency0s✅默认20s
44httpCheckFrequency0s✅默认20s
45nodeStatusReportFrequency0s✅默认5m
46nodeStatusUpdateFrequency0s✅默认10s
47runtimeRequestTimeout0s✅默认2m
48syncFrequency0s✅默认1m
49streamingConnectionIdleTimeout0s🟡默认4h,建议30m
50volumeStatsAggPeriod0s✅默认1m
健康检查 (2)
51healthzBindAddress127.0.0.1✅仅本地监听,安全
52healthzPort10248✅标准健康检查端口
关机配置 (2)
53shutdownGracePeriod0s🟡未启用优雅关机
54shutdownGracePeriodCriticalPods0s🟡未启用优雅关机
其他 (2)
55memorySwap{}✅内存交换配置
56staticPodPath/etc/kubernetes/manifests✅标准静态Pod路径
缺失参数 (8个)
#参数默认值风险等级建议值
1containerLogMaxSize10Mi🟠100Mi
2imageGCHighThresholdPercent85🟡75
3imageGCLowThresholdPercent80🟡65
4systemReserved无🔴cpu:2,memory:4Gi
5kubeReserved无🔴cpu:2,memory:4Gi
6podPidsLimit无🟠4096
7evictionHard.imagefs.available无🟠10%
8evictionHard.nodefs.available无🟠10%

配置文件结构图

/var/lib/kubelet/config.yaml
├── ✅ authentication/authorization (认证授权 - 配置正确)
├── ✅ cgroupDriver: systemd (cgroup驱动 - 配置正确)
├── ⚠️ clusterDNS: 246.96.0.10 (DNS配置 - 需验证)
├── 🔄 evictionHard (驱逐策略 - 已配置但需优化)
├── 🔄 evictionSoft (软驱逐 - 已配置但需优化)
├── 🔄 containerLogMaxFiles: 2 (日志管理 - 值需增加)
├── ❌ containerLogMaxSize (日志大小 - 缺失)
├── 🔄 imageMinimumGCAge: 0s (镜像回收 - 值需优化)
├── ❌ imageGC阈值 (镜像GC阈值 - 缺失)
├── 🔴 ExecProbeTimeout: false (特性门控 - 危险配置)
├── ✅ logging (日志记录 - 配置正确)
├── ✅ tlsCipherSuites (TLS加密套件 - 配置良好)
├── 🔄 多个0s参数 (使用默认值 - 可明确配置)
├── ❌ systemReserved/kubeReserved (资源预留 - 缺失)
└── ❌ podPidsLimit (PID限制 - 缺失)

已配置参数分析

1. 认证与授权配置 ✅

1.1 authentication
authentication:
  anonymous:
    enabled: false          # ✅ 正确
  webhook:
    cacheTTL: 0s           # ✅ 使用默认值
    enabled: true          # ✅ 正确
  x509:
    clientCAFile: /etc/kubernetes/pki/ca.crt  # ✅ 正确

分析: ✅ 配置正确,无需修改


1.2 authorization
authorization:
  mode: Webhook            # ✅ 正确
  webhook:
    cacheAuthorizedTTL: 0s   # ✅ 使用默认值
    cacheUnauthorizedTTL: 0s  # ✅ 使用默认值

分析: ✅ 配置正确,无需修改


2. 容器运行时配置 ✅

cgroupDriver: systemd

分析: ✅ 配置正确

  • systemd是现代Kubernetes的推荐选择
  • 确保容器运行时也配置为systemd

3. DNS配置 ⚠️

clusterDNS:
- 246.96.0.10         # ⚠️ 非标准IP段,需验证
clusterDomain: cluster.local

分析: ⚠️ 需要验证

  • 246.96.0.10 不是标准的服务网段
  • 需要确认是否与实际CoreDNS Pod IP匹配

验证命令:

kubectl get svc -n kube-system kube-dns -o jsonpath='{.spec.clusterIP}'

4. 日志管理配置 🔄

4.1 containerLogMaxFiles: 2
containerLogMaxFiles: 2    # 🔄 已配置但值需增加
项目当前值推荐值风险等级
containerLogMaxFiles25🟠

问题分析:

当前配置:
- 保留当前日志 + 2个旧日志
- 假设默认 containerLogMaxSize = 10Mi
- 总日志空间 = 3 × 10Mi = 30Mi per container

对于数据库应用,30Mi的日志空间可能在5-10分钟内轮转完,
导致历史故障信息丢失。

建议:

containerLogMaxFiles: 5
containerLogMaxSize: 100Mi   # 新增此配置

4.2 logging 配置
logging:
  flushFrequency: 0       # 🔄 可优化为 5s
  options:
    json:
      infoBufferSize: "0"
  verbosity: 0            # ✅ 正确

分析:

  • flushFrequency: 0 意味着立即刷新,可能导致频繁I/O
  • 建议改为 5s 批量刷新

建议:

logging:
  flushFrequency: 5s      # 批量刷新,减少I/O
  verbosity: 0

5. 资源驱逐策略 🔄🔴

5.1 evictionHard 配置
evictionHard:
  memory.available: 100Mi    # 🔴 已配置但值过低!
项目当前值推荐值 (32GB节点)风险等级
evictionHard.memory.available100Mi4Gi🔴 严重
evictionHard.imagefs.available未配置10%🟠
evictionHard.nodefs.available未配置10%🟠
evictionSoft.memory.available100Mi6Gi🔴 与Hard相同
evictionSoft.imagefs.available5%15%🟡 值偏低
evictionSoft.nodefs.available5%15%🟡 值偏低

严重问题分析:

为什么 100Mi 是危险的?

系统内存消耗分析 (当可用内存 = 100Mi 时):

系统进程需求:
- kernel: ~50-100Mi
- systemd: ~20-30Mi
- sshd: ~10Mi
- 其他守护进程: ~50Mi
小计: ~130-190Mi

Kubelet自身: ~100-200Mi
容器运行时: ~200-500Mi

总系统需求: ~430-890Mi >> 100Mi

结论: 系统会在kubelet驱逐之前触发OOM Killer!

不同节点内存的推荐值:

节点内存evictionHard.memoryevictionSoft.memory
8GB500Mi-1Gi1Gi-1.5Gi
16GB1Gi-2Gi2Gi-3Gi
32GB2Gi-4Gi4Gi-6Gi
64GB4Gi-8Gi8Gi-12Gi
128GB+8Gi-16Gi16Gi-24Gi

建议配置 (假设32GB节点):

evictionHard:
  memory.available: 4Gi      # 从100Mi增加到4Gi
  imagefs.available: 10%
  nodefs.available: 10%

5.2 evictionSoft 配置
evictionSoft:
  imagefs.available: 5%      # 🔄 值偏低
  imagefs.inodesFree: 5%     # 🔄 值偏低
  memory.available: 100Mi    # 🔴 与evictionHard相同,失去软驱逐意义
  nodefs.available: 5%       # 🔄 值偏低
  nodefs.inodesFree: 5%      # 🔄 值偏低

问题分析:

  1. memory.available: 100Mi 与evictionHard相同,软驱逐没有意义
  2. 磁盘阈值5%过于紧张,应该提高到10-15%

建议配置:

evictionSoft:
  memory.available: 6Gi      # 高于evictionHard的4Gi
  imagefs.available: 15%
  imagefs.inodesFree: 15%
  nodefs.available: 15%
  nodefs.inodesFree: 15%

5.3 evictionSoftGracePeriod 配置
evictionSoftGracePeriod:
  imagefs.available: 30s     # 🔄 时间偏短
  imagefs.inodesFree: 30s    # 🔄 时间偏短
  memory.available: 10s      # 🔴 时间太短!
  nodefs.available: 30s      # 🔄 时间偏短
  nodefs.inodesFree: 30s     # 🔄 时间偏短

问题分析:

为什么 10秒的宽限期不够?

内存回收操作所需时间:
1. 页面缓存回收: 5-30秒
2. 驱回脏页: 10-60秒
3. Slab回收: 5-15秒
4. Kubelet驱逐Pod流程: 30-60秒

总计: 至少需要 60-120秒

建议配置:

evictionSoftGracePeriod:
  memory.available: 2m       # 从10秒增加到2分钟
  imagefs.available: 2m
  imagefs.inodesFree: 2m
  nodefs.available: 2m
  nodefs.inodesFree: 2m

5.4 evictionMaxPodGracePeriod: 30
evictionMaxPodGracePeriod: 30    # 🔄 已配置,数据库建议增加到60

分析:

  • 30秒对于一般应用足够
  • 对于数据库应用(MySQL/PostgreSQL),建议增加到60秒

建议:

evictionMaxPodGracePeriod: 60    # 数据库平台推荐值

6. 镜像垃圾回收配置 🔄

6.1 imageMinimumGCAge: 0s
imageMinimumGCAge: 0s    # 🔄 已配置但值需优化
项目当前值推荐值风险等级
imageMinimumGCAge0s5m🟠

问题分析:

imageMinimumGCAge: 0s 的风险:
- 镜像可能立即被删除
- Pod重启时可能需要重新拉取镜像
- 浪费带宽和时间

建议配置:

imageMinimumGCAge: 5m             # 从0s改为5分钟

6.2 缺失的镜像GC阈值 ❌

当前状态: 未配置以下关键参数

imageGCHighThresholdPercent: 85   # ❌ 未配置,使用默认值
imageGCLowThresholdPercent: 80    # ❌ 未配置,使用默认值

问题分析:

  • 默认85%的阈值偏高,可能导致磁盘压力
  • 建议降低到75%/65%

建议配置:

imageGCHighThresholdPercent: 75   # 在75%时开始清理
imageGCLowThresholdPercent: 65    # 清理到65%停止

7. 特性门控配置 🔴

7.1 featureGates.ExecProbeTimeout: false
featureGates:
  ExecProbeTimeout: false    # 🔴 已配置但值危险!
项目当前值Kubernetes 1.20+默认值风险等级
ExecProbeTimeoutfalsetrue🔴 严重

危险分析:

ExecProbeTimeout: false 的后果:

1. Pod配置探针:
   livenessProbe:
     exec:
       command: ["cat", "/tmp/health"]
     timeoutSeconds: 5    # ❌ 这个配置被忽略!

2. 如果 /tmp/health 文件被锁定或NFS挂起
   → cat命令永不返回
   → 探针永不超时
   → kubelet线程阻塞
   → 无法检测Pod健康状态

建议配置:

featureGates:
  ExecProbeTimeout: true   # 启用探针超时保护!

8. 安全配置 ✅

8.1 TLS密码套件
tlsCipherSuites:
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA      # ⚠️ 较弱
- TLS_RSA_WITH_AES_128_CBC_SHA           # ⚠️ 较弱
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA     # ⚠️ 较弱
- TLS_RSA_WITH_AES_128_GCM_SHA256
- TLS_RSA_WITH_AES_256_CBC_SHA           # ⚠️ 较弱
- TLS_RSA_WITH_AES_256_GCM_SHA384

分析: ✅ 配置良好,可选优化

  • 主要使用强加密套件 (ECDHE + GCM/CHACHA20)
  • 包含一些CBC模式套件用于兼容性
  • 如需更高安全性,可移除CBC和RSA-only套件

9. 性能调优参数 (0s参数)

以下参数设置为 0s,表示使用kubelet默认值:

cpuManagerReconcilePeriod: 0s      # 默认5s ✅
fileCheckFrequency: 0s             # 默认20s ✅
httpCheckFrequency: 0s             # 默认20s ✅
nodeStatusReportFrequency: 0s      # 默认5m ✅
nodeStatusUpdateFrequency: 0s      # 默认10s ✅
runtimeRequestTimeout: 0s          # 默认2m ✅
syncFrequency: 0s                  # 默认1m ✅
streamingConnectionIdleTimeout: 0s # 默认4h ⚠️ 建议30m
volumeStatsAggPeriod: 0s           # 默认1m ✅
evictionPressureTransitionPeriod: 0s # 默认5m ✅

分析:

  • 大部分参数使用默认值是合理的 ✅
  • streamingConnectionIdleTimeout: 0s (默认4h) 可能导致连接泄漏,建议明确设置为30m

可选优化:

streamingConnectionIdleTimeout: 30m  # 防止连接泄漏

10. 关机配置

shutdownGracePeriod: 0s                  # ❌ 未启用优雅关机
shutdownGracePeriodCriticalPods: 0s      # ❌ 未启用优雅关机

分析:

  • 优雅关机功能未启用
  • 节点关机时Pod会被强制终止

可选优化:

shutdownGracePeriod: 30s
shutdownGracePeriodCriticalPods: 10s

缺失参数分析

1. 资源预留配置 🔴 最关键缺失

当前状态: 完全未配置

systemReserved:      # ❌ 缺失
  cpu: ?
  memory: ?
  ephemeral-storage: ?

kubeReserved:        # ❌ 缺失
  cpu: ?
  memory: ?
  ephemeral-storage: ?

为什么这是最关键的缺失?

Node Allocatable 计算公式:

Node Allocatable =
  Node Capacity -
  (systemReserved + kubeReserved + evictionHard)

示例 (32GB内存节点):

未配置资源预留:
Node Capacity:      32000Mi
evictionHard:       100Mi
--------------------------------
Node Allocatable:   31900Mi  ← Pod可以使用几乎全部内存!

问题:
1. 系统进程和K8s组件没有预留资源
2. 当Pod使用全部内存时,系统可能不稳定
3. 资源竞争导致节点故障

配置资源预留后:
Node Capacity:      32000Mi
systemReserved:     4096Mi (4Gi)
kubeReserved:       4096Mi (4Gi)
evictionHard:       4096Mi (4Gi)
--------------------------------
Node Allocatable:   19712Mi  ← Pod安全可用内存

建议配置 (32GB节点):

systemReserved:
  cpu: 2000m              # 2核心
  memory: 4Gi             # 4GB内存
  ephemeral-storage: 4Gi

kubeReserved:
  cpu: 2000m              # 2核心
  memory: 4Gi             # 4GB内存
  ephemeral-storage: 4Gi

2. PID限制配置 🟠

当前状态: 未配置

podPidsLimit: ?     # ❌ 缺失

风险: fork炸弹攻击可能导致节点崩溃

建议配置:

podPidsLimit: 4096

3. 日志大小配置 🟠

当前状态: 未配置

containerLogMaxSize: ?    # ❌ 缺失,使用默认10Mi

建议配置:

containerLogMaxSize: 100Mi

4. 镜像拉取优化 🟡

当前状态: 未配置

serializeImagePulls: ?          # ❌ 缺失,默认true
registryPullQPS: ?              # ❌ 缺失,默认5
registryBurst: ?                # ❌ 缺失,默认10
imagePullProgressDeadline: ?    # ❌ 缺失,默认1m

建议配置:

serializeImagePulls: false           # 启用并行拉取
registryPullQPS: 10
registryBurst: 20
imagePullProgressDeadline: 5m

5. CPU管理配置 🟡 (可选)

当前状态: 未配置

cpuManagerPolicy: ?        # ❌ 缺失,默认none

说明: 仅在需要CPU绑定的应用时配置

可选配置:

cpuManagerPolicy: static
topologyManagerPolicy: best-effort

风险评估矩阵

严重程度分级

等级图标说明立即处理
🔴 严重High可能导致系统崩溃或数据丢失是
🟠 警告Medium可能影响性能或稳定性建议处理
🟡 注意Low配置不清晰或非最优择机处理
✅ 正确OK配置正确否

当前配置风险评估

参数当前值状态问题风险等级影响
evictionHard.memory100Mi🔄已配置阈值过低🔴 严重系统OOM风险
ExecProbeTimeoutfalse🔄已配置探针无超时🔴 严重健康检查失效
systemReserved未配置❌缺失无资源预留🔴 严重资源竞争
kubeReserved未配置❌缺失无K8s预留🔴 严重资源竞争
containerLogMaxFiles2🔄已配置日志保留少🟠 警���故障排查困难
evictionSoft.memory100Mi🔄已配置与Hard相同🟠 警告软驱逐失效
evictionSoftGracePeriod10s🔄已配置宽限期过短🟠 警告无法优雅回收
imageMinimumGCAge0s🔄已配置可能早回收🟠 警告频繁拉取镜像
containerLogMaxSize未配置❌缺失默认10Mi🟠 警告日志快速轮转
podPidsLimit未配置❌缺失无PID限制🟠 警告fork炸弹风险
imageGC阈值未配置❌缺失默认85%🟡 注意磁盘紧张时风险
clusterDNS246.96.0.10🔄已配置非标准IP🟡 注意需验证
streamingConnectionIdleTimeout0s🔄已配置默认4h🟡 注意可能连接泄漏
logging.flushFrequency0🔄已配置立即刷新🟡 注意I/O稍高

优化建议配置

完整优化配置文件 (32GB节点示例)

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration

# ==================== 认证授权 (保持不变) ====================
authentication:
  anonymous:
    enabled: false
  webhook:
    cacheTTL: 0s
    enabled: true
  x509:
    clientCAFile: /etc/kubernetes/pki/ca.crt

authorization:
  mode: Webhook
  webhook:
    cacheAuthorizedTTL: 0s
    cacheUnauthorizedTTL: 0s

# ==================== 基本配置 ====================
cgroupDriver: systemd
clusterDNS:
- 10.96.0.10           # ⚠️ 验证是否需要改为标准IP
clusterDomain: cluster.local

# ==================== 日志管理 (优化) ====================
containerLogMaxSize: 100Mi      # ✨ 新增
containerLogMaxFiles: 5         # 从2增加到5

logging:
  flushFrequency: 5s            # 从0改为5s
  options:
    json:
      infoBufferSize: "0"
  verbosity: 0

# ==================== 资源预留 (新增) ====================
systemReserved:
  cpu: 2000m                    # ✨ 新增
  memory: 4Gi                   # ✨ 新增
  ephemeral-storage: 4Gi        # ✨ 新增

kubeReserved:
  cpu: 2000m                    # ✨ 新增
  memory: 4Gi                   # ✨ 新增
  ephemeral-storage: 4Gi        # ✨ 新增

# ==================== 驱逐策略 (优化) ====================
evictionHard:
  memory.available: 4Gi         # 从100Mi增加到4Gi
  imagefs.available: 10%        # ✨ 新增
  nodefs.available: 10%         # ✨ 新增
  imagefs.inodesFree: 5%        # ✨ 新增
  nodefs.inodesFree: 5%         # ✨ 新增

evictionSoft:
  memory.available: 6Gi         # 从100Mi增加到6Gi
  imagefs.available: 15%        # 从5%增加到15%
  imagefs.inodesFree: 15%       # 从5%增加到15%
  nodefs.available: 15%         # 从5%增加到15%
  nodefs.inodesFree: 15%        # 从5%增加到15%

evictionSoftGracePeriod:
  memory.available: 2m          # 从10s增加到2m
  imagefs.available: 2m         # 从30s增加到2m
  imagefs.inodesFree: 2m        # 从30s增加到2m
  nodefs.available: 2m          # 从30s增加到2m
  nodefs.inodesFree: 2m         # 从30s增加到2m

evictionMaxPodGracePeriod: 60   # 从30增加到60
evictionPressureTransitionPeriod: 5m  # 从0s改为5m

# ==================== 镜像管理 (优化) ====================
imageMinimumGCAge: 5m           # 从0s改为5m
imageGCHighThresholdPercent: 75 # ✨ 新增
imageGCLowThresholdPercent: 65  # ✨ 新增
serializeImagePulls: false      # ✨ 新增
registryPullQPS: 10             # ✨ 新增
registryBurst: 20               # ✨ 新增
imagePullProgressDeadline: 5m   # ✨ 新增

# ==================== 进程管理 (新增) ====================
podPidsLimit: 4096              # ✨ 新增

# ==================== 特性门控 (优化) ====================
featureGates:
  ExecProbeTimeout: true        # 从false改为true ✅

# ==================== 安全配置 ====================
rotateCertificates: true
serverTLSBootstrap: true        # ✨ 新增
tlsMinVersion: VersionTLS12     # ✨ 新增

tlsCipherSuites:
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305

# ==================== 性能参数 ====================
cpuManagerReconcilePeriod: 5s
fileCheckFrequency: 20s
httpCheckFrequency: 20s
nodeStatusReportFrequency: 1m
nodeStatusUpdateFrequency: 10s
runtimeRequestTimeout: 5m
syncFrequency: 1m
streamingConnectionIdleTimeout: 30m  # ✨ 从0s改为30m
volumeStatsAggPeriod: 1m

# ==================== 优雅关机 (可选) ====================
shutdownGracePeriod: 30s         # ✨ 新增
shutdownGracePeriodCriticalPods: 10s  # ✨ 新增

# ==================== 其他配置 ====================
healthzBindAddress: 127.0.0.1
healthzPort: 10248
memorySwap: {}
staticPodPath: /etc/kubernetes/manifests

快速对比表

当前 vs 推荐

参数当前值推荐值优先级
驱逐策略
evictionHard.memory100Mi4Gi🔴 P0
evictionSoft.memory100Mi6Gi🔴 P0
evictionSoftGracePeriod.memory10s2m🟠 P1
evictionMaxPodGracePeriod3060🟠 P1
资源预留
systemReserved❌cpu:2,mem:4Gi🔴 P0
kubeReserved❌cpu:2,mem:4Gi🔴 P0
日志管理
containerLogMaxFiles25🟠 P1
containerLogMaxSize❌100Mi🟠 P1
logging.flushFrequency05s🟡 P2
镜像管理
imageMinimumGCAge0s5m🟠 P1
imageGCHighThresholdPercent❌75🟡 P2
imageGCLowThresholdPercent❌65🟡 P2
特性门控
ExecProbeTimeoutfalsetrue🔴 P0
进程管理
podPidsLimit❌4096🟠 P1
网络
streamingConnectionIdleTimeout0s30m🟡 P2

优先级说明:

  • P0: 立即修复,存在严重风险
  • P1: 一周内修复,重要优化
  • P2: 一个月内修复,可选优化

实施建议

阶段1: 紧急修复 (P0) - 立即执行

# 备份配置
cp /var/lib/kubelet/config.yaml /var/lib/kubelet/config.yaml.backup.$(date +%Y%m%d_%H%M%S)

需要修改的参数:

# 1. 修复驱逐阈值 (最重要!)
evictionHard:
  memory.available: 4Gi      # 从100Mi改为4Gi
evictionSoft:
  memory.available: 6Gi      # 从100Mi改为6Gi
evictionSoftGracePeriod:
  memory.available: 2m       # 从10s改为2m

# 2. 启用探针超时
featureGates:
  ExecProbeTimeout: true     # 从false改为true

# 3. 增加日志保留
containerLogMaxFiles: 5      # 从2改为5
containerLogMaxSize: 100Mi   # 新增
# 重启kubelet
systemctl restart kubelet
systemctl status kubelet
kubectl get nodes

阶段2: 重要优化 (P1) - 一周内

# 1. 配置资源预留 (关键!)
systemReserved:
  cpu: 2000m
  memory: 4Gi
  ephemeral-storage: 4Gi

kubeReserved:
  cpu: 2000m
  memory: 4Gi
  ephemeral-storage: 4Gi

# 2. 优化镜像管理
imageMinimumGCAge: 5m
imageGCHighThresholdPercent: 75
imageGCLowThresholdPercent: 65

# 3. 配置PID限制
podPidsLimit: 4096

# 4. 增加驱逐宽限期
evictionMaxPodGracePeriod: 60

阶段3: 完整优化 (P2) - 一个月内

# 优化网络和其他参数
logging:
  flushFrequency: 5s
streamingConnectionIdleTimeout: 30m
evictionPressureTransitionPeriod: 5m

参考资料

官方文档

  1. Kubelet Configuration (v1beta1) - Kubelet配置API参考
  2. Node-pressure Eviction - 驱逐机制详解
  3. Reserve Compute Resources for System Daemons - 资源预留指南
  4. Kubernetes Garbage Collection - 垃圾回收机制
  5. Process ID Limits And Reservations - PID限制配置

社区资源


总结

配置状态总结

已配置但需优化的参数 (10个):

  1. evictionHard.memory.available: 100Mi → 4Gi
  2. evictionSoft.memory.available: 100Mi → 6Gi
  3. evictionSoftGracePeriod.memory.available: 10s → 2m
  4. evictionMaxPodGracePeriod: 30 → 60
  5. containerLogMaxFiles: 2 → 5
  6. imageMinimumGCAge: 0s → 5m
  7. ExecProbeTimeout: false → true
  8. logging.flushFrequency: 0 → 5s
  9. clusterDNS: 246.96.0.10 → 需验证
  10. streamingConnectionIdleTimeout: 0s → 30m

缺失的关键参数 (4个):

  1. systemReserved (资源预留)
  2. kubeReserved (资源预留)
  3. containerLogMaxSize (日志大小)
  4. podPidsLimit (PID限制)

配置正确的参数:

  1. authentication/authorization ✅
  2. cgroupDriver: systemd ✅
  3. tlsCipherSuites ✅
  4. rotateCertificates: true ✅

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐