问题描述
我已经在kubernetes上部署了strimzi kafka,并且在本地也安装了kube。但是每次我想在kafka中创建一个新主题时,都需要通过rancher导入yaml文件来创建一个主题并提供主题名称。
是否可以直接通过kubectl命令创建kafka主题?
这些是我用来运行kafka的命令:
Producer: kubectl run kafka-producer1 -ti --image=strimzi/kafka:0.18.0-kafka-2.4.0 --rm=true --restart=Never -- bin/kafka-console-producer.sh --broker-list 11.23.41.32:31025 --topic topic-name
Consumer: kubectl run kafka-consumer1 -ti --image=strimzi/kafka:0.18.0-kafka-2.4.0 --restart=Never -- bin/kafka-console-consumer.sh --bootstrap-server 11.23.41.32:31025 --topic topic-name --from-beginning
解决方法
您可以像生产和消费一样运行kafka-topics
kubectl run ... kafka-topics --create ...
,
这是借助kafka connect和kubectl创建主题的命令之一
kubectl exec -it <kafka-connect-service-name> -c <cluster-ip> -n labkafka -- kafka-topics --create --topic <topic_name> --bootstrap-server <bootstrap-server>
,
另一种方法是使用KafkaTopic
资源:
kubectl apply -f - <<EOF
apiVersion: kafka.strimzi.io/v1beta1
kind: KafkaTopic
metadata:
name: my-new-topic
labels:
strimzi.io/cluster: my-cluster
spec:
replicas: 3
partitions: 10
EOF
kubectl get kafkatopics.kafka.strimzi.io
NAME CLUSTER PARTITIONS REPLICATION FACTOR
my-new-topic my-cluster 10 3