Kubernetes Istio-连接到外部ip
我安装了IstioKubernetes Istio-连接到外部ip,kubernetes,istio,Kubernetes,Istio,我安装了Istio gateways.istio-egressgateway.enabled = true 当我尝试连接到外部数据库时,我收到一个错误。 我没有仅限域的ip和端口,因此我定义了以下规则: apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: external-db spec: hosts: - external-db.tcp.svc addresses: - 1
gateways.istio-egressgateway.enabled = true
当我尝试连接到外部数据库时,我收到一个错误。
我没有仅限域的ip和端口,因此我定义了以下规则:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: external-db
spec:
hosts:
- external-db.tcp.svc
addresses:
- 190.64.31.232/32
ports:
- number: 3306
name: tcp
protocol: TCP
location: MESH_EXTERNAL
resolution: STATIC
endpoints:
- address: 190.64.31.232
然后,我在部署在服务网格中的系统中打开一个Shell
它无法解析名称
$ ping external-db.tcp.svc
ping: ceip-db.tcp.svc: Name or service not known
但我可以使用ip地址连接
$ ping 190.64.31.232
PING 190.64.31.232 (190.64.31.232) 56(84) bytes of data.
64 bytes from 190.64.31.232: icmp_seq=1 ttl=249 time=1.35 ms
64 bytes from 190.64.31.232: icmp_seq=2 ttl=249 time=1.42 ms
发生了什么事?我必须使用域或ip连接吗?
我可以为我的外部ip定义一个内部域吗 您可以使用硬编码的IP端点创建无头服务:
---
apiVersion: v1
kind: Service
metadata:
name: external-db
spec:
clusterIP: None
ports:
- protocol: TCP
port: 3306
---
apiVersion: v1
kind: Endpoints
metadata:
name: external-db
subsets:
- addresses:
- ip: 190.64.31.232
ports:
- port: 3306
然后您可以向ServiceEntry中添加主机外部db.default.svc.cluster.local您可以使用硬编码的IP端点创建无头服务:
---
apiVersion: v1
kind: Service
metadata:
name: external-db
spec:
clusterIP: None
ports:
- protocol: TCP
port: 3306
---
apiVersion: v1
kind: Endpoints
metadata:
name: external-db
subsets:
- addresses:
- ip: 190.64.31.232
ports:
- port: 3306
然后您可以向ServiceEntry中添加主机外部db.default.svc.cluster.local问题在于解析DNS,它基本上与ServiceEntry中的解析配置有关 根据istio的: 解析确定代理将如何解析与服务关联的网络端点的IP地址,以便可以路由到其中一个端点 由于您已将其配置为静态,因此您正在告诉istio proxy/Environment查找用于解析该DNS名称的端点;因此,您需要将端点定义为
另一种简单的方法是,如果DNS名称是在网格之外定义的,则只需将解析更改为DNS,这将强制istio代理在请求处理期间查询DNS服务器。问题在于解析DNS,它基本上与ServiceEntry中的解析配置有关 根据istio的: 解析确定代理将如何解析与服务关联的网络端点的IP地址,以便可以路由到其中一个端点 由于您已将其配置为静态,因此您正在告诉istio proxy/Environment查找用于解析该DNS名称的端点;因此,您需要将端点定义为
另一种简单的方法是,如果DNS名称是在网格之外定义的,则只需将解析更改为DNS,这将强制istio代理在请求处理期间查询DNS服务器。是否尝试通过IP连接?它有效吗?@VasilyAngapov是的,ip有效。创建ServiceEntry后,我可以通过IP连接,但它无法解析我定义的域名external-db.tcp.svc。这是正确的行为吗?我可以用名字连接吗?你试过用IP连接吗?它有效吗?@VasilyAngapov是的,ip有效。创建ServiceEntry后,我可以通过IP连接,但它无法解析我定义的域名external-db.tcp.svc。这是正确的行为吗?我可以用名字连接吗?这对我来说很有效,除了我必须使用常规clusterIP服务,而且ServiceEntry在黑洞cluser中被Istio忽略!这对我来说很有效,除了我必须使用常规的clusterIP服务,而且ServiceEntry在黑洞cluser中被Istio忽略!