我正在配置一个部署 2 个 Jira DataCenter 节点的 statefulset。 statefulset 产生 2 个 pod。一切似乎都很好,直到 2 个 pod 尝试相互连接。他们使用短主机名jira-0 和jira-1来做到这一点。
jira-1 pod 在连接到 jira-0 时报告 UnknownHostException。无法解析主机名。
我阅读了有关添加无头服务的文章,但我还没有。添加后,我可以解析 FQDN,但对于短名称仍然没有运气。
然后我阅读了这个页面:DNS for Services and Pods 并添加了:
dnsConfig:
searches:
- jira.default.svc.cluster.local
这解决了我的问题,但我认为没有必要添加这个?
一些额外的信息:
我的完整 yaml 文件:
apiVersion: v1
kind: Service
metadata:
name: jira
labels:
app: jira
spec:
clusterIP: None
selector:
app: jira
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: jira
spec:
serviceName: jira
replicas: 0
selector:
matchLabels:
app: jira
template:
metadata:
labels:
app: jira
spec:
containers:
- name: jira
image: atlassian/jira-software:8.12.2-jdk11
readinessProbe:
httpGet:
path: /jira/status
port: 8080
initialDelaySeconds: 120
periodSeconds: 10
livenessProbe:
httpGet:
path: /jira/
port: 8080
initialDelaySeconds: 600
periodSeconds: 10
envFrom:
– configMapRef:
name: jira-config
ports:
- containerPort: 8080
dnsConfig:
searches:
- jira.default.svc.cluster.local
答案 0 :(得分:1)
这解决了我的问题,但我认为没有必要添加这个?
<块引用>StatefulSets 目前需要一个 Headless Service 来负责 Pod 的网络身份。 您有责任创建此服务。
<块引用>上面的示例将创建三个名为 web-0、web-1、web-2 的 Pod。 StatefulSet 可以使用 Headless Service 来控制其 Pod 的域。
pod-identity 将是管理服务的子域,例如。在您的情况下,它将是例如:
jira-0.jira.default.svc.cluster.local
jira-1.jira.default.svc.cluster.local