Nginx Ingress 暴露没有定义Host的ingress的Metrics数据
指定默认的 ingress 后端
名字有点绕口,假如说之前有个服务是通过 ip:port
来访问 nginx(就是 default server),然后转发到后端服务的,那么转换成 ingress 后,不能指定 host,不然会匹配不到规则。ingress 就不能配置 host,创建出来的 ingress 资源就是这样的:
1 | apiVersion: networking.k8s.io/v1beta1 |
创建出来的 ingress 资源显示:
1 | [root@VM_233_33_centos new]# kubectl get ingress |
metrics 监控指标问题
因为上面我们创建了一个 ingress,但是没有指定 host,在 ingress-nginx 中,没有 host 的 ingress 的 metrics 指标是不收集的,代码在此:https://github.com/kubernetes/ingress-nginx/blob/d82585917c845e598a2cd5d2c4291ce891b5e5b4/internal/ingress/metric/collectors/socket.go#L233-L235
GitHub 上有很多对应的 issues,比如:https://github.com/kubernetes/ingress-nginx/issues/5755 和 https://github.com/kubernetes/ingress-nginx/issues/3713
这里有个修复链接,https://github.com/kubernetes/ingress-nginx/pull/4139
理论上在这个时间之后的版本就已经修复了,需要添加启动参数:--metrics-per-host=false
, yml 文件如下(部分内容精简):
1 | # Source: ingress-nginx/templates/controller-deployment.yaml |
然后等待重启完成,既可看到监控指标:需要注意标签的变化,grafana 中也需要做相应的修改。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
评论