Nginx Ingress是否能够导出无头服务?

3

nginx ingress控制器能够导出无头服务吗?底层pod正在使用hostNetwork

有文档可以参考吗?

具体来说,我正在尝试通过nginx ingress控制器导出node-export服务(清单来自kube-prometheus)。


一个简短的ingress代码:

...
       - path: /node-exporter
         pathType: Prefix
         backend:
           serviceName: node-exporter
           servicePort: 9100
...

一个服务的简短代码:
...
spec:
  clusterIP: None
  ports:
  - name: https
    port: 9100
    targetPort: https
  selector:
    app.kubernetes.io/name: node-exporter
...

理论上,是的,可以使用nginx ingress控制器公开无头服务 - 尽管根据kubernetes文档并不推荐这样做。请问您能具体说明一下如何配置入口吗? - anarxz
你好@anarxz,我没有看到关于kubernetes不推荐暴露无头服务的文档...你指的是哪一段?我在上面发布了我的代码。顺便说一下,我意识到我不需要一个服务来暴露它们,因为它们已经使用hostNetwork暴露了。 - Bryan Chen
我已经将我的解释作为答案发布,请查看。 - anarxz
2个回答

0
根据我的测试结果,
我无法通过入口导出hostNetwork服务。
这是我的结果矩阵:
headless clusterIP
hostNetwork: True 502 502
hostNetwork: False

0

基本上,无头服务与默认的ClusterIP类型相同,它将服务公开在集群内部IP上 - 唯一的区别是无头服务允许客户端直接连接到Pod而不需要代理。

我正在参考Kubernetes doc中的这部分内容,其中指出ClusterIP只能从集群内部访问,而入口将其暴露在集群外:

  • ClusterIP:将服务公开在集群内部IP上。选择此值使服务仅可从集群内部访问。这是默认的ServiceType
根据hostNetwork,当其设置为True时,Pod将被授予访问本地主机上正在侦听的服务的权限,它可以使用节点网络命名空间,因此可以看到和使用主机机器的网络接口。反过来,Pod将在这些网络接口上可访问,并且可以直接接收外部流量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接