Как исправить «crashLoopBackoff» при создании контейнера kafka - PullRequest
0 голосов
/ 14 мая 2019

Я настраиваю кластер kafka и zookeeper с высокой доступностью. У меня есть 2 брокера kafka (pod1, pod2) и 3 zookeeper (pod1, pod2, pod3). Настройка работает нормально.Когда я захожу в один брокер кафки (pod1), я могу создать и использовать сообщение.Но когда я вхожу в другого брокера kafka (pod2), я не могу получить никаких сообщений, хотя я установил коэффициент репликации равным двум. Так что я добавил тома в спецификации контейнера, теперь я не могу создать ни одного модуляполучить краш-бэкбэк.

Когда я проверял журналы, информация была следующей: Неправильный запрос к серверу.Контейнер не умеет создавать.

kafka_pod.yaml содержит развертывание kafka.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kafka
  labels:
    app: kafka
spec:
  replicas: 2
  selector:
    matchLabels:
      app: kafka
  template:
    metadata:
      labels:
        app: kafka
    spec:
      hostname: kafka
      containers:
      - name: kafka
        image: wurstmeister/kafka:2.11-1.0.2
        ports:
        - containerPort: 9092
          protocol: TCP
        env:
         - name: KAFKA_ADVERTISED_HOST_NAME
           value: kafka
         - name: KAFKA_ADVERTISED_PORT 
           value: "9092"
         - name: KAFKA_ZOOKEEPER_CONNECT
           value: zookeeper:2181
         - name: KAFKA_OFFSET_TOPIC_REPLICATION_FACTOR
           value: "2"
         - name: KAFKA_AUTO_CREATE_TOPICS_ENABLE
           value: "true"
         - name: KAFKA_LOG_DIRS
           value: /opt/kafka
        volumeMounts:
        - name: socket
          mountPath: /var/run/docker.sock
        - name: logdir
          mountPath: /opt/kafka
      volumes:
      - name: socket
        hostPath:
         path: /var/run/docker.sock
      - name: logdir
        hostPath:
         path: ~/datadir

zookeeper_pod.yaml contains the following.
apiVersion: v1
kind: Service
metadata:
  name: zookeeper
spec:
  ports:
  - port: 2181
  selector:
    app: zookeeper
  clusterIP: None
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: zookeeper
  labels:
    app: zookeeper
spec:
  replicas: 3
  selector:
    matchLabels:
      app: zookeeper
  template:
    metadata:
      labels:
        app: zookeeper
    spec:
      nodeName: akshatha-ha
      containers:
      - name: zookeeper
        image: wurstmeister/zookeeper
        ports:
        - containerPort: 2181
          protocol: TCP

Мне нужно развернуть kafka с двумя брокерами и zookeeper с 3 серверами. Когда один из серверовидет вниз другой должен иметь возможность предоставить данные.

1 Ответ

2 голосов
/ 14 мая 2019

Используйте StatefulSets для развертывания Kafka и zookeeper.Существует хороший учебник по zookeeper StatefulSets по Kubernetes.Ио-сайт.Следуйте этому.

Избегайте hostpath, если вы не используете кластер с одним узлом.Используйте постоянный объем или временное хранение.Если вы используете версию 1,14, рассмотрите локальные постоянные тома для наборов состояний

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...