避免在服务中保留不必要的NodePort

时间:2018-08-06 08:13:27

标签: kubernetes

我有此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拾取。我需要将其记录在服务规范中,但我不想同时在Node上保留另一个端口。

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

我尝试在端口规格中指定nodePort: null,如下所示:

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

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

1 个答案:

答案 0 :(得分:2)

您可以定义两个服务,一个选择nginx-public,另一个选择度量。用两个  豆荚上分别有不同的标签。