kubernetes - 避免在服务中保留不必要的 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
。
解决方案
您可以定义两个服务,一个选择 nginx-public,另一个选择指标。分别在 pod 上使用两个不同的标签。
推荐阅读
- javascript - 动态更新 react-google-chart 类型
- android - viewpager 内的布局高度,其高度设置为包裹内容
- javascript - IE 说 javascript 函数未定义,但在 Chrome 中可以正常工作
- sql - 如何使用 SSIS 将谷歌电子表格数据加载到 SQL Server 表中?
- php - Wordpress 付费会员专业版未在结帐时将用户添加到会员列表
- vba - Excel VBA - 根据源字体的颜色数据标签(“来自单元格的值”)
- ruby - 从 AWS S3 下载文件时的文件编码问题
- django - Django celery daemon 给出'supervisor FATAL can't find command',但路径是正确的
- docker - yum -y install 在 docker build 中不假设是
- php - Symfony 4 FindBy() 并通过 JSON 返回一个数组