问题:由于某种原因,客户端 pod 只能解析完全限定的完全限定 DNS 名称,包括集群服务后缀。
这个问题在这个问题中说明了: AKS, WINdows Node, dns does not resolve service until fully qualified name is used
为了解决这个问题,我使用了 useServiceDnsDomain 标志。文档(https://strimzi.io/docs/operators/master/using.html#type-GenericKafkaListenerConfiguration-schema-reference)将其解释为
配置是否应使用 Kubernetes 服务 DNS 域。如果设置为 true,则生成的地址包含服务 DNS 域后缀(默认为 .cluster.local,可以使用环境变量 KUBERNETES_SERVICE_DNS_DOMAIN 进行配置)。默认为 false。此字段只能与内部类型侦听器一起使用。
我的部分yaml如下
apiVersion: kafka.strimzi.io/v1beta1
kind: Kafka
metadata:
name: tt-kafka
namespace: shared
spec:
kafka:
version: 2.5.0
replicas: 3
listeners:
- name: local
port: 9092
type: internal
tls: false
useServiceDnsDomain: true
这没有做任何事情,所以我也尝试添加 KUBERNETES_SERVICE_DNS_DOMAIN 如下所示
template:
kafkaContainer:
env:
- name: KUBERNETES_SERVICE_DNS_DOMAIN
value: .cluster.local
srimzi/operator:0.20.0 图像正在使用中。
在我的客户端(.net Confluent.Kafka 1.4.4)中,我使用 tt-kafka-kafka-bootstrap.shared.svc.cluster.local 作为 BootstrapServers。它给了我错误
错误:GroupCoordinator:无法解析“tt-kafka-kafka-2.tt-kafka-kafka-brokers.shared.svc:9092”:不知道这样的主机。
我期望代理服务向客户端提供全名,但从错误看来 useServiceDnsDomain 没有效果。
任何帮助表示赞赏。谢谢。