Kubernetes 如何认识一个Pod#u a';从Pod_b中的另一个a容器_b获取的端口地址?
示例:Kubernetes 如何认识一个Pod#u a';从Pod_b中的另一个a容器_b获取的端口地址?,kubernetes,Kubernetes,示例: NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE test pod_A 1/1 Running 1 17d 192.168.1.171 10-0-0-171.master test pod_B 1/1 Running 1 17d
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
test pod_A 1/1 Running 1 17d 192.168.1.171 10-0-0-171.master
test pod_B 1/1 Running 1 17d 192.168.1.172 10-0-0-172.node
通过使用:
kubectl exec -it pod_B --namespace=test -- sh
我可以把一个炮弹装进我的吊舱里的容器里
但是,当我在容器b的外壳中时,如何获得Pod_A的端口地址“192.168.1.171”
有一个类似的问题,一些官方文件如和
. 但这些并不能解决我的问题
-----------更新-----------
最近,我使用K8s apiserver修复了它。在Pod_b的容器_b中,我可以从http://k8s_apiserver:port/api/v1/pods
,解析它,并在末尾获得Pod_A的端口但是,有没有更简单的方法来处理它呢?您可以使用它来在您的POD之间发现服务
当您为您的pod
pod_a
创建一个名为service_a
的服务时,该服务将显示它自己的IP地址,该地址指向您的pod地址。该服务还将获得一个dns名称,如service\u a.service.default.cluster.local
。当您想从pod_B
通信到pod_A
时,您现在可以使用dns名称,不再需要担心pod_A
的ip地址 谢谢,我能清楚地理解你的观点。但是,事实上,我使用命令部署了一个Redis集群:Redis-trib.rb create--replications1host1:port1。。。hotn:portN
然后在pod_B的容器_B中有一个服务连接redis集群来读取和写入值。这就是为什么我需要获取pod_A(redis集群)的端口,我还需要获取podA中podB的ip地址。你找到解决办法了吗?使用环境变量还是其他?如果你有解决办法,请告诉我。谢谢。最后,我使用服务(环境变量和dns)得到了解决方案。这里是参考:例如,服务“redis master”,它公开TCP端口6379,并已分配集群IP地址10.0.0.11。REDIS\u主服务\u主机=10.0.0.11 REDIS\u主服务\u端口=6379@HuaZhang使用环境变量和DNS,是解决这个问题的静态方法,而不是动态方法。服务重新启动后,就像“Redis Master”的服务停止然后重新启动一样,IP地址已从10.0.0.11
更改为10.0.0.21
,您必须手动修复环境值。如果您想自己更改这些ENV_值,您可以使用Kubernetes API获得IP地址,而显然,Kubernetes集群拥有自己的“Kubernetes”服务。