Open evaxiang opened 3 years ago
@ paderlol
用nodeport可以,不用peerfinder插件就行了,自己配置集群节点就行,还有自己排查原因,是不是集群选主没成功
用nodeport可以,不用peerfinder插件就行了,自己配置集群节点就行,还有自己排查原因,是不是集群选主没成功
不是选主问题,麻烦看下这里https://github.com/alibaba/nacos/issues/5860
nacos2.0.1,使用了peerfinder nacos集群本身没有问题,nacos-expose.ops.svc.cluster.local:9848是单独启的k8s-nodeport地址,发现开启istio注入pod无法连接nacos部分接口
使用nodeport就不能用peerfinder,另外端口对外需要开放8848和9848,然后你用nodeport估计没法用客户端注册,因为客户端grpc端口会根据主端口加1000算出来的,你代理成nodeport的假设30000多也没用,因为客户端不会用你开放的grpc端口
建议使用反代
使用nodeport就不能用peerfinder,另外端口对外需要开放8848和9848,然后你用nodeport估计没法用客户端注册,因为客户端grpc端口会根据主端口加1000算出来的,你代理成nodeport的假设30000多也没用,因为客户端不会用你开放的grpc端口
nodeport的代理端口开启了对应的8848和9848的,pod注册没有问题,就是istio开了sidecar注入就连接不稳定了
开发本地调试,使用nodeport走外网ip,用grpc协议注册没问题
请问这个的意思是指nacos内部节点访问svc地址吗?这种配置?https://github.com/nacos-group/nacos-k8s/blob/master/deploy/nacos/nacos-no-pvc-ingress.yaml
建议使用反代
反代是指ingress吗?现在主要没k8s内部pod注册nacos问题,外部服务注册没开始istio注入还好
不是,是你你要对外开放,外部客户端访问的grpc端口是主端口自动+1000,不能你自己配置,就是外部你配置的是8848,他默认内部访问grpc就是9848,懂了吗?所以你开nodeport没用
不是,是你你要对外开放,外部客户端访问的grpc端口是主端口自动+1000,不能你自己配置,就是外部你配置的是8848,他默认内部访问grpc就是9848,懂了吗?所以你开nodeport没用
现在是k8s内部服务注册,能连上grpc的9848端口,只是/BiRequestStream/requestBiStream接口请求返回status状态码是0,注册失败
还是回到最还是问题疑问吧,k8s内部服务(spring boot)连接nacos的地址究竟用那种方式最好? 1,nacos-headless的地址,如 nacos-headless.default.svc.cluster.local:8848
2,直接访问nacos所有节点地址,如 nacos-0.nacos-headless.default.svc.cluster.local:8848 nacos-1.nacos-headless.default.svc.cluster.local:8848 nacos-2.nacos-headless.default.svc.cluster.local:8848
3,用自己创建的svc-nodeport地址,如 nacos-expose.default.svc.cluster.local:8848
第二个就行了,不过你需要访问console还是需要放开8848地址
第二个就行了,不过你需要访问console还是需要放开8848地址
好的,我在试下,谢谢,nacos的web用第三个nodeport访问没有问题
用了istio那个转发是不是http2的问题
另外你可以看下这个,是不是因为service端口没有写明是grpc,istio如果用grpc必须在name上明确,你可以看下这个istio官方文档https://istio.io/latest/docs/ops/configuration/traffic-management/protocol-selection/
用了istio那个转发是不是http2的问题
恩开始也怀疑svc-nodeport没我写对,istio没适配到走http2,看见有说要写这样
另外你可以看下这个,是不是因为service端口没有写明是grpc,istio如果用grpc必须在name上明确,你可以看下这个istio官方文档https://istio.io/latest/docs/ops/configuration/traffic-management/protocol-selection/
恩,我参考这个再试试,谢谢指导。究竟name前缀是http2还是grpc。。有文章说用了grpc反而不通
grpc吧
有文章说用了grpc反而不通 https://blog.csdn.net/scun_cg/article/details/104625863
因为客户端本来就是grpc,http2和grpc头不一样的,不知道istio是不是这个http2的标头是否包含grpc的
8848不是grpc啊,只有9848是
第二个就行了,不过你需要访问console还是需要放开8848地址
今天多次测试: 第二种配置nacos所有pod地址方式,可以注册上nacos,但是不稳定,nacos里经常丢失,pod节点扩容也无法发现新节点等 第三种配置用nacos-headless地址,直接注册不上nacos
网络不稳定可能跟k8s或者istio转发相关,这个需要自己去调试,目前我自己公司使用了aws eks 1.4.2版本没有这个问题
都是K8S集群内部访问,测试不是网络不稳定啊
那你说的不稳定,丢失是?
那你说的不稳定,丢失是?
注册上nacos,服务列表里有服务,一会有不在了,或者增加其他服务pod数量,nacos服务列表里又找不到 以上问题都建立在isito开启注入,不开启没问题,但是不开启isito很多功能都无法使用了
这个我没接触过,感觉是你开启新pod后,envoy这里是不是会有个刷新iptables的操作导致的
这个我没接触过,感觉是你开启新pod后,envoy这里是不是会有个刷新iptables的操作导致的
以前用zookeeper,同样开启istio注入功能,没这个问题呢
zookeeper没有使用grpc
嗯是的,我们一直怀疑还是走grpc有关系,nacos 1.4没走grpc
配置中心就不用放到k8s上了吧
第二个就行了,不过你需要访问console还是需要放开8848地址
今天多次测试: 第二种配置nacos所有pod地址方式,可以注册上nacos,但是不稳定,nacos里经常丢失,pod节点扩容也无法发现新节点等 第三种配置用nacos-headless地址,直接注册不上nacos
我的nacos版本是2.0.4,这几天测试的时候也发现了这个问题,看下来还是跟istio代理有关。 用第三种配置nacos-headless.default.svc.cluster.local:8848 参考isito文档修改了headlessService的配置如下:
spec:
clusterIP: None
clusterIPs:
- None
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: server
port: 8848
protocol: TCP
targetPort: 8848
- name: client-rpc
port: 9848
protocol: TCP
targetPort: 9848
**- appProtocol: grpc**
name: raft-rpc
port: 9849
protocol: TCP
targetPort: 9849
**- appProtocol: grpc**
name: old-raft-rpc
port: 7848
protocol: TCP
targetPort: 7848
alibaba/nacos#10141 启用了istio的集群中需要将9848设置为TCP协议
k8s内部pod连接nacos集群地址是这样? "nacos-0.nacos-headless.default.svc.cluster.local:8848 nacos-1.nacos-headless.default.svc.cluster.local:8848 nacos-2.nacos-headless.default.svc.cluster.local:8848" 还是用svc的nodeport地址呢?
我开启了istio的注入后,发现后台pod无法注册上nacos,目前连接nacos使用的是svc的nodeport