You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

kOps配置protectKernelDefaults与EventRateLimit后K8s集群启动失败

问题1:启用protectKernelDefaults: true后集群无日志无法启动

根因

该参数的作用是强制kubelet校验节点内核参数是否符合Kubernetes运行要求,校验不通过时kubelet会直接终止启动。kubelet启动失败会导致Master节点上的kube-apiserver、kube-scheduler等静态Pod无法被调度创建,因此/var/log下对应组件日志全部为空。

排查步骤

  • 登录故障Master节点,执行systemctl status kubelet查看kubelet运行状态,执行journalctl -u kubelet --no-pager查看kubelet启动日志,日志中会明确打印不符合要求的内核参数名称。
  • 常见缺失的内核参数包括:vm.overcommit_memory=1、kernel.panic=10、kernel.panic_on_oops=1、net.ipv4.ip_forward=1,你使用的Ubuntu 20.04镜像默认未配置以上参数,是该问题的高频诱因。

解决方案

通过kOps InstanceGroup的userData字段添加开机初始化脚本,在节点启动时提前配置所有需要的内核参数,再启用protectKernelDefaults即可。

问题2:启用EventRateLimit准入插件后apiserver启动失败

根因

EventRateLimit准入插件属于配置依赖型插件,仅在启用列表中添加插件名称是不够的,必须同步提供对应的限流配置文件,否则apiserver启动时会校验失败直接退出,你看到的日志只有开头的flag打印就是进程启动校验不通过反复重启的表现。

排查步骤

  • 登录故障Master节点,执行crictl ps -a | grep kube-apiserver找到退出的apiserver容器ID,执行crictl logs <容器ID>查看完整启动报错,会明确提示缺少EventRateLimit配置文件。

解决方案

  1. 新增fileAsset将EventRateLimit配置文件投递到所有Master节点,示例如下:
fileAssets:
  - name: event-rate-limit-config
    path: /srv/kubernetes/apiserver/event-rate-limit.yaml
    roles: [Master]
    content: |
      apiVersion: eventratelimit.admission.k8s.io/v1alpha1
      kind: Configuration
      limits:
      - type: Namespace
        qps: 50
        burst: 100
      - type: User
        qps: 10
        burst: 50
  1. 在kubeAPIServer配置中添加对应配置路径参数,kOps 1.21版本可直接添加字段:
kubeAPIServer:
  eventRateLimitConfig: /srv/kubernetes/apiserver/event-rate-limit.yaml

通用排查建议

  • kOps部署的集群遇到启动问题优先查看kubelet的systemd日志,静态Pod未启动时/var/log下的组件日志无参考价值。
  • 配置修改后可先执行kops update cluster检查配置是否被正确识别,避免配置字段版本不兼容的问题。

内容的提问来源于stack exchange,提问作者Arshad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:27:03