我已将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中,每个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名称。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。