本文适用于kafka2.2及以上版本
准备工作
获取到部署的kafka信息
在k8s中的一个node节点上,执行kubectl查看到kafka的访问ip和端口:kubectl get svc -n ${部署kafka的命名空间名}
图中第一行 kafka ClusterI后的ip和端口就是【集群访问ip端口】,也是
--bootstrap-server的参数
找到可执行kafka命令的资源
进入部署kafka集群的一个node机器,进入kafka pod,找到kafka-topics.sh,执行find / -name kafka-topics.sh
查询
topic 列表
./kafka-topics.sh --bootstrap-server localhost:9092 --list
topic 详情
#查看特定topic的详细信息
./kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic <topic-name>
#查看所有topic的详细信息
./kafka-topics.sh --bootstrap-server localhost:9092 --describe
增删改
创建topic
./kafka-topics.sh --bootstrap-server localhost:9092 --create --topic <topic-name> --partitions <num-partitions> --replication-factor <replication-factor>
其中,<topic-name>是要创建的topic的名称,<num-partitions>是要为该topic创建的分区数,<replication-factor>是要为该topic设置的副本数
删除topic
./kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic <topic-name>
修改topic分区
./kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic <topic-name> --partitions <num-partitions>
其中,<num-partitions>不能小于原topic的的分区数,也就是只能往大了改。若小于原分区数会修改失败并报错:InvalidPartitionsException: Topic currently has 10 partitions, which is higher than the requested 5.
常见问题
使用命令报错:Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 5555; nested exception is: java.net.BindException: Address already in use (Bind failed) sun.management.AgentConfigurationError: java.rmi.server.ExportException: Port already in use: 5555; nested exception is: java.net.BindException: Address already in use (Bind failed)
解决办法:执行export JMX_PORT=5557,更换为其他端口