纯IPv6环境下使用Ignite TcpDiscoveryKubernetesIpFinder的问题咨询
纯IPv6环境下TcpDiscoveryKubernetesIpFinder已知问题说明
org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder在纯IPv6环境下确实存在几个已被社区记录的适配问题,也是官方文档中提及的集群断连问题的常见诱因:
- 版本适配缺陷:Ignite 2.14及更早版本的IP Finder实现内置了IPv4地址校验逻辑,会直接过滤K8s API返回的IPv6类型Pod IP,导致节点无法发现集群其他成员,触发节点离线、集群分裂。
- 协议栈优先配置异常:默认配置下IP Finder优先取K8s API返回地址的IPv4字段,纯IPv6环境下会拿到空地址,直接导致节点发现流程失败。
- K8s API连接异常:部分旧版本IP Finder依赖的内置HTTP客户端默认仅解析IPv4地址,如果K8s APIServer使用IPv6地址对外提供服务,会出现IP Finder初始化失败、无法拉取集群节点列表的问题。
修复方案
2.15及之后的Ignite版本已经完成了纯IPv6环境的适配,使用时仅需要额外添加两处配置即可:
- JVM启动参数添加
-Djava.net.preferIPv6Addresses=true,强制Java进程优先使用IPv6协议栈 - IP Finder配置中显式开启IPv6优先:调用
setPreferIPv6Addresses(true)方法,让IP Finder优先处理K8s API返回的IPv6地址
如果使用StatefulSet方式部署Ignite集群,还需要确认headless服务的ipFamilyPolicy配置为SingleStack(纯IPv6场景),保证K8s内部域名解析返回IPv6地址。
内容的提问来源于stack exchange,提问作者RichardFeynman
相关产品推荐
相关产品推荐

