求教:外部服务访问 kubernetes 集群中服务的方式该如何选择?
需求:k8s 集群中部署了一个 prometheus 服务,现在外部环境的服务需要访问这个服务的 /api/v1/query 接口,访问不频繁,主要是实现查询指标功能。现在有两种方式,不知道哪种比较合适,求大佬科普。
给 prometheus 服务开一个主机端口 9090 ,通过 ip:9090/api/v1/query 的方式访问,这个应该最常见,但是需要暴露一个主机端口。
通过 api server 的 proxy 功能访问,路径为: ip:8443/api/v1/namespaces/kube-system/pods/prometheus/proxy/api/v1/query 。这种方式好像不太常见,不知道是否推荐。
ingress
这个了解过一点,但是不想在集群中做额外的操作,加上对 k8s 也不太熟悉
ingress 当成一个正常的 web 服务暴露
这个需求用不上这个,目前的访问逻辑就是通过集群 ip:port 去访问
ingress
但是不想在集群中做额外的操作 结论:无,就用 NodePort 吧
kebevpn
#4 那就 NodePort 暴露端口吧
违反逻辑啊,开 ingress 跟开 NodePort 区别不大啊。尤其开 NodePort ,每个 worker node 上都得捅个口子,前面的 LB 又怎么搞
这两种相比肯定是第一种好 Nodeport
能用就行那就 nodeport
Gateway API
#9 确实有点不妥,这也是考虑第二种方式的原因。
专业一点都是 ingress, 南北流量 基本都是走 Ingress 或者 LB.
如果就是玩玩而已,集群可以搞 nodeport
弄 ingress 也就 5 分钟的事,有啥难度。反倒是 nodeport 或者 api 反代麻烦死
第二种似乎更不妥,对一个业务暴露控制平面容易挖坑。
暴露主机端口很正常的
尤其是一些非 HTTP 端口不能用 Ingress 的
gateway API
不想用 nodeport ingress 就在集群的 node 节点上装个 nginx ,代理 prometheus 的的 clusterIP 。
Ingress, Ingress 不只是为 http 类端口服务的, 你像 APISIX 就提供了 Stream Proxy 来帮助代理基于 TCP 或 UDP 协议的面向流式的流量, 不过这并不是一个银弹, 适用场景可以参考官方文档。
P.S. 无利益相关
nodeport 模式都不知道哪个 sb 设计的,需要在所有 node 上协商出同一个端口
按说你这样普通 http 服务就直接用 api server proxy 就行了; ingress 或者 loadbalancer 模式的 service 有点大材小用
某些开源项目被收购,下面评论一堆酸的。目前项目还是开源,作为一个吃瓜群众,想问下,如果一个开源项目被收购,需要给 Contributors 分钱吗? 开源的玩法不就是这样的吗…
比如一个商户一秒一千笔收入记录和一千笔支出记录,咋处理比较好。 合并批量提交? 通过消息队列扔给多个微服务子系统并发处理 一个商户一个表,每个记录一行数据 假如有 N …
摘要: OSGi也是译者最近才接触到的技术,但是在OSGi的发展中,它越来越收到了来自行业的关注。作为OSGi的动态部署,译者认为此项规范对于企业应用应该是非常有帮助的。特别在…