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

在EKS部署Apache Ignite 2.15.0时遭遇SSL握手失败异常求助

问题解决:EKS部署Apache Ignite 2.15.0出现SSL握手失败异常

问题分析

异常核心是javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure——你虽然未给Ignite集群启用SSL,但Ignite的Kubernetes IP Finder组件需要调用EKS API Server获取Pod地址,而EKS API默认使用HTTPS通信,这一过程的SSL握手失败导致了发现组件无法正常工作。

解决方案

1. 确保服务账号权限与CA证书挂载

EKS中Pod默认通过服务账号访问API Server,需满足两个前提:

  • 为Ignite Pod绑定的服务账号拥有list、watch Pod资源的权限
  • Pod内/var/run/secrets/kubernetes.io/serviceaccount/ca.crt文件存在且可读取(这是EKS自动挂载的CA证书,用于验证API Server的SSL证书)

如果未配置专用服务账号,可创建以下资源:

# 服务账号
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ignite-sa
  namespace: your-namespace

# 自定义角色
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ignite-pod-reader
  namespace: your-namespace
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list", "watch"]

# 角色绑定
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ignite-sa-binding
  namespace: your-namespace
subjects:
- kind: ServiceAccount
  name: ignite-sa
  namespace: your-namespace
roleRef:
  kind: Role
  name: ignite-pod-reader
  apiGroup: rbac.authorization.k8s.io

然后在Ignite Deployment中指定该服务账号:

spec:
  template:
    spec:
      serviceAccountName: ignite-sa

2. 显式指定CA证书路径

若Ignite未自动识别默认CA证书路径,可在配置中强制指定:

XML配置方式

<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
    <property name="ipFinder">
        <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder">
            <property name="namespace" value="your-namespace"/>
            <property name="caCertPath" value="/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"/>
        </bean>
    </property>
</bean>

环境变量配置方式

env:
- name: IGNITE_TCP_DISCOVERY_KUBERNETES_CA_CERT_PATH
  value: "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"

3. 验证API Server连通性

在Ignite Pod内执行以下命令,测试SSL握手是否正常:

curl -v https://kubernetes.default.svc.cluster.local/api/v1/namespaces/your-namespace/pods --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt

如果能正常返回Pod列表,说明SSL基础配置没问题,需检查Ignite的发现组件配置;如果仍握手失败,排查EKS API Server证书有效性或Pod网络策略是否允许访问API Server。

4. 自定义JVM信任库(可选)

若EKS CA证书不在Ignite使用的JVM默认信任库中,可在构建自定义镜像时导入证书:

keytool -importcert -file /var/run/secrets/kubernetes.io/serviceaccount/ca.crt -alias eks-ca -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt

或启动Ignite时指定自定义信任库参数:

ignite.sh -J-Djavax.net.ssl.trustStore=/path/to/custom-truststore.jks -J-Djavax.net.ssl.trustStorePassword=your-password

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:40:59