我需要在K8 pod中提供服务,以便能够对下游服务进行HTTP调用,这些服务由NodePort在同一群集和名称空间内进行负载均衡。
我的约束是这些:
这是否可能?如果可以,怎么办?
答案 0 :(得分:3)
这也许可以完成,但并非一帆风顺,您可能必须添加一些自定义自动化。 NodePort
服务应由群集外部的实体使用。
对于集群间通信,常规服务(带有ClusterIP)将按设计工作。您的服务可以使用DNS service discovery获得另一项服务。例如。 svc-name.mynamespace.svc.cluster.local
将是svc-name
名称空间中mynamespace
的DNS条目。
如果只能执行一个NodePort
,而这实际上是K8s节点上的端口,则可以创建另一个Deployment或nginx之类的haproxy或Pod。然后,通过具有ClusterIP的常规K8s服务来为该部署提供服务。然后让nginx或haproxy指向Kubernetes集群中所有节点上的NodePort。另外,对其进行配置,使其仅通过某种健康检查转发到侦听的NodePort。
以上似乎是一个额外的必要步骤,但是如果您需要集群中的NodePort(出于某种原因),它应该可以解决问题。