ArgoCD删除Grafana NodePort服务,如何通过Helm清单配置?
解决方案
一、通过Helm Values配置Grafana为NodePort服务
ArgoCD遵循GitOps原则,集群内所有资源必须来自Git仓库的部署清单,手动创建的资源会被自动清理。你需要修改kube-prometheus-stack的Helm Values文件,将Grafana服务配置为NodePort类型:
1. 修改主服务为NodePort
找到仓库中部署kube-prometheus-stack对应的values.yaml文件,添加或修改以下配置:
grafana: service: # 将服务类型改为NodePort type: NodePort # 可选:指定固定NodePort(需在集群允许范围,通常是30000-32767) nodePort: 30001
2. (可选)添加额外NodePort服务
如果不想修改原ClusterIP服务,可通过extraService配置新增独立的NodePort服务:
grafana: extraService: - name: grafana-ext type: NodePort ports: - port: 3000 targetPort: 3000 nodePort: 30002
3. 同步配置到集群
将修改后的values.yaml推送到GitHub仓库,ArgoCD会自动检测变更并同步集群资源,此时NodePort服务会被持久化创建,不会再被删除。
二、解决端口转发无法访问的问题
你当前的端口转发命令可能存在映射错误,按以下步骤排查修复:
- 确认Grafana服务的端口映射关系:
kubectl describe svc kube-prometheus-stack-grafana -n argocd
查看TargetPort字段,通常Grafana容器内端口为3000,服务会将自身80端口转发到容器3000。
- 使用正确的端口转发命令:
kubectl port-forward svc/kube-prometheus-stack-grafana -n argocd 9092:80
之后访问http://localhost:9092即可进入Grafana UI。如果仍无法访问,检查Grafana Pod是否正常运行:
kubectl get pods -n argocd | grep grafana
三、访问Grafana的NodePort服务
配置完成后,使用k3s节点IP(192.168.10.137)加上NodePort端口访问:
例如:http://192.168.10.137:30001
内容的提问来源于stack exchange,提问作者zoe08
相关产品推荐
相关产品推荐

