【发布时间】:2020-03-24 06:08:50
【问题描述】:
我创建了四个服务,两个 ClusterIP 和两个 NodePort 服务。针对每项服务,我启动了两个容器,如下所示。
但是,问题是一些服务工作正常,而一些从容器内部调用时无法解析服务主机名。
在缩小问题范围时,我创建了以下矩阵:-
TYPES NodePort ClusterIp
NodePort Pass Fail
ClusterIp Pass Fail
这解释了:-
- 来自 aggregator-service(nodePort) 容器内部的请求 (curl –v http://order-service-ip/swagger/index.html) 失败并抛出 无法解决主机名错误,但反之亦然。那是打 来自的请求(curl –v http://aggregator-service/swagger/index.html) 在 order-service-ip 的容器内工作。
- 以同样的方式,从另一个 nodeport 容器调用 nodeport 服务可以工作。
- 但是,从 ClusterIp 容器调用 clusterIP 服务失败并且无法解析主机名。
令人惊讶的是,集群 IP 容器能够解析 Nodeport 服务的主机名,并且从同一个 nodePort 容器遍历到同一个 ClusterIp 服务是行不通的。
感谢任何建议。我被这个问题困扰了四天多。
以下是 pod 和服务的详细信息,端点也可以正常工作。
NAME ........ READY STATUS
nodeport-aggegator-deployment-64497699d-6jqz4 1/1 Running
nodeport-aggegator-deployment-64497699d-jx8n6 1/1 Running
clusterip-order-deployment-ip-594ff6b59b-pb4bp 1/1 Running
clusterip-order-deployment-ip-594ff6b59b-rbhj4 1/1 Running
nodeport-resources-deployment-6b98d47b5b-qvd59 1/1 Running
nodeport-resources-deployment-6b98d47b5b-zjrh7 1/1 Running
clusterip-product-deployment-ip-7589c74bfc-dx8l4 1/1 Running
clusterip-product-deployment-ip-7589c74bfc-mbqs5 1/1 Running
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
aggregator-service NodePort 10.100.66.74 <none> 8081:30392/TCP,443:30891/TCP
order-service-ip ClusterIP 10.100.118.19 <none> 8010/TCP,443/TCP
resources-service NodePort 10.100.81.65 <none> 8001:31076/TCP,443:30429/TCP
product-service-ip ClusterIP 10.100.66.14 <none> 8011/TCP,443/TCP
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP
谢谢
【问题讨论】:
-
你的容器是基于 alpine 的镜像吗?
-
不是基于 Windows 的容器。但是一个问题很奇怪,我什至更改了AWS的安全入站规则,允许所有端口上的所有流量。
-
您能否添加以下输出:
kubectl get svc -o wide和 yamls 以表示“针对每个服务,我启动两个容器,如下所示。”?另外对于“curl –v order-service-ip/swagger/index.html”,您是按原样调用它,还是使用 IP 而不是 order-service-ip?
标签: kubernetes kubernetes-pod amazon-eks