我已经在 k8s 上部署了 envoy 容器作为 Istio 部署的一部分。每个 Envoy 代理容器都作为“sidecar”安装在 k8s 的 pod 中的应用容器旁边。
我能够从应用程序内部发起 HTTP 流量,但是当尝试联系 Redis 服务器(具有另一个特使代理的另一个容器)时,我无法连接并接收HTTP/1.1 400 Bad Request
来自特使的消息。
在检查特使的日志时,只要此连接通过特使,我就会看到以下消息:HTTP/1.1" 0 - 0 0 0 "_"."_"."_"."_""
据我了解,Redis 命令是使用纯 TCP 传输而不使用 HTTP 发送的。Envoy 是否可能只希望看到 HTTP 流量并拒绝仅 TCP 流量?假设我的理解是正确的,有没有办法使用 Istio 改变这种行为并接受和处理通用 TCP 流量?
以下是我相关的部署yaml文件:
apiVersion: v1
kind: Service
metadata:
name: redis
namespace: default
labels:
component: redis
role: client
spec:
selector:
app: redis
ports:
- name: http
port: 6379
targetPort: 6379
protocol: TCP
type: ClusterIP
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: redis-db
spec:
replicas: 1
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:3.2-alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort: 6379
谢谢