pod中的服务(已启用envoy代理)无法连接到redis pod

时间:2018-01-01 06:40:21

标签: istio kubernetes envoyproxy

步骤1.我在没有特使边车的情况下部署了redis。 https://github.com/kubernetes/charts/tree/master/stable/redis

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

步骤2.在另一个具有特使边车注入的吊舱中部署服务。

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

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

有没有人有建议/想法?

3 个答案:

答案 0 :(得分:0)

您是否可以在启用了相互TLS的情况下设置istio? 这可以解释为什么您无法从网格中的窗格连接到redis pod(不是网格的一部分)。这是因为正在尝试连接到redis的pod上的边车会期待未提供的TLS通信。

答案 1 :(得分:0)

如果您使用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"。

答案 2 :(得分:0)

您将必须创建服务条目来连接启用了使节的服务中的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