使用 pod 的名称而不是主机和端口调用 pods
Calling the pods using pod's name instead of host and port
我是 运行 本地 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-namespace.svc.cluster-domain.example
。鉴于 pods 的短暂性质和 运行 多个同种 pod 的可能性,我建议使用服务抽象来进行集群内通信,就像您所需要的那样。服务解析为这种格式的 DNS my-svc.my-namespace.svc.cluster-domain.example
。您还可以拥有无头服务并解析为具有特定(主机)名称的 Pod。参考DNS Reolution details here
在您的服务中(特别是)将 port:
数字设置为 80。这是 HTTP 的默认 TCP 端口号,因此如果没有 ...:12345
,将使用该端口号URL 中的端口号。 targetPort:
需要匹配 pod 监听的任何端口;它不需要匹配 port:
.
apiVersion: v1
kind: Service
metadata:
name: {{ include "chart.fullname" . }}
spec:
selector:
{{- include "chart.selectorLabels" . | nindent 4 }}
ports:
- name: http
protocol: TCP
port: 80 # default HTTP port
targetPort: 3000 # port number the matching Pod uses
现在其他服务可以调用 http://helm-chart-name/
而无需显式提供端口号。
(您几乎总是需要使用服务来接受到 pod 的连接;您通常不会直接与 pod 通信,除了某些特殊情况外,这样做很棘手。)
我是 运行 本地 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-namespace.svc.cluster-domain.example
。鉴于 pods 的短暂性质和 运行 多个同种 pod 的可能性,我建议使用服务抽象来进行集群内通信,就像您所需要的那样。服务解析为这种格式的 DNS my-svc.my-namespace.svc.cluster-domain.example
。您还可以拥有无头服务并解析为具有特定(主机)名称的 Pod。参考DNS Reolution details here
在您的服务中(特别是)将 port:
数字设置为 80。这是 HTTP 的默认 TCP 端口号,因此如果没有 ...:12345
,将使用该端口号URL 中的端口号。 targetPort:
需要匹配 pod 监听的任何端口;它不需要匹配 port:
.
apiVersion: v1
kind: Service
metadata:
name: {{ include "chart.fullname" . }}
spec:
selector:
{{- include "chart.selectorLabels" . | nindent 4 }}
ports:
- name: http
protocol: TCP
port: 80 # default HTTP port
targetPort: 3000 # port number the matching Pod uses
现在其他服务可以调用 http://helm-chart-name/
而无需显式提供端口号。
(您几乎总是需要使用服务来接受到 pod 的连接;您通常不会直接与 pod 通信,除了某些特殊情况外,这样做很棘手。)