Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes I';我很难在gke上设置卡夫卡,想知道设置卡夫卡的最佳方式吗?_Kubernetes_Apache Kafka_Google Kubernetes Engine - Fatal编程技术网

Kubernetes I';我很难在gke上设置卡夫卡,想知道设置卡夫卡的最佳方式吗?

Kubernetes I';我很难在gke上设置卡夫卡,想知道设置卡夫卡的最佳方式吗?,kubernetes,apache-kafka,google-kubernetes-engine,Kubernetes,Apache Kafka,Google Kubernetes Engine,我试图使用StatefolSet在gke的集群中部署zookeeper和Kafka服务器,但Kafka和zookeeper之间的通信失败,日志中出现错误消息。我想知道在库伯内特斯设置卡夫卡最简单的方法是什么 我尝试了以下配置,我发现卡夫卡无法与zookeeper通信,但我不知道为什么?我知道我可能需要一个无头服务,因为通讯是由卡夫卡和动物园管理员自己处理的 适用于动物园管理员 apiVersion: v1 kind: Service metadata: name: zookeeper spe

我试图使用StatefolSet在gke的集群中部署zookeeper和Kafka服务器,但Kafka和zookeeper之间的通信失败,日志中出现错误消息。我想知道在库伯内特斯设置卡夫卡最简单的方法是什么

我尝试了以下配置,我发现卡夫卡无法与zookeeper通信,但我不知道为什么?我知道我可能需要一个无头服务,因为通讯是由卡夫卡和动物园管理员自己处理的

适用于动物园管理员

apiVersion: v1
kind: Service
metadata:
  name: zookeeper
spec:
  type: LoadBalancer
  selector:
    app: zookeeper
  ports:
  - port: 2181
    targetPort: client
    name: zk-port
  - port: 2888
    targetPort: leader
    name: zk-leader
  - port: 3888
    targetPort: election
    name: zk-election
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: zookeeper
spec:
  replicas: 3
  selector:
    matchLabels:
      app: zookeeper
  serviceName: zookeeper
  podManagementPolicy: Parallel
  template:
    metadata:
      labels:
        app: zookeeper
    spec:
      containers:
        - name: zk-pod
          image: zookeeper:latest
          imagePullPolicy: Always
          ports:
            - name: client
              containerPort: 2181
            - name: leader
              containerPort: 2888
            - name: election
              containerPort: 3888
          env:
            - name: ZOO_MY_ID
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: ZOO_TICK_TIME
              value: "2000"
            - name: ZOO_INIT_LIMIT
              value: "5"
            - name: ZOO_SYNC_LIMIT
              value: "2"
            - name: ZOO_SERVERS
              value: zookeeper:2888:3888
对于卡夫卡

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: kafka
spec:
  replicas: 3
  selector:
    matchLabels:
      app: kafka
  serviceName: kafka-svc
  podManagementPolicy: Parallel
  template:
    metadata:
      labels:
        app: kafka
    spec:
      containers:
      - name: kafka
        image: confluentinc/cp-kafka:latest
        ports:
          - containerPort: 9092
            name: client
        env:
          - name: KAFKA_ZOOKEEPER_CONNECT
            value: zookeeper:2181
          - name: KAFKA_ADVERTISED_LISTENERS
            value: kafka.default.svc.cluster.local:9092
---
apiVersion: v1
kind: Service
metadata:
  name: kafka-svc
spec:
  type: LoadBalancer
  selector:
    app: kafka
  ports:
  - port: 9092
    targetPort: client
    name: kfk-port
---
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: kafka-pdb
spec:
  selector:
    matchLabels:
      app: kafka
  minAvailable: 2

我希望能够发送消息到一个主题,并能够阅读回来。我一直在使用来测试连接。

这是中指定的限制之一,即

  • 状态集目前需要一个无头服务来负责POD的网络标识。您负责创建此服务
因此,正如您所提到的,您需要并且可以轻松地将headless service yaml添加到您的配置顶部,类似于下面针对两个Statefulset的配置:

apiVersion: v1
kind: Service
metadata:
  name: zookeeper
  labels:
    app: zookeeper
spec:
  ports:
  - port: 2181 
    name: someport
  clusterIP: None
  selector:
    app: zookeeper

希望有帮助

这是中规定的限制之一

  • 状态集目前需要一个无头服务来负责POD的网络标识。您负责创建此服务
因此,正如您所提到的,您需要并且可以轻松地将headless service yaml添加到您的配置顶部,类似于下面针对两个Statefulset的配置:

apiVersion: v1
kind: Service
metadata:
  name: zookeeper
  labels:
    app: zookeeper
spec:
  ports:
  - port: 2181 
    name: someport
  clusterIP: None
  selector:
    app: zookeeper

希望有帮助

我如何与服务沟通?无头服务不定义集群IP或外部IP。带选择器的无头服务修改DNS配置,以返回直接指向支持服务的POD的记录(地址)。因此,您需要指定要通信的服务名称。还应检查端点是否通过
kubectl get ep
创建。看看这个,我已经添加了无头服务,但是我仍然无法从一个吊舱内访问其他吊舱。我可以看到正在创建的端点,但无法访问pod。当我尝试使用
telnet zookeeper-2.zookeeper-service.kafka-ns.svc.cluster.local 2181对其他容器进行telnet时,它只会说
bad address“zookeeper-2.zookeeper-service.kafka-ns.svc.cluster.local”
如果您想为每个pod使用单独的DNS名称,您必须创建子域服务,并在pods模板上使用它。检查此项我如何与服务进行通信?无头服务不定义集群IP或外部IP。带选择器的无头服务修改DNS配置,以返回直接指向支持服务的POD的记录(地址)。因此,您需要指定要通信的服务名称。还应检查端点是否通过
kubectl get ep
创建。看看这个,我已经添加了无头服务,但是我仍然无法从一个吊舱内访问其他吊舱。我可以看到正在创建的端点,但无法访问pod。当我尝试使用
telnet zookeeper-2.zookeeper-service.kafka-ns.svc.cluster.local 2181对其他容器进行telnet时,它只会说
bad address“zookeeper-2.zookeeper-service.kafka-ns.svc.cluster.local”
如果您想为每个pod使用单独的DNS名称,您必须创建子域服务,并在pods模板上使用它。检查这个