Kafka 的日志目录应该只包含 Kafka 主题数据

Kafka's log directories should only contain Kafka topic data

我正在尝试 运行 在 kubernetes 环境中融合 kafka 图像并面向

FATAL [KafkaServer id=0] Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
kafka.common.KafkaException: Found directory /var/lib/kafka/data, 'data' is not in the form of topic-partition or topic-partition.uniqueId-delete (if marked for deletion).
Kafka's log directories (and children) should only contain Kafka topic data.

我的部署配置:

apiVersion: apps/v1beta2 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: kafka-confluent
  labels:
    app: kafka-confluent
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kafka-confluent
  template:
    metadata:
      labels:
        app: kafka-confluent
    spec:
      containers:
      - name: zookeeper-kafka
        image: zookeeper:3.5
        ports:
        - containerPort: 2181
      - name: kafka-confluent
        image: confluentinc/cp-kafka:4.0.0
        ports:
        - containerPort: 9092
        command:
        - sh
        - -c
        - "exec kafka-server-start /etc/kafka/server.properties \
          --override reserved.broker.max.id=2147483647 \
          --override zookeeper.connect=localhost:2181 \
          --override listeners=PLAINTEXT://:9092 \
          "

为了解决这个问题,我试过像这样挂载一些临时卷。

volumes:
- name: kafka-data
  emptyDir: {}
...
volumeMounts:
- mountPath: /var/lib/kafka/data
  name: kafka-data

并用 init 容器清除 data 目录:

containers:
- name: cleaner
  image: busybox
  command: ['rm', '-rf', '/var/lib/kafka/data/*']

两次尝试均失败,结果相同。

此外,如果我 运行 图像并列出数据 /var/lib/kafka/data/ 看起来目录是空的。

docker run --rm -it confluentinc/cp-kafka:4.0.0 bash
root@35087653f43a:/# ls /var/lib/kafka/data/ -al
total 8
drwxrwxrwx 2 root root 4096 Apr 16 09:59 .
drwxr-xr-x 3 root root 4096 Jan  3 19:20 ..

是你的错吗?

修复添加:

log.dirs=/var/lib/kafka/data

在server.properties

我有这样的工作配置:

volumeMounts:
        - name: data
          mountPath: /var/lib/kafka

并在命令中覆盖 log.dirs

kafka-server-start /etc/kafka/server.properties \
    --override log.dirs=/var/lib/kafka

在我的 windows 系统中我添加了这个

log.dirs=F:\softwares\kafka_2.12-2.5.1\data

server.properties 其中

F:\softwares\kafka_2.12-2.5.1
是我的 kafka 目录并且问题已解决 在这里,我在 kafka 目录中创建了数据文件夹,当我从 7zip 工具中提取 kafka 时,它不存在。