StatefulSet 中 Pod 的 DNS 地址是多少?

问题描述 投票:0回答:1

我通常使用服务来访问 Pod (

statefulset-svc.my-namespace.svc.cluster.local
)。但是,我正在尝试直接访问 Pod。我怎样才能在不需要 Pod 的 IP 地址的情况下做到这一点?

基本上是这样的

pod-0.my-namespace.pod.cluster.local

参考:Pod 的 A/AAAA 记录(这里提到了 IP 地址,但这对我不起作用,因为 IP 可能会随着时间的推移而改变)

kubernetes dns kubernetes-statefulset
1个回答
0
投票

通常您应该通过访问 Pod 的

Service
来访问它。

对于

StatefulSet
,直接访问 Pod 可能很有用,因为它们具有稳定的网络身份。要通过 DNS 执行此操作,您必须首先创建一个 Headless Service,一个带有
Service
clusterIP: None
。喜欢:

apiVersion: v1
kind: Service
metadata:
  name: my-stateful-app
  labels:
    app: my-stateful-app
spec:
  ports:
    - port: 1234
      name: app
  clusterIP: None
  selector:
    app: my-stateful-app

然后,您可以在 DNS 名称上获取

StatefulSet
中所有 pod 的 IP:

$(service name).$(namespace).svc.cluster.local

以及各个 Pod 名称:

$(podname).$(service name).$(namespace).svc.cluster.local
© www.soinside.com 2019 - 2024. All rights reserved.