项目命名空间中的rancher 2.0网络

问题描述 投票:1回答:2

可以通过工作负载名称从其他工作负载ping一个工作负载

我习惯于牧场1.0,如果我用更多容器创建堆栈,那么我可以通过名称从另一个容器ping一个。

rancher application

例如:我有api和数据库,我需要api与数据库进行通信。当我点击api上的执行shell并写“ping数据库”时,所以不能正常工作。

我在api环境变量中将连接字符串写入数据库。是的我可以创建数据库并将数据库IP写入ENV,但每次重启后此ip都会更改。

一些人可能会调用不生成名称?

谢谢

编辑:服务发现:service discovery

壳牌:execute shell

如您所见,所以翻译数据库名称是有效的。只有ping数据库容器不起作用。

docker networking kubernetes rancher
2个回答
0
投票

要在服务之间进行通信,您可以使用群集IP或服务名称进行通信。

使用ServiceName会更容易。

服务发现为您的每项服务添加DNS。因此,如果你有api,app和数据库,你将拥有每个服务的DNS条目。

因此,在您的服务中,您可以直接参考DNS。

示例:要将JDBC连接到数据库中的模式名称测试,您可以执行以下操作:jdbc:mysql:// database / test

见:https://rancher.com/docs/rancher/v2.x/en/k8s-in-rancher/service-discovery/

如果您想了解服务的clusterIP,可以运行以下命令:kubectl get services --all-namespaces

编辑1:添加ClusterIP作为与服务通信的方式。


0
投票

Kubernetes Service IP是在作为集群一部分的linux主机上使用“iptables”实现的。如果仔细检查这些规则,则只公开指定为服务一部分的端口,而不是ICMP端口,这意味着,默认情况下无法ping服务IP地址。但您仍然可以在指定端口与服务进行通信。

© www.soinside.com 2019 - 2024. All rights reserved.