问题描述
问题: 由于某种原因,客户端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
strimzi / 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无效。
感谢您的帮助。谢谢。
解决方法
如https://github.com/strimzi/strimzi-kafka-operator/issues/3898中所述,文档中有一个错字。正确的YAML是:
listeners:
- name: plain
port: 9092
type: internal
tls: false
configuration:
useServiceDnsDomain: true
如果您的域不同于.cluster.local
,则可以使用KUBERNETES_SERVICE_DNS_DOMAIN
env var覆盖它。但是您必须在Strimzi Cluster Operator窗格上对其进行配置。不在卡夫卡豆荚上:https://strimzi.io/docs/operators/latest/full/using.html#ref-operator-cluster-str