【问题标题】:Schema Registry on Kubernetes, publicly accesibleKubernetes 上的 Schema Registry,可公开访问
【发布时间】:2019-04-28 23:36:39
【问题描述】:

我在 Azure 上有一个三节点 kubernetes 集群,其中包含三个 Kafka 代理和一个 zookeeper 实例。 Kafka 代理和 Zookeeper 可通过部署其对应服务(负载均衡器)公开访问。

现在我正在部署一个模式注册表,我希望它可以从 kubernetes 集群外部访问。 我遵循与以前相同的步骤,但无法从 kubernetes 集群外部访问模式注册表 api。 如果我从 docker 容器中 curl 模式注册表,一切正常,所以我假设模式注册表正常运行。 这是我的架构注册表 yamls 描述符:

架构注册表部署:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: schema-registry
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: schema-registry
    spec:
      containers:
      - env:
        - name: SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL
          value: zookeeper-cluster-ip:2181
        - name: SCHEMA_REGISTRY_HOST_NAME
          value: registry-0.schema.default.svc.cluster.local
        - name: SCHEMA_REGISTRY_LISTENERS
          value: http://0.0.0.0:8081
        name: schema-registry
        image: confluentinc/cp-schema-registry:5.0.1
        ports:
        - containerPort: 8081
      restartPolicy: Always

架构注册服务:

apiVersion: v1
kind: Service
metadata:
  name: schema-registry
  labels:
    name: schema-registry
spec:
  ports:
  - port: 8081
  selector:
    name: schema-registry
  type: LoadBalancer

服务部署后,生成公网ip:

kubectl get services
NAME              TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)                      AGE
schema-registry   LoadBalancer   X.X.X.X.       X.X.X.X.       8081:30921/TCP               13m

,所以我运行

curl -X GET -i -H "Content-Type: application/vnd.schemaregistry.v1+json" http://X.X.X.X:8081/subjects

但没有回应。 在容器中,我收到 curl 命令的响应。

我希望架构注册表可以从集群外部访问的原因是我们想从 Nifi 集群访问它。

这可能吗?

【问题讨论】:

  • 我想知道使用 Confluent Helm 图表是否会产生不同的结果

标签: kubernetes apache-kafka confluent-schema-registry


【解决方案1】:

防火墙规则的一个简单问题是问题的原因。 服务和部署配置没问题。 还是谢谢!

【讨论】:

    【解决方案2】:

    我之前遇到过同样的问题,我通过使用选择器/应用程序解决了它。

    Deployment:
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      namespace: ***
      name: schema-registry
      labels:
        app: schema-registry
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: schema-registry
      template:
        metadata:
          labels:
            app: schema-registry
        spec:
          containers:
          - name: schema-registry
            image: confluentinc/cp-schema-registry:5.3.0
            ports:
            - containerPort: 8081
            imagePullPolicy: Always
            env:
            - name: SCHEMA_REGISTRY_HOST_NAME
              value: schema-registry
            - name: SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL
              value: ***
            - name: SCHEMA_REGISTRY_LISTENERS
              value: http://0.0.0.0:8081
            command:
            - bash
            - -c
            - unset SCHEMA_REGISTRY_PORT; /etc/confluent/docker/run
    
    Service:
    apiVersion: v1
    kind: Service
    metadata:
      annotations: 
        service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
      name: schema-registry
      namespace: ***
      labels:
        app: schema-registry
    spec:
      selector:
        app: schema-registry
      ports:
      - port: 8081
      type: LoadBalancer
    

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2019-07-21
      • 2019-03-25
      • 2019-09-26
      • 2021-03-08
      • 2021-04-02
      • 2021-10-04
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多