阿里云使用自定义域名跨集群调用服务
2019-06-12 本文已影响0人
Yellowtail
背景
我们公司在 阿里云上 有两个集群
一个是 swarm
的,一个是 k8s
的,在同一个 vpc
下面
我们现在想在 swarm
集群里的服务A,调用 k8s
集群里的一个服务B
已知,阿里云的 k8s
集群提供ingress
域名,是一个公网域名
我们的服务A在频繁调用服务B时,会出现网络波动和时延高的问题
所以想找到一种方法,让这个请求尽量限定在vpc
内网,来减少上面说的问题
经过提工单,找到了可行的方案,现在分享一下
新建内网slb
阿里云 k8s
集群提供ingress
域名默认是绑定在公网 slb
上,所以请求会从外网绕一圈
现在,新建一个内网slb
, 后续的步骤要用
新建完成之后,得到
内网ip
172.18.0.212
id
xxx
安装 jinja2
后面会用到这个工具, github
pip install jinja2-cli
pip install jinja2-cli[yaml]
在k8s里新建一套 Ingress Controller
在这篇文章里会用到 slb
的 id
k8s ingress 自定义域名
按照上面的文档,给 service 指定一个域名 sms.dev.backend.com
如图所示
这个域名只能通过 curl
的方式访问,那么在我们的代码里该怎么写呢?
新建 privateZone
这个privateZone
就是一个内网DNS服务
专门用来进行 内网域名解析
验证
在 swarm
集群 curl
自定义的域名,有返回值便表明一切配置OK
[root@cf6d9e5767eb94c7e857cd35600149344-node1 ~]# curl sms.dev.backend.com
{"timestamp":"2019-06-13T03:32:38.971+0000","status":404,"error":"Not Found","message":"No message available","path":"/"}
[root@cf6d9e5767eb94c7e857cd35600149344-node1 ~]#
返回信息是典型的 spring boot
信息