我有一个由 Rancher Desktop 创建的本地 k3s Kubernetes 集群。
我正在尝试根据本教程使用负载均衡器设置Kafka外部监听器。这是我的步骤:
kubectl create namespace hm-kafka
kubectl apply --filename="https://strimzi.io/install/latest?namespace=hm-kafka" --namespace=hm-kafka
kubectl apply --filename=my-kafka-persistent.yaml --namespace=hm-kafka
my-kafka-persistent.yaml(基于kafka-persistent.yaml):
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: hm-kafka
spec:
kafka:
version: 3.4.0
replicas: 3
listeners:
- name: plain
port: 9092
type: internal
tls: false
- name: tls
port: 9093
type: internal
tls: true
- name: external
port: 9094
type: loadbalancer
tls: false
configuration:
brokers:
- broker: 0
advertisedPort: 9095
- broker: 1
advertisedPort: 9096
- broker: 2
advertisedPort: 9097
config:
offsets.topic.replication.factor: 3
transaction.state.log.replication.factor: 3
transaction.state.log.min.isr: 2
default.replication.factor: 3
min.insync.replicas: 2
inter.broker.protocol.version: "3.4"
storage:
type: jbod
volumes:
- id: 0
type: persistent-claim
size: 100Gi
deleteClaim: false
zookeeper:
replicas: 3
storage:
type: persistent-claim
size: 100Gi
deleteClaim: false
entityOperator:
topicOperator: {}
userOperator: {}
当我部署时,我遇到了这个问题
豆荚:
服务:
这是因为我的 YAML 文件中的
advertisedPort
选项并没有真正改变负载均衡器本身使用的端口。它仅更改 advertised.listeners
Kafka 代理配置参数中使用的端口号。
他们都尝试使用端口 9094.
我想知道有没有办法可以更改负载均衡器端口,以便引导程序和代理程序具有不同的端口?它会帮助卡夫卡工作吗?谢谢!
另外,我看了另一个类似的问题和它的answer,这是否意味着使用哪个端口取决于Rancher Desktop创建的k3s Kubernetes集群而我们无法控制?谢谢!
为了允许客户访问各个经纪人,Strimzi 需要为每个经纪人创建一个
type: LoadBalancer
服务。此外,它还创建了一项针对所有代理的服务以进行引导(可以禁用)。这通常会导致 Kubernetes 为每个服务配置一个负载均衡器 -> 因此无需对端口号进行任何复杂的修改。
如果您的环境不支持这样的负载均衡器,也许最好的办法是尝试使用其他一种机制来公开 Kafka 集群。例如 NodePorts 或 Kubernetes Nginx Ingress。
如果你愿意,你也可以自己做:
type: loadbalancer
一个advertisedHost
和 advertisedPort
选项配置要为每个代理使用的主机名和端口