如何将 DNS 名称分配给 Kafka Kubernetes Nodeport
How to assign a DNS name to a Kafka Kubernetes Nodeport
我在 minikube 上使用 Strimzi Kafka 运算符创建了一个 Kafka 集群来学习基础知识。我正在尝试从我的主机访问 minikube 环境中的 Kafka,为此我创建了一个 Kafka 节点端口:
apiVersion: kafka.strimzi.io/v1beta1
kind: Kafka
metadata:
name: kafka-cluster
spec:
kafka:
version: 2.4.0
replicas: 3
listeners:
plain: {}
tls: {}
external:
type: nodeport
tls: false
overrides:
bootstrap:
nodePort: 32100
brokers:
- broker: 0
nodePort: 32000
- broker: 1
nodePort: 32001
- broker: 2
nodePort: 32002
...
...
...
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kafka-cluster-kafka-0 NodePort 10.96.40.176 <none> 9094:32000/TCP 7d
kafka-cluster-kafka-1 NodePort 10.96.138.2 <none> 9094:32001/TCP 7d
kafka-cluster-kafka-2 NodePort 10.96.209.16 <none> 9094:32002/TCP 7d
kafka-cluster-kafka-bootstrap ClusterIP 10.96.216.169 <none> 9091/TCP,9092/TCP,9093/TCP,9404/TCP 7d
kafka-cluster-kafka-brokers ClusterIP None <none> 9091/TCP,9092/TCP,9093/TCP 7d
kafka-cluster-kafka-exporter ClusterIP 10.96.17.45 <none> 9404/TCP 47d
kafka-cluster-kafka-external-bootstrap NodePort 10.96.252.97 <none> 9094:32100/TCP 7d
kafka-cluster-zookeeper-client ClusterIP 10.96.155.34 <none> 9404/TCP,2181/TCP 7d
kafka-cluster-zookeeper-nodes ClusterIP None <none> 2181/TCP,2888/TCP,3888/TCP 7d
到目前为止一切似乎都运行良好,我能够使用 kafka-cluster-kafka-external-bootstrap (withBootstrapServers("192.168.99.107:32100")
将消息发布到 Kafka 主题。由于我正在逐步学习,所以我想看看是否可以指定一个名称而不是通过 IP 地址来引用。
在 Nodeport 配置中有简单的方法吗?我在这个问题上被困了一个星期。感谢向正确方向的推动!
你应该安装一些 Kubernetes 裸机负载均衡器,比如 MetalLB, then use LoadBalancer
service 而不是 NodePort
服务,获取 LoadBalancer
服务的 EXTERNAL-IP
值并将 DNS 指向此IP.
这主要取决于您的基础架构。 Minikube 使用 IP 地址作为节点地址和负载均衡器地址。这就是为什么 Strimzi 总是根据 IP 地址为您提供地址。如果你想 运行 它在 Kubernetes 上,例如在 AWS 的某个地方,你会开箱即用地获得 DNS 名称而不是 IP。
即使使用 Minikube,您也可以将 Strimzi 配置为使用您指定的一些名称:https://strimzi.io/docs/latest/full.html#con-kafka-broker-external-listeners-addresses-deployment-configuration-kafka ... 但是您需要确保这些路由到 Minikube IP 地址,例如通过将它们添加到 /etc/hosts
。但是 TBH,通常这对于 Minikube 来说是不值得的。
我在 minikube 上使用 Strimzi Kafka 运算符创建了一个 Kafka 集群来学习基础知识。我正在尝试从我的主机访问 minikube 环境中的 Kafka,为此我创建了一个 Kafka 节点端口:
apiVersion: kafka.strimzi.io/v1beta1
kind: Kafka
metadata:
name: kafka-cluster
spec:
kafka:
version: 2.4.0
replicas: 3
listeners:
plain: {}
tls: {}
external:
type: nodeport
tls: false
overrides:
bootstrap:
nodePort: 32100
brokers:
- broker: 0
nodePort: 32000
- broker: 1
nodePort: 32001
- broker: 2
nodePort: 32002
...
...
...
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kafka-cluster-kafka-0 NodePort 10.96.40.176 <none> 9094:32000/TCP 7d
kafka-cluster-kafka-1 NodePort 10.96.138.2 <none> 9094:32001/TCP 7d
kafka-cluster-kafka-2 NodePort 10.96.209.16 <none> 9094:32002/TCP 7d
kafka-cluster-kafka-bootstrap ClusterIP 10.96.216.169 <none> 9091/TCP,9092/TCP,9093/TCP,9404/TCP 7d
kafka-cluster-kafka-brokers ClusterIP None <none> 9091/TCP,9092/TCP,9093/TCP 7d
kafka-cluster-kafka-exporter ClusterIP 10.96.17.45 <none> 9404/TCP 47d
kafka-cluster-kafka-external-bootstrap NodePort 10.96.252.97 <none> 9094:32100/TCP 7d
kafka-cluster-zookeeper-client ClusterIP 10.96.155.34 <none> 9404/TCP,2181/TCP 7d
kafka-cluster-zookeeper-nodes ClusterIP None <none> 2181/TCP,2888/TCP,3888/TCP 7d
到目前为止一切似乎都运行良好,我能够使用 kafka-cluster-kafka-external-bootstrap (withBootstrapServers("192.168.99.107:32100")
将消息发布到 Kafka 主题。由于我正在逐步学习,所以我想看看是否可以指定一个名称而不是通过 IP 地址来引用。
在 Nodeport 配置中有简单的方法吗?我在这个问题上被困了一个星期。感谢向正确方向的推动!
你应该安装一些 Kubernetes 裸机负载均衡器,比如 MetalLB, then use LoadBalancer
service 而不是 NodePort
服务,获取 LoadBalancer
服务的 EXTERNAL-IP
值并将 DNS 指向此IP.
这主要取决于您的基础架构。 Minikube 使用 IP 地址作为节点地址和负载均衡器地址。这就是为什么 Strimzi 总是根据 IP 地址为您提供地址。如果你想 运行 它在 Kubernetes 上,例如在 AWS 的某个地方,你会开箱即用地获得 DNS 名称而不是 IP。
即使使用 Minikube,您也可以将 Strimzi 配置为使用您指定的一些名称:https://strimzi.io/docs/latest/full.html#con-kafka-broker-external-listeners-addresses-deployment-configuration-kafka ... 但是您需要确保这些路由到 Minikube IP 地址,例如通过将它们添加到 /etc/hosts
。但是 TBH,通常这对于 Minikube 来说是不值得的。