开发者社区> 问答> 正文

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

我已将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地址。任何暗示我理解的提示?

展开
收起
k8s小能手 2018-12-29 15:10:47 4550 0
2 条回答
写回答
取消 提交回答
  • 由于容器实例的ip不恒定,建议使用dns name来做内部pod之间的访问

    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名称。

    2019-07-17 23:24:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载