对于pod-to-pod通信,应该使用什么IP?服务的ClusterIP或端点-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

对于pod-to-pod通信,应该使用什么IP?服务的ClusterIP或端点

k8s小能手 2018-12-29 15:10:47 1786

我已将Rancher Helm图表部署到我的Kubernetes集群,并希望从另一个pod(即运行入口控制器的pod)访问Rancher API / UI。

当我列出服务和端点时。IP地址不同:

$ kubectl get ep | grep rancher
release-name-rancher 10.200.23.13:80 18h

$ kubectl get services | grep rancher
release-name-rancher ClusterIP 10.100.200.253 80/TCP 18h
在客户端的容器(即入口控制器)中,我看到服务的ClusterIP代表的服务:

$ env | grep RELEASE_NAME_RANCHER_SERVICE_HOST
RELEASE_NAME_RANCHER_SERVICE_HOST=10.100.200.253
尝试通过Env中的IP地址到达后端不起作用(curl 10.100.200.253只是不提供响应和永久阻止)。
我很困惑为什么端点IP地址和ClusterIP地址不同,为什么无法连接到ClusterIP地址。任何暗示我理解的提示?

Kubernetes 网络协议 API Perl 容器
分享到
取消 提交回答
全部回答(2)
  • davidaks
    2019-07-17 23:24:06

    由于容器实例的ip不恒定,建议使用dns name来做内部pod之间的访问

    0 0
  • k8s小能手
    2019-07-17 23:24:06

    在Kubernetes中,每个Pod和服务都有自己的IP地址。该kubectl get servicesIP地址为服务的Kubernetes内部地址; get ep它后面的Pod 的地址。该服务实际上就像一个负载均衡器,并且可以连接多个Pod。该Kubernetes服务文档进入一个很多关于究竟这里发生的一切细节。

    Kubernetes还提供可以解析服务名称的内部DNS服务。您通常不应直接使用任何这些IP地址; 相反,使用主机名release-name-rancher.default.svc.cluster.local(或者如果您在其他Kubernetes命名空间中运行,则替换“default”)。

    虽然..._SERVICE_HOST您引用的环境变量是受支持和记录的,但我会避免使用它。特别值得注意的是,如果您helm install或kubectl apply一组大量资源同时在服务之前创建了Pod,那么除了Pod实际上不会拥有此环境变量之外,您将处于一致状态。在服务没有固定名称的Helm域中,环境变量名称也不会被修复。首选DNS名称。

    0 0
添加回答
+ 订阅

云原生时代,是开发者最好的时代

推荐文章
相似问题