#kubernetes #apache-kafka #apache-zookeeper #messagebroker
#kubernetes #apache-kafka #apache-zookeeper #messagebroker
Вопрос:
Я пытаюсь настроить модуль Kafka в Kubernetes, но я продолжаю получать эту ошибку:
[2020-08-30 11:23:39,354] ERROR [KafkaApi-0] Number of alive brokers '0' does not meet the required replication factor '1' for the offsets topic (configured via 'offsets.topic.replication.factor'). This error can be ignored if the cluster is starting up and not all brokers are up yet. (kafka.server.KafkaApis)
Это мое развертывание Kafka:
apiVersion: apps/v1
kind: Deployment
metadata:
name: kafka
namespace: instagnam
labels:
app: instagnam
service: kafka
spec:
replicas: 1
selector:
matchLabels:
app: instagnam
template:
metadata:
labels:
app: instagnam
service: kafka
id: "0"
spec:
containers:
- name: kafka
image: wurstmeister/kafka
imagePullPolicy: Always
ports:
- containerPort: 9092
name: kafka
env:
- name: KAFKA_PORT
value: "9092"
- name: KAFKA_ADVERTISED_PORT
value: "9092"
- name: KAFKA_ADVERTISED_HOST_NAME
value: kafka
- name: KAFKA_ZOOKEEPER_CONNECT
value: zookeeper:2181
- name: KAFKA_CREATE_TOPICS
value: connessioni:2:1,ricette:2:1
- name: KAFKA_BROKER_ID
value: "0"
Это мой сервис Kafka:
apiVersion: v1
kind: Service
metadata:
name: kafka
namespace: instagnam
labels:
app: instagnam
service: kafka
spec:
selector:
app: instagnam
service: kafka
id: "0"
type: LoadBalancer
ports:
- name: kafka
protocol: TCP
port: 9092
Это мое развертывание Zookeeper:
apiVersion: apps/v1
kind: Deployment
metadata:
name: zookeeper
namespace: instagnam
labels:
app: instagnam
service: zookeeper
spec:
replicas: 1
selector:
matchLabels:
app: instagnam
service: zookeeper
template:
metadata:
labels:
app: instagnam
service: zookeeper
spec:
containers:
- image: wurstmeister/zookeeper
name: zookeeper
imagePullPolicy: Always
ports:
- containerPort: 2181
env:
- name: ZOOKEEPER_ID
value: "1"
- name: ZOOKEEPER_SERVER_1
value: zookeeper
И это мой сервис Zookeeper:
apiVersion: v1
kind: Service
metadata:
name: zookeeper
namespace: instagnam
spec:
selector:
app: instagnam
service: zookeeper
ports:
- name: client
protocol: TCP
port: 2181
- name: follower
protocol: TCP
port: 2888
- name: leader
protocol: TCP
port: 3888
Что я здесь делаю не так?
Если вам нужен полный журнал Kafka, вот он:https://pastebin.com/eBu8JB8A
И есть журналы Zookeper, если они вам тоже нужны:https://pastebin.com/gtnxSftW
РЕДАКТИРОВАТЬ: я запускаю это на minikube, если это может помочь.
Комментарии:
1. В качестве альтернативного способа развертывания Kafka в Kubernetes рассмотрите: strimzi.io/docs/operators/latest/overview.html , оператор Kubernetes для Kafka. strimzi справляется со значительной сложностью развертывания Kafka в Kubernetes.
Ответ №1:
Брокер Кафка.изменения идентификатора могут вызвать эту проблему. Очистите метаданные kafka в разделе zk, удалите все / brokers … примечание: данные kafka будут потеряны
Ответ №2:
Предполагая, что вы находитесь на одном и том же изображении Кафки. Решение, которое устранило проблему для меня, было:
Замена устаревших настроек KAFKA_ADVERTISED_PORT
и KAFKA_ADVERTISED_HOST_NAME
, как подробно описано в docker image README, см. Текущие документы (или закрепленный фиксатор README). С KAFKA_ADVERTISED_LISTENERS
и KAFKA_LISTENERS
, для которых мне пришлось добавить конфигурации «внутри» и «снаружи».
Обобщенный из https://github.com/wurstmeister/kafka-docker/issues/218#issuecomment-362327563