问题:由于某些原因,客户端pod只能解析包含群集服务后缀的完全限定dns名称。
这个问题在这个问题中说明了:在使用完全限定名之前,aks、windows节点、dns不会解析服务
为了解决这个问题,我使用useservicednsdomain标志。文件(https://strimzi.io/docs/operators/master/using.html#type-generickakafkalistenerconfiguration schema reference)解释为
配置是否应使用kubernetes服务dns域。如果设置为true,则生成的地址包含服务dns域后缀(默认情况下,可以使用环境变量kubernetes\u service\u dns\u domain配置.cluster.local)。默认为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\服务\u dns\域,如下所示
template:
kafkaContainer:
env:
- name: KUBERNETES_SERVICE_DNS_DOMAIN
value: .cluster.local
斯特里姆齐/operator:0.20.0 image 正在使用。
在我的客户端(.net confluent.kafka 1.4.4)中,我使用tt-kafka-kafka-bootstrap.shared.svc.cluster.local作为引导服务器。它给了我错误
错误:groupcoordinator:未能解析“tt-kafka-kafka-2.tt-kafka-kafka-brokers.shared”。svc:9092':不知道这样的主机。
我希望代理服务向客户端提供全名,但从错误来看,useservicednsdomain没有任何效果。
感谢您的帮助。谢谢。
1条答案
按热度按时间4si2a6ki1#
如前所述https://github.com/strimzi/strimzi-kafka-operator/issues/3898,文档中有一个拼写错误。正确的yaml是:
如果您的域与
.cluster.local
,您可以使用KUBERNETES_SERVICE_DNS_DOMAIN
env var来覆盖它。但是你必须在strimzi集群操作员舱上配置它。不是在Kafka豆荚上:https://strimzi.io/docs/operators/latest/full/using.html#ref-操作员群集str