描述
使用RegistryHub
资源,注册了基于dubbo
协议的第三方注册中心Zookeeper、Nacos,也生成ServiceEntry
资源,但是客户端仍然无法访问,比如生成的ServiceEntry
如下:
kubectl -ndefault get serviceentry
NAME HOSTS LOCATION RESOLUTION AGE
aeraki-org-apache-dubbo-samples-api-greetingservice-1-0-0-default ["org.apache.dubbo.samples.api.greetingservice-1.0.0.default"] MESH_INTERNAL STATIC 32s
解决办法
使用基于dubbo
协议的第三方注册中心Zookeeper、Nacos,因istio官方不知道dubbo
协议,我们服务网格产品还会在servicemesh
命名空间生成envoyfilter
,来将下方的协议替换为envoy
支持的dubbo
协议,可通过以下命令查看是否生成对于的envoyfilter
:
kubectl -nservicemesh get envoyfilter
对于上面的serviceentry
aeraki-org-apache-dubbo-samples-api-greetingservice-1-0-0-default
会生成以下两条记录:
aeraki-outbound-org.apache.dubbo.samples.api.greetingservice-1.0.0.default-240.240.0.1-20880 3m53s
aeraki-inbound-org.apache.dubbo.samples.api.greetingservice-1.0.0.default-20880 3m53s
如果查看没有生成对于的envoyfilter
,可重启服务网格中的dubbo-controller
服务,稍后查看是否解决。
kubectl -nservicemesh rollout restart deployment/dubbo-controller