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 时,它不存在。
我正在尝试 运行 在 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 时,它不存在。