You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Ignite服务端模式Kubernetes部署节点不通配置问题排查

Ignite Kubernetes集群发现失败问题解决方案

核心代码错误

你在Kubernetes发现逻辑中创建的KubernetesConnectionConfiguration配置未绑定到IP Finder实例,是导致报错的直接原因:
你在kubernetesDiscovery方法中实例化了KubernetesConnectionConfiguration,设置了命名空间和服务名state-manager,但完全没有将这个配置对象注入到TcpDiscoveryKubernetesIpFinder中,导致IP Finder使用默认配置(默认服务名为ignite)去查询Kubernetes API,所以报错中显示访问的是endpoints/ignite,和你实际的服务名不符,自然返回404找不到资源。

修正后的kubernetesDiscovery方法代码:

private TcpDiscoverySpi kubernetesDiscovery(IgniteProps igniteProps) {
    log.info("++ creating k8s based discovery, {}", igniteProps);
    TcpDiscoverySpi spi = new TcpDiscoverySpi();
    TcpDiscoveryKubernetesIpFinder k8sIpFinder = new TcpDiscoveryKubernetesIpFinder();
    KubernetesConnectionConfiguration kubernetesConnectionConfiguration = new KubernetesConnectionConfiguration();
    kubernetesConnectionConfiguration.setNamespace("default");
    kubernetesConnectionConfiguration.setServiceName("state-manager");
    // 缺失的绑定逻辑
    k8sIpFinder.setConnectionConfiguration(kubernetesConnectionConfiguration);
    spi.setIpFinder(k8sIpFinder);
    log.info("++ creating k8s based discovery, {}", spi);
    return spi;
}

配套Kubernetes配置要求

除代码修正外,K8s侧还需要满足两个必要条件:

  • 必须部署Headless类型的Service绑定Ignite Pod:普通Service不会暴露Pod IP到Endpoints列表,需要设置spec.clusterIP: None,且服务名要和代码里配置的state-manager完全一致
  • 必须配置RBAC权限:Ignite需要调用Kubernetes API查询Endpoints资源,所以需要给Pod使用的ServiceAccount绑定对应权限,参考配置如下:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: ignite-endpoint-reader
rules:
- apiGroups: [""]
  resources: ["endpoints"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ignite-read-endpoints
  namespace: default
subjects:
- kind: ServiceAccount
  name: 你的Pod使用的ServiceAccount名
roleRef:
  kind: Role
  name: ignite-endpoint-reader
  apiGroup: rbac.authorization.k8s.io

其他配置问题

你代码里注册了两次EVT_NODE_JOINED事件监听器,第二个监听节点离开的逻辑应该监听EventType.EVT_NODE_LEFT事件,否则不会触发节点离开后的对应逻辑。

内容的提问来源于stack exchange,提问作者vvra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:15:07