如何在Kubernetes中永久解决alertmanager-operated服务9093端口占用问题
问题根因
你手动修改alertmanager-operated Service资源后被自动回滚,是因为该服务由kube-prometheus-stack内置的Prometheus Operator管控,Operator的调和(reconcile)循环会持续监听Alertmanager自定义资源(CR)的配置,自动修正运行时资源与预期配置不符的部分,你看到的随机回滚实际是调和循环被触发后的正常行为,直接修改运行时资源的方式无法持久化配置,必须在chart的配置层修改。
永久修改端口的操作步骤
- 第一步:编辑你安装kube-prometheus-stack所用的自定义values.yaml文件,新增以下配置段,将示例中的9094替换为你需要使用的目标端口:
alertmanager: alertmanagerSpec: # 配置Service暴露的web端口 ports: web: port: 9094 targetPort: 9094 # 修改Alertmanager容器本身的监听端口 containers: - name: alertmanager args: - --config.file=/etc/alertmanager/config/alertmanager.yaml - --storage.path=/alertmanager - --data.retention=120h - --cluster.listen-address=[$(POD_IP)]:9094 - --web.listen-address=:9094 - --web.route-prefix=/
说明:以上为Alertmanager默认启动参数,仅调整--web.listen-address中的端口即可,其余参数无特殊需求不要修改,避免服务启动异常
- 第二步:执行helm upgrade命令更新已安装的release,使配置生效:
helm upgrade -f <你的自定义values文件路径> <你的kube-prometheus-stack release名称> prometheus-community/kube-prometheus-stack --version 19.2.3 - 第三步:验证配置生效
执行kubectl get svc alertmanager-operated -n <你的监控组件所在命名空间>,确认端口列表已显示为你设置的目标端口;再检查Alertmanager Pod运行状态,确认没有端口冲突报错、服务可正常访问即可。
注意事项
- 如果你没有使用自定义values文件安装chart,可以先执行
helm get values <release名称> -n <命名空间> > custom-values.yaml导出当前使用的配置,再基于导出的文件修改。 - 如果你是独立部署的Prometheus Operator,未使用kube-prometheus-stack的helm包,直接修改对应命名空间下的Alertmanager CR配置即可,配置字段和上述values中的
alertmanagerSpec字段完全一致。
内容的提问来源于stack exchange,提问作者DeirdreRodgers
相关产品推荐
相关产品推荐

