Kubelet 配置参数深度分析报告
已配置但需优化的参数clusterDNS: 246.96.0.10 → 需验证缺失的关键参数systemReserved (资源预留)kubeReserved (资源预留)containerLogMaxSize (日志大小)podPidsLimit (PID限制)配置正确的参数。
·
目录标题
Kubelet 配置参数深度分析报告
生成时间: 2026-01-19
分析对象: /var/lib/kubelet/config.yaml
报告版本: 4.0 (最新配置验证版)
📋 目录
配置状态总览
当前配置完整性
| 类别 | 已配置参数数量 | 需优化的参数 | 缺失的关键参数 |
|---|---|---|---|
| 认证授权 | 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% # 🔄 值偏低
问题分析:
memory.available: 100Mi与evictionHard相同,软驱逐没有意义- 磁盘阈值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
参考资料
官方文档
- Kubelet Configuration (v1beta1) - Kubelet配置API参考
- Node-pressure Eviction - 驱逐机制详解
- Reserve Compute Resources for System Daemons - 资源预留指南
- Kubernetes Garbage Collection - 垃圾回收机制
- Process ID Limits And Reservations - PID限制配置
社区资源
总结
配置状态总结
已配置但需优化的参数 (10个):
- evictionHard.memory.available: 100Mi → 4Gi
- evictionSoft.memory.available: 100Mi → 6Gi
- evictionSoftGracePeriod.memory.available: 10s → 2m
- evictionMaxPodGracePeriod: 30 → 60
- containerLogMaxFiles: 2 → 5
- imageMinimumGCAge: 0s → 5m
- ExecProbeTimeout: false → true
- logging.flushFrequency: 0 → 5s
- clusterDNS: 246.96.0.10 → 需验证
- streamingConnectionIdleTimeout: 0s → 30m
缺失的关键参数 (4个):
- systemReserved (资源预留)
- kubeReserved (资源预留)
- containerLogMaxSize (日志大小)
- podPidsLimit (PID限制)
配置正确的参数:
- authentication/authorization ✅
- cgroupDriver: systemd ✅
- tlsCipherSuites ✅
- rotateCertificates: true ✅
更多推荐



所有评论(0)