在kubernetes+istio中通过FQDN请求Nacos服务
背景是我们希望能在k8s中通过DNS方式,访问服务的FQDN来调用虚拟机注册到nacos的服务。
我们vm和k8s的网段配置了相关路由能相互访问
之前nacos有维护了一个同步去coredns的项目,但是年久失修,支持的nacos版本和coredns版本都不高。后面在官方文档找资料的时候,发现nacos是支持istio MCP协议的 Pilot MCP协议介绍,于是采取这个方案来完成目标。《Nacos 1.1.4发布,业界率先支持Istio MCP协议》
环境:
istio: 1.10
nacos: 2.1.0
配置nacos开启MCP Server
进入nacos配置目录,执行以下命令,把 nacos.istio.mcp.server.enabled
值设置为 true。重启nacos server 让它运行MCP Server。
1 | [root@dev_10.1.10.209 nacos]#sed -i 's/nacos.istio.mcp.server.enabled=false/nacos.istio.mcp.server.enabled=true/g' conf/application.properties |
重启后nacos MCP server会监听 18848
端口
1 | [root@dev_10.1.10.209 nacos]#lsof -i:18848 |
配置istio添加MCP server sources
我测试的nacos server所在的服务器IP10.1.10.209
nacos MCP server监听的端口 18848
编辑istio的configmap,添加以下配置
1 | kubectl edit -n istio-system cm istio |
1 | configSources: |
添加后的配置大概如下:
1 | apiVersion: v1 |
重启下istiod 连接MCP server同步信息
1 | kubectl rollout restart -n istio-system deployment istiod |