Statefulset 中的容器未在 minikube dns 上注册

Containers on Statefulset not being registred on minikube dns

我正在尝试设置一个 zookeeper 集群(3 个副本),但每个主机都无法连接到另一个主机,我真的不知道问题出在哪里。 它正在成功创建 3 pods,名称如

zookeeper-0.zookeeper-internal.default.svc.cluster.local
zookeeper-1.zookeeper-internal.default.svc.cluster.local
zookeeper-2.zookeeper-internal.default.svc.cluster.local

但是当连接到其中之一并尝试连接到开放端口时,它 returns 未知主机消息:

zookeeper@zookeeper-0:/opt$ nc -z zookeeper-1.zookeeper-internal.default.svc.cluster.local 2181
zookeeper-1.zookeeper-internal.default.svc.cluster.local: forward host lookup failed: Unknown host

My YAML file is here

非常感谢任何帮助。

您是否创建了您在 yaml 中提到的无头服务 - serviceName: zookeeper-internal

您需要创建此服务(更新端口)才能访问 zookeeper-0.zookeeper-internal.default.svc.cluster.local

apiVersion: v1
kind: Service
metadata:
  labels:
    app: zookeeper-cluster-dev
    name: zookeeper
  name: zookeeper-internal
spec:
  ports:
  - name: zookeeper-port
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    name: zookeeper
  clusterIP: None
  type: ClusterIP

需要服务。但它不会在集群外暴露任何东西。它仅在集群内。任何 pods 都可以在集群内访问此服务。因此,除非您通过 NodePort / LoadBalancer / Ingress 公开它,否则您无法从浏览器访问它!