为Kafka创建的kubernetes端点,但未反映在pod中

iaqfqrcu  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(360)

在kubernetes集群中,我创建了指向kafka集群的端点。已成功创建终结点。
姓名-Kafka
端点-x.x.x.x:9092
在我的spring-boot应用程序的部署yaml中,我保留了环境变量broker\u ip。对于这个环境变量,我已经指出:

env:
    - name: BROKER_IP
      value: kafka

pod处于错误状态。在我的引导服务器中,我得到的是kafka,而不是创建的实际端点。有什么想法吗?
更新-刚刚尝试kafka:9092 and 成功了。所以想知道端点是否只Map到ip而不Map到端口?我的理解正确吗??

ar7v8xwq

ar7v8xwq1#

是否可能忘记创建与端点匹配的服务对象?因为您自己提供ip端口对,所以服务需要无选择器。
这对我很有用:

kind: Endpoints
apiVersion: v1
metadata:
  name: kafka
subsets:
  - addresses: [{ip: "1.2.3.4"}]
    ports: [{port: 9092}]
---
kind: Service
apiVersion: v1
metadata:
  name: kafka
spec:
  ports: [{port: 9092}]

测试它:

$ kubectl run kafka-dns-test --image=busybox --attach --rm --restart=Never -- nslookup kafka
If you don't see a command prompt, try pressing enter.
Server:         10.96.0.10
Address:        10.96.0.10:53

Name:   kafka.default.svc.cluster.local
Address: 10.96.220.40

成功查找,忽略其他 ***Can't find : No answer 信息
另外,因为有一个服务对象,所以您可以在pod中获得一些环境变量(无需声明它们):

KAFKA_PORT='tcp://10.96.220.40:9092'
KAFKA_PORT_9092_TCP='tcp://10.96.220.40:9092'
KAFKA_PORT_9092_TCP_ADDR='10.96.220.40'
KAFKA_PORT_9092_TCP_PORT='9092'
KAFKA_PORT_9092_TCP_PROTO='tcp'
KAFKA_SERVICE_HOST='10.96.220.40'
KAFKA_SERVICE_PORT='9092'

但是使用服务最灵活的方法仍然是使用dns名称( kafka 在这种情况下)。

相关问题