首页 > 解决方案 > 避免在服务中保留不必要的 NodePort

问题描述

我有这个NodePort服务,它公开了两个端口:

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: my-service
  ports:
  - name: nginx-public
    port: 443
    targetPort: nginx-public
  - name: metrics
    port: 9200
    targetPort: metrics

nginx-public端口必须在节点上公开,因为我将它与 aws-alb-ingress-controller 一起使用。

但是,另一个端口metrics仅在内部使用(从集群内部) - 它由 prometheus-operator 拾取。我需要在服务规范中记录它,但我不想同时在节点上保留另一个端口。

有没有办法告诉 Kubernetes 只为这个服务保留一个节点端口?

我尝试nodePort: null在端口规范中指定如下:

  ports:
  - name: nginx-public
    port: 443
    targetPort: nginx-public
  - name: metrics
    port: 9200
    targetPort: metrics
    nodePort: null

但是根据describe service,似乎这与nodePort完全省略具有相同的效果,并且仍然为 保留一个随机端口metrics

标签: kubernetes

解决方案


您可以定义两个服务,一个选择 nginx-public,另一个选择指标。分别在 pod 上使用两个不同的标签。


推荐阅读