描述
使用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