首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Istio -使用DNS名称访问外部数据库(TCP)

Istio -使用DNS名称访问外部数据库(TCP)
EN

Stack Overflow用户
提问于 2020-10-06 04:26:48
回答 1查看 273关注 0票数 1

我想访问某个IP上公开的外部数据库: 10.48.100.124 (没有与此IP关联的DNS名称),端口为3306。我已经创建了ServiceEntry:

代码语言:javascript
复制
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: csd-database
  namespace: testnam-dev
spec:
  hosts:
    - csd-database
  addresses:
    - 10.48.100.124/32
  exportTo:
    - "."
  ports:
    - number: 3306
      name: tcp
      protocol: TCP
  location: MESH_EXTERNAL
  resolution: STATIC
  endpoints:
    - address: 10.48.100.124
      ports:
        tcp: 3306

如果我尝试在集群内部通过IP (10.48.100.124)连接,工作正常。但是我想用DNS名称公开这个服务(在k8s/isito集群中),所以我创建了VirtualService:

代码语言:javascript
复制
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: csd-database
  namespace: testnam-dev
spec:
  hosts:
    - csd-database
  gateways:
    - ingresgateway
  tcp:
  - route:
    - destination:
       host: csd-database

但是我无法连接到主机: csd-database也无法在3306端口连接到csd-database。如何在集群内暴露DNS名称的ServiceEntry?

数据库没有DNS名称(外部),它只有IP地址。因此,只能在10.48.100.124:3306上访问数据库

EN

回答 1

Stack Overflow用户

发布于 2020-10-06 23:50:45

TLDR:您的ServiceEntry当前配置为按静态ip地址解析。

更改:

代码语言:javascript
复制
resolution: STATIC

代码语言:javascript
复制
resolution: DNS

根据istio documentation

ServiceEntry.Resolution

解析确定代理如何解析与服务关联的网络终结点的IP地址,以便可以路由到其中一个。此处指定的解析模式对应用程序解析与服务关联的IP地址的方式没有影响。应用程序可能仍必须使用DNS将服务解析为IP,以便代理可以捕获出站流量。或者,对于超文本传输协议服务,应用程序可以直接与代理进行通信(例如,通过设置HTTP_PROXY)以与这些服务对话。

NONE -假设传入连接已被解析(到特定的目标IP地址)。这种连接通常使用诸如IP表重定向/ eBPF之类的机制经由代理进行路由。在执行任何与路由相关的转换之后,代理将把连接转发到该连接所绑定到的IP地址。

STATIC -使用端点中指定的静态IP地址(见下文)作为与服务关联的支持实例。

DNS -在请求处理期间,尝试通过查询环境DNS来解析IP地址。如果未指定端点,代理将解析主机字段中指定的DNS地址(如果未使用通配符)。如果指定了终结点,则将解析终结点中指定的DNS地址以确定目标IP地址。DNS解析不能用于Unix域套接字终结点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64215742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档