Kubernetes 使用pod'调用pod;s名称而不是主机和端口
我在本地minikube集群中运行一组相互通信的微服务(使用helm图表)。每个服务的主机和端口都通过Kubernetes 使用pod'调用pod;s名称而不是主机和端口,kubernetes,minikube,coredns,Kubernetes,Minikube,Coredns,我在本地minikube集群中运行一组相互通信的微服务(使用helm图表)。每个服务的主机和端口都通过value-dev.yaml传递给其他服务,通信工作正常。现在我需要更进一步,从http://helm-chart-name:PORT/至http://helm-chart-name/或http://service-pod-name/。我试着这么做,但没有成功。有没有办法做到这一点?如果您需要使用pod进行访问,DNS解析如下: pod ip address.deployment name.my
value-dev.yaml
传递给其他服务,通信工作正常。现在我需要更进一步,从http://helm-chart-name:PORT/
至http://helm-chart-name/
或http://service-pod-name/
。我试着这么做,但没有成功。有没有办法做到这一点?如果您需要使用pod进行访问,DNS解析如下:
pod ip address.deployment name.my namespace.svc.cluster domain.example
。考虑到pod的短暂性和运行多个同类pod的可能性,我建议使用服务抽象进行集群内通信,就像您所需要的那样。服务解析到此格式的DNSmy svc.my namespace.svc.cluster domain.example
。您还可以使用headless服务并解析为具有特定(主机)名称的Pod。请参阅服务中的(特别是)将端口设置为80。这是HTTP的默认TCP端口号,因此如果URL中没有..:12345
端口号,则将使用该端口号。targetPort:
需要匹配pod正在监听的任何端口;它不需要匹配端口:
apiVersion:v1
种类:服务
元数据:
名称:{{include“chart.fullname”。}
规格:
选择器:
{{-include“chart.selectorLabels”。{nintent 4}
端口:
-名称:http
协议:TCP
端口:80#默认HTTP端口
targetPort:3000#匹配Pod使用的端口号
现在其他服务可以调用http://helm-chart-name/
无需明确给出端口号
(您几乎总是需要使用服务来接受到pod的连接;您通常不会直接与pod通信,除了一些特殊情况外,这样做很棘手。)