当前位置: 首页 > 知识库问答 >
问题:

kubernetes集群内服务通信

孔阎宝
2023-03-14

我有一个复合服务S.c,它使用两个原子服务S.a和S.b,其中所有三个服务都在Kubernetes集群中运行。更好的模式是什么

1)将Sa、Sb创建为无头服务,并让Sc通过NGINX等外部负载均衡器与它们集成(使用DNS解析器来维护更新的后端pod)

2) 使用clusterIP创建Sa、Sb,并让Sc通过群集DNS(skyDNS加载项)访问/解析它们。这将在内部利用基于IP表的负载平衡来实现POD。

注意:我的k8s集群是在定制解决方案(内部部署VM)上运行的,我们有许多组合服务,它们使用1到多个原子服务(如上面的示例)。

编辑:在少数情况下,我还需要将服务公开给外部网络,例如Sb需要从Sc和外部访问。在这种情况下,将Sb创建为无头服务更有意义,否则DNS解析器将始终只返回blosterIP地址,所有外部请求也将被路由到blosterIP地址。我的挑战是两种场景(内部与内部)都相互冲突

示例:nginx-service(具有blosterIP)和nginx-head less-service(head less)

 / # nslookup nginx-service
 Server:    172.16.48.11
 Address 1: 172.16.48.11 kube-dns.kube-system.svc.cluster.local

 Name:      nginx-service
 Address 1: 172.16.50.29 nginx-service.default.svc.cluster.local

 / # nslookup nginx-headless-service
 Server:    172.16.48.11
 Address 1: 172.16.48.11 kube-dns.kube-system.svc.cluster.local

 Name:      nginx-headless-service
 Address 1: 11.11.1.13 wrkfai1asby2.my-company.com
 Address 2: 11.11.1.15 imptpi1asby.my-company.com
 Address 3: 11.11.1.4 osei623a-sby.my-company.com
 Address 4: 11.11.1.6 osei511a-sby.my-company.com
 Address 5: 11.11.1.7 erpdbi02a-sbyold.my-company.com

共有1个答案

闽鸿宝
2023-03-14

使用DNS群集IP是更简单的方法,并且不需要将您的服务公开给公共internet。除非您想从nginx获得特定的负载平衡功能,否则我建议使用#2。

 类似资料:
  • 我有一个运行在minikube(已启用加载项)中的nginx ingress,它有几个吊舱和服务,ingress具有以下配置: 当我在集群之外时,以下各项工作正常: 但是,当我在集群内时,我希望容器能够使用我的入口模板中列出的主机名相互通信。例如,我希望以下方法可以工作,但事实并非如此: 相反,它返回实际api的结果。信息网站,我没有隶属关系。首先,有人能确认这是可行的吗? 非常感谢。

  • 我使用几个独立服务运行Kubernetes单节点dev集群--Nginx proxy(端口80)和elasticsearch(端口9200)。有没有办法用ingress公开这些服务,用一个LoadBalancer IP拥有入口点?(X.X.X.X:80和X.X.X:9200) 我读过关于入口限制,它只能用80和443端口访问。但是,也许,存在一些变通方法? 请Thx提供任何建议 但如果以后您想公开

  • 什么起作用了? 使用Helm(启用RBAC)部署入口控制器 集群IP服务部署 什么不起作用? null K8S入口 注释中最后应用的配置(入口描述输出)显示入口资源清单。但是,我贴在下面作为参考 附加信息 null 任何关于我可能做错了什么的建议或见解将非常感谢。

  • 我使用此处的说明在 VirtualBox 上创建了一个 3 节点 kubernetes 集群(1 个主 2 个工作线程)。我正在使用法兰绒作为覆盖网络。 我在安装过程中在主服务器上设置了< code > sysctl-w net . bridge . bridge-nf-call-iptables = 1 和< code > sysctl-w net . bridge . bridge-nf-ca

  • 我目前的k8s设置面临一个问题。在生产中,我启动了我们每个服务的三个副本并将它们放在一个pod中。当pod相互通信时,我们希望pod以循环方式与pod中的每个容器通信。不幸的是,由于TLS保持活动,pod之间的连接永远不会终止——我们不想专门更改该部分——但我们确实希望pod中的每个容器都能正常通信。这就是我们现在所拥有的: 如果API试图与pod OSS通信,它将仅与第一个容器通信。我希望API

  • 我是Kubernetes的初学者,我的情况如下:我有两个不同的吊舱:吊舱和吊舱。首先,我想向外界公开PodA,所以我为PodA创建了一个服务(类型NodePort或LoadBalancer),这对我来说并不难理解。 然后我想让PodA与PodB通信,在谷歌搜索了几个小时后,我发现答案是我还需要为PodB创建一个服务(如果我想让PodB只在集群内可见,请键入ClusterIP),如果我这样做,我可以