【问题标题】:service in a pod(envoy proxy enabled) cannot connect to redis podpod 中的服务(启用了特使代理)无法连接到 redis pod
【发布时间】:2018-06-11 08:59:10
【问题描述】:

第 1 步。我在没有 envoy sidecar 的情况下部署了 redis。 https://github.com/kubernetes/charts/tree/master/stable/redis

在另一个没有 envoy 的 pod 中运行 regis-cli 时,redis 连接工作正常。 => 证明了 redis 本身的功能。

步骤 2. 在另一个具有 envoy sidecar 注入的 pod 中部署服务。

尝试从服务连接到 redis 时,无法建立连接。

规格: 目的地: 服务: ”*” 端口: - 端口:6379 协议:redis

有人有建议/想法吗?

【问题讨论】:

    标签: istio kubernetes envoyproxy


    【解决方案1】:

    您是否设置了启用双向 TLS 的 istio?
    这可以解释为什么您无法从网格中的 pod 连接到 redis pod(不是网格的一部分)。这是因为 pod 上尝试连接 redis 的 sidecar 会期望没有给出的 TLS 通信。

    【讨论】:

      【解决方案2】:

      如果您使用 Istio 0.3.0,此 PR https://github.com/istio/istio/pull/1915 已解决您遇到的问题。在 Istio 0.4.0 中不存在这个问题。

      或者,克隆https://github.com/kubernetes/charts/tree/master/stable/redis 并编辑https://github.com/kubernetes/charts/blob/master/stable/redis/templates/svc.yaml#L24 - 将端口名称更改为“tcp”而不是“redis”。

      【讨论】:

        【解决方案3】:

        您必须创建服务条目才能从启用了 envoy 的服务连接 redis,如下所示

        apiVersion: networking.istio.io/v1alpha3
        kind: ServiceEntry
        metadata:
        name: external-svc-redis
        spec:
          hosts:
            - "REDIS_ENDPOINT"
        location: MESH_EXTERNAL
        ports:
          - number: 6379
            name: http
            protocol: REDIS
        resolution: NONE
        

        $ kubectl apply -f external-svc-redis.yaml

        【讨论】:

          猜你喜欢
          • 2021-01-02
          • 2018-09-03
          • 1970-01-01
          • 2020-01-01
          • 1970-01-01
          • 2016-04-28
          • 2020-04-25
          • 2020-02-04
          • 2018-08-18
          相关资源
          最近更新 更多