我通常使用服务来访问 Pod (
statefulset-svc.my-namespace.svc.cluster.local
)。但是,我正在尝试直接访问 Pod。我怎样才能在不需要 Pod 的 IP 地址的情况下做到这一点?
基本上是这样的
pod-0.my-namespace.pod.cluster.local
参考:Pod 的 A/AAAA 记录(这里提到了 IP 地址,但这对我不起作用,因为 IP 可能会随着时间的推移而改变)
通常您应该通过访问 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