1.前置条件
- 一套部署好的k8s集群
- 已部署好Storage Class或PV存储,我使用的nfs csi存储驱动
2.k8s集群部署文档
https://www.cnblogs.com/Leonardo-li/p/18796443
3.csi-driver-nfs部署文档
https://www.cnblogs.com/Leonardo-li/p/18813140
4.kafka单节点部署
4.1 kafka configmap部署
CODEBLOCK_PLACEHOLDER_0001 CODEBLOCK_PLACEHOLDER_0002
4.2 kafka headless 部署
CODEBLOCK_PLACEHOLDER_0003 CODEBLOCK_PLACEHOLDER_0004
4.3 kafka statefulset 部署
CODEBLOCK_PLACEHOLDER_0005 CODEBLOCK_PLACEHOLDER_0006
5.kafka生产消息和消费消息测试(python)
5.1 安装库
bash
pip install confluent_kafka
5.2 生产消息Producer.py
python
from confluent_kafka import Producer
conf = {
'bootstrap.servers': '192.168.4.60:9092', # 替换真实IP
'security.protocol': 'SASL_PLAINTEXT',
'sasl.mechanism': 'PLAIN',
'sasl.username': 'admin',
'sasl.password': '123456'
}
def delivery_report(err, msg):
"""静默处理回调,只关注错误"""
if err:
print(f"发送失败: {err}")
try:
producer = Producer(conf)
message = "Hello from Python"
# 核心输出:生产内容
print(f"已生产消息: {message}")
producer.produce('test-topic', message, callback=delivery_report)
producer.flush(timeout=5)
except Exception as e:
print(f"生产异常: {str(e)}")
5.3 消费消息Consumer.py
bash
from confluent_kafka import Consumer
conf = {
'bootstrap.servers': '192.168.4.60:9092', # 替换真实IP
'security.protocol': 'SASL_PLAINTEXT',
'sasl.mechanism': 'PLAIN',
'sasl.username': 'admin',
'sasl.password': '123456',
'group.id': 'test-group',
'auto.offset.reset': 'earliest'
}
try:
consumer = Consumer(conf)
consumer.subscribe(['test-topic'])
print("等待消费消息... (Ctrl+C退出)")
while True:
msg = consumer.poll(1.0)
if msg and not msg.error():
# 核心输出:消费内容
print(f"已消费消息: {msg.value().decode('utf-8')}")
except KeyboardInterrupt:
pass
finally:
consumer.close()
5.4 执行Producer.py程序会显示
bash
已生产消息: Hello from Python
5.5 执行Consumer.py程序
bash
等待消费消息... (Ctrl+C退出)
已消费消息: Hello from Python
至此,Kafka(KRaft 模式)单节点并启用 SASL 认证就部署完了!!!