strimzi operator 0.20 kafka 'useServiceDnsDomain' 没有效果

strimzi operator 0.20 kafka 'useServiceDnsDomain' has no effect

问题: 由于某种原因,客户端 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 ) 将其解释为

Configures whether the Kubernetes service DNS domain should be used or not. If set to true, the generated addresses with contain the service DNS domain suffix (by default .cluster.local, can be configured using environment variable KUBERNETES_SERVICE_DNS_DOMAIN). Defaults to false.This field can be used only with internal type listener.

我的部分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。 它给了我错误

Error: GroupCoordinator: Failed to resolve 'tt-kafka-kafka-2.tt-kafka-kafka-brokers.shared.svc:9092': No such host is known.

我希望代理服务向客户端提供全名,但从错误来看,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 环境变量来覆盖它。但是您必须在 Strimzi Cluster Operator pod 上配置它。不在 Kafka pods: https://strimzi.io/docs/operators/latest/full/using.html#ref-operator-cluster-str