GCP Anthos Config Management的admission-webhook反复OOMKilled无法永久调参
问题解答
问题1:能否强制更新托管字段?
- 操作层面可以通过
kubectl apply --force-conflicts --server-side临时覆盖托管字段,但完全不具备可持续性,也不建议这么做。 - ACM的reconciler-manager控制器会持续调和config-management-system命名空间下的所有官方原生资源,修改后最多几分钟就会被回滚到默认值,还可能导致后续ACM版本升级失败、功能异常,不符合你不修改官方配置的诉求。
问题2:永久解决OOMKilled的官方方案
ACM从1.7版本开始就提供了官方的配置入口,通过用户可编辑的ConfigManagement自定义资源即可修改各组件的资源规格,配置会被控制器持久化保留,不会被回滚,操作步骤如下:
- 导出当前集群的ConfigManagement配置:
kubectl get configmanagement config-management -n config-management-system -o yaml > config-mgmt.yaml
- 编辑导出的yaml文件,保留原有所有配置不变,仅在
spec字段下新增admissionWebhook的资源配置:
spec: # 原有配置(git同步、模式配置等)保持不变,新增以下内容 admissionWebhook: resources: requests: cpu: 100m memory: 100Mi limits: cpu: 300m memory: 256Mi
内存限制可根据实际负载调整,测试场景下200Mi即可满足使用,生产环境建议设置为300Mi以上。
- 应用修改后的配置:
kubectl apply -f config-mgmt.yaml
配置应用后1~2分钟,控制器会自动用你指定的资源值更新admission-webhook的Deployment,重建Pod后OOMKilled问题就会彻底解决。
补充说明
你提到的删除ConfigMap未被拦截的问题,是因为admission-webhook持续崩溃无法提供服务,待Pod正常运行后,确认ConfigManagement配置中已开启配置验证即可恢复拦截能力。你当前使用的是1.8.1 RC预览版镜像,若调整资源后仍有异常,可升级到1.8系列正式稳定版规避预览版的已知问题。
内容的提问来源于stack exchange,提问作者dehypnosis
相关产品推荐
相关产品推荐

