Kubelet 配置参数深度分析报告

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


📋 目录

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

配置状态总览

当前配置完整性

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

图例说明:

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

完整配置参数校验表

���配置参数 (55个)
# 参数路径 实际值 状态 说明
认证授权 (7)
1 authentication.anonymous.enabled false 正确禁用匿名访问
2 authentication.webhook.cacheTTL 0s 使用默认值
3 authentication.webhook.enabled true Webhook认证已启���
4 authentication.x509.clientCAFile /etc/kubernetes/pki/ca.crt CA证书路径正确
5 authorization.mode Webhook Webhook授权模式
6 authorization.webhook.cacheAuthorizedTTL 0s 使用默认值
7 authorization.webhook.cacheUnauthorizedTTL 0s 使用默认值
基本配置 (3)
8 cgroupDriver systemd 推荐的cgroup驱动
9 clusterDNS 246.96.0.10 ⚠️ 非标准IP段,需验证
10 clusterDomain cluster.local 标准集群域名
资源驱逐 (13)
11 evictionHard.memory.available 100Mi 🔴 值过低,建议4Gi
12 evictionSoft.memory.available 100Mi 🔴 与Hard相同,建议6Gi
13 evictionSoft.imagefs.available 5% 🟡 值偏低,建议15%
14 evictionSoft.imagefs.inodesFree 5% 🟡 值偏低,建议15%
15 evictionSoft.nodefs.available 5% 🟡 值偏低,建议15%
16 evictionSoft.nodefs.inodesFree 5% 🟡 值偏低,建议15%
17 evictionSoftGracePeriod.memory.available 10s 🟠 宽限期过短,建议2m
18 evictionSoftGracePeriod.imagefs.available 30s 🟡 建议增加到2m
19 evictionSoftGracePeriod.nodefs.available 30s 🟡 建议增加到2m
20 evictionSoftGracePeriod.imagefs.inodesFree 30s 🟡 建议增加到2m
21 evictionSoftGracePeriod.nodefs.inodesFree 30s 🟡 建议增加到2m
22 evictionMaxPodGracePeriod 30 🟠 数据库建议60
23 evictionPressureTransitionPeriod 0s 🟡 使用默认值5m
日志管理 (4)
24 containerLogMaxFiles 2 🟠 值偏少,建议5
25 logging.flushFrequency 0 🟡 建议改为5s
26 logging.verbosity 0 正确的日志级别
27 logging.options.json.infoBufferSize “0” 无缓冲
镜像管理 (1)
28 imageMinimumGCAge 0s 🟠 建议改为5m
特性门控 (1)
29 featureGates.ExecProbeTimeout false 🔴 探针无超时保护,危险
安全配置 (13)
30 rotateCertificates true 证书轮换已启用
31-41 tlsCipherSuites[0-11] 12个加密套件 ✅/🟡 主要使用强加密,含CBC模式
性能参数 (10)
42 cpuManagerReconcilePeriod 0s 默认5s
43 fileCheckFrequency 0s 默认20s
44 httpCheckFrequency 0s 默认20s
45 nodeStatusReportFrequency 0s 默认5m
46 nodeStatusUpdateFrequency 0s 默认10s
47 runtimeRequestTimeout 0s 默认2m
48 syncFrequency 0s 默认1m
49 streamingConnectionIdleTimeout 0s 🟡 默认4h,建议30m
50 volumeStatsAggPeriod 0s 默认1m
健康检查 (2)
51 healthzBindAddress 127.0.0.1 仅本地监听,安全
52 healthzPort 10248 标准健康检查端口
关机配置 (2)
53 shutdownGracePeriod 0s 🟡 未启用优雅关机
54 shutdownGracePeriodCriticalPods 0s 🟡 未启用优雅关机
其他 (2)
55 memorySwap {} 内存交换配置
56 staticPodPath /etc/kubernetes/manifests 标准静态Pod路径
缺失参数 (8个)
# 参数 默认值 风险等级 建议值
1 containerLogMaxSize 10Mi 🟠 100Mi
2 imageGCHighThresholdPercent 85 🟡 75
3 imageGCLowThresholdPercent 80 🟡 65
4 systemReserved 🔴 cpu:2,memory:4Gi
5 kubeReserved 🔴 cpu:2,memory:4Gi
6 podPidsLimit 🟠 4096
7 evictionHard.imagefs.available 🟠 10%
8 evictionHard.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    # 🔄 已配置但值需增加
项目 当前值 推荐值 风险等级
containerLogMaxFiles 2 5 🟠

问题分析:

当前配置:
- 保留当前日志 + 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.available 100Mi 4Gi 🔴 严重
evictionHard.imagefs.available 未配置 10% 🟠
evictionHard.nodefs.available 未配置 10% 🟠
evictionSoft.memory.available 100Mi 6Gi 🔴 与Hard相同
evictionSoft.imagefs.available 5% 15% 🟡 值偏低
evictionSoft.nodefs.available 5% 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.memory evictionSoft.memory
8GB 500Mi-1Gi 1Gi-1.5Gi
16GB 1Gi-2Gi 2Gi-3Gi
32GB 2Gi-4Gi 4Gi-6Gi
64GB 4Gi-8Gi 8Gi-12Gi
128GB+ 8Gi-16Gi 16Gi-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    # 🔄 已配置但值需优化
项目 当前值 推荐值 风险等级
imageMinimumGCAge 0s 5m 🟠

问题分析:

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+默认值 风险等级
ExecProbeTimeout false true 🔴 严重

危险分析:

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.memory 100Mi 🔄已配置 阈值过低 🔴 严重 系统OOM风险
ExecProbeTimeout false 🔄已配置 探针无超时 🔴 严重 健康检查失效
systemReserved 未配置 ❌缺失 无资源预留 🔴 严重 资源竞争
kubeReserved 未配置 ❌缺失 无K8s预留 🔴 严重 资源竞争
containerLogMaxFiles 2 🔄已配置 日志保留少 🟠 警��� 故障排查困难
evictionSoft.memory 100Mi 🔄已配置 与Hard相同 🟠 警告 软驱逐失效
evictionSoftGracePeriod 10s 🔄已配置 宽限期过短 🟠 警告 无法优雅回收
imageMinimumGCAge 0s 🔄已配置 可能早回收 🟠 警告 频繁拉取镜像
containerLogMaxSize 未配置 ❌缺失 默认10Mi 🟠 警告 日志快速轮转
podPidsLimit 未配置 ❌缺失 无PID限制 🟠 警告 fork炸弹风险
imageGC阈值 未配置 ❌缺失 默认85% 🟡 注意 磁盘紧张时风险
clusterDNS 246.96.0.10 🔄已配置 非标准IP 🟡 注意 需验证
streamingConnectionIdleTimeout 0s 🔄已配置 默认4h 🟡 注意 可能连接泄漏
logging.flushFrequency 0 🔄已配置 立即刷新 🟡 注意 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.memory 100Mi 4Gi 🔴 P0
evictionSoft.memory 100Mi 6Gi 🔴 P0
evictionSoftGracePeriod.memory 10s 2m 🟠 P1
evictionMaxPodGracePeriod 30 60 🟠 P1
资源预留
systemReserved cpu:2,mem:4Gi 🔴 P0
kubeReserved cpu:2,mem:4Gi 🔴 P0
日志管理
containerLogMaxFiles 2 5 🟠 P1
containerLogMaxSize 100Mi 🟠 P1
logging.flushFrequency 0 5s 🟡 P2
镜像管理
imageMinimumGCAge 0s 5m 🟠 P1
imageGCHighThresholdPercent 75 🟡 P2
imageGCLowThresholdPercent 65 🟡 P2
特性门控
ExecProbeTimeout false true 🔴 P0
进程管理
podPidsLimit 4096 🟠 P1
网络
streamingConnectionIdleTimeout 0s 30m 🟡 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社区

更多推荐