Kubernetes 试图在Minikube中运行echo服务器,但Istio从客户端套接字获得的连接被拒绝
我有一个简单的echo服务器(TCP协议),它是用CPP编写的。我能够将服务器放在docker容器中,并通过端口映射使其工作。所以我认为我的客户机服务器是好的。当我上传Kubernetes中的服务器映像并部署Istio时,入口网关监听端口31400,我认为这是使用tcp时正确的一个端口,我从尝试连接到套接字的客户端获得连接被拒绝Kubernetes 试图在Minikube中运行echo服务器,但Istio从客户端套接字获得的连接被拒绝,kubernetes,istio,Kubernetes,Istio,我有一个简单的echo服务器(TCP协议),它是用CPP编写的。我能够将服务器放在docker容器中,并通过端口映射使其工作。所以我认为我的客户机服务器是好的。当我上传Kubernetes中的服务器映像并部署Istio时,入口网关监听端口31400,我认为这是使用tcp时正确的一个端口,我从尝试连接到套接字的客户端获得连接被拒绝 apiVersion: apps/v1 kind: Deployment metadata: name: tcp-echo-deployment lab
apiVersion: apps/v1
kind: Deployment
metadata:
name: tcp-echo-deployment
labels:
app: tcp-echo
system: example
spec:
replicas: 1
selector:
matchLabels:
app: tcp-echo
template:
metadata:
labels:
app: tcp-echo
system: example
spec:
containers:
- name: tcp-echo-container
image: igordptx/my-tcp-server
imagePullPolicy: Always
env:
- name: TCP_PORT
value: "2701"
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: SERVICE_ACCOUNT
valueFrom:
fieldRef:
fieldPath: spec.serviceAccountName
ports:
- name: tcp-echo-port
containerPort: 2701
`
我是新手,我正在尝试让一个简单的echo服务器工作。附加用于路由的部署、服务、网关和虚拟服务的YAML文件的图片
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: echo-tcp-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 31400
name: tcp-echo
protocol: TCP
hosts:
- "*"
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: tcp-echo-vs-from-gw
spec:
hosts:
- "*"
gateways:
- echo-tcp-gateway
tcp:
- match:
- port: 31400
route:
- destination:
host: tcp-echo-service
port:
number: 2701
需要比YAML配置多一点的信息。例如,您是否检查了pod是否正在运行?从在docker中运行echo服务器到使用Istio部署echo服务器,有n件事情可能会出错。为什么不在没有Istio的情况下创建一个简单的部署并对其进行测试呢?是的,Pod正在运行,所有的Pod和部署都在运行且正常。据我所知,Kubernetes ingress无法处理TCP通信,但也许我错了。现在我正在使用clusterIp服务,以确保它不会暴露于外界。Kubernetes Ingress是一个骨架API。它需要第三方控制器才能工作。Istio提供此控制器,但也有独立的入口控制器,例如nginx控制器或traefik。它们都支持TCP。那天我在Minikube上试过Istio,很麻烦。从未再次使用过,因此无法对其当前状态进行评论。此外,我认为Istio使用VirtualService对象而不是服务。不确定。嗨,我想指出,istio与minikube不完全兼容。一些istio功能将不起作用。谢谢,我让它起作用了。Insito ingress外部IP处于挂起模式,因此我从节点端口访问集群。我似乎在工作,但不知道为什么。如果有人有好的解释,我会很高兴听到的
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: echo-tcp-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 31400
name: tcp-echo
protocol: TCP
hosts:
- "*"
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: tcp-echo-vs-from-gw
spec:
hosts:
- "*"
gateways:
- echo-tcp-gateway
tcp:
- match:
- port: 31400
route:
- destination:
host: tcp-echo-service
port:
number: 2701