java - 无法让我的 .jar 启动 Ignite 在 GKE 上工作
问题描述
我已经正确设置了我的 RBAC 和我的服务,如 Ignite doc 中所述,并带有此处描述的修复>>无法检索 Ignite pod IP 地址 我设法运行 docker 映像“apacheignite/ignite”,之后没有问题。
但是,当我无法运行此代码时:
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setExecutorConfiguration(new ExecutorConfiguration("myPool").setSize(1));
DataStorageConfiguration dsCfg = new DataStorageConfiguration();
DataRegionConfiguration dataRegionConfigurations = new DataRegionConfiguration();
dataRegionConfigurations.setPersistenceEnabled(true);
dsCfg.getDefaultDataRegionConfiguration();
dsCfg.setDefaultDataRegionConfiguration(dataRegionConfigurations);
cfg.setDataStorageConfiguration(dsCfg);
TcpDiscoverySpi tcpDS = new TcpDiscoverySpi();
TcpDiscoveryKubernetesIpFinder ipFinder = new TcpDiscoveryKubernetesIpFinder();
ipFinder.setNamespace("ignite");
tcpDS = tcpDS.setIpFinder(ipFinder);
cfg.setDiscoverySpi(tcpDS);
Ignite ignite = Ignition.start(cfg);
我收到以下错误:class org.apache.ignite.spi.IgniteSpiException: Failed to retrieve Ignite pods IP addresses.
这似乎是由以下异常引起的:java.io.FileNotFoundException: https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/default/endpoints/ignite-worker
我的泊坞窗文件如下:
# Use an official Python runtime as a parent image
FROM openjdk:8
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
EXPOSE 47100
EXPOSE 47500
EXPOSE 49112
EXPOSE 10900
EXPOSE 10800
EXPOSE 11211
# Run app.py when the container launches
CMD ["java", "-Xms3g", "-Xmx3g", "-jar", "ignite-app.jar"]
我的部署的 yaml 文件如下所示:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
# Custom Ignite cluster's name.
name: ignite-cluster
spec:
# A number of Ignite pods to be started by Kubernetes initially.
replicas: 1
template:
metadata:
labels:
app: ignite
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- ignite
topologyKey: kubernetes.io/hostname
serviceAccount: ignite
containers:
# Custom Ignite pod name.
- name: ignite-node
image: gcr.io/my-project/my-image:v1
env:
- name: OPTION_LIBS
value: ignite-kubernetes
- name: CONFIG_URI
value: https://raw.githubusercontent.com/apache/ignite/master/modules/kubernetes/config/example-kube-persistence.xml
ports:
# Ports to open.
# Might be optional depending on your Kubernetes environment.
- containerPort: 11211 # REST port number.
- containerPort: 47100 # communication SPI port number.
- containerPort: 47500 # discovery SPI port number.
- containerPort: 49112 # JMX port number.
- containerPort: 10800 # SQL port number.
- containerPort: 10900 # Thin clients port number.
我无法理解如何解决我的"java.io.FileNotFoundException: https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/default/endpoints/ignite-worker"
异常。
堆栈如下:
org.apache.ignite.spi.IgniteSpiException: Failed to retrieve Ignite pods IP addresses.
at org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder.getRegisteredAddresses(TcpDiscoveryKubernetesIpFinder.java:172)
at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.registeredAddresses(TcpDiscoverySpi.java:1828)
at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.resolvedAddresses(TcpDiscoverySpi.java:1776)
at org.apache.ignite.spi.discovery.tcp.ServerImpl.sendJoinRequestMessage(ServerImpl.java:1029)
at org.apache.ignite.spi.discovery.tcp.ServerImpl.joinTopology(ServerImpl.java:890)
at org.apache.ignite.spi.discovery.tcp.ServerImpl.spiStart(ServerImpl.java:373)
at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.spiStart(TcpDiscoverySpi.java:1948)
at org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:297)
at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.start(GridDiscoveryManager.java:915)
at org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1721)
at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:1028)
at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:2014)
at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1723)
at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1151)
at org.apache.ignite.internal.IgnitionEx.startConfigurations(IgnitionEx.java:1069)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:955)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:854)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:724)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:693)
at org.apache.ignite.Ignition.start(Ignition.java:352)
at Initiator.main(Initiator.java:17)
Caused by: java.io.FileNotFoundException: https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/default/endpoints/ignite-worker
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1890)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
at org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder.getRegisteredAddresses(TcpDiscoveryKubernetesIpFinder.java:153)
请问有人知道发生了什么吗?
解决方案
查看堆栈跟踪中的 URL,我可以看出 IP 查找器使用default
名称空间和ignite-worker
服务名称。但是,这与您提供的配置不对应。您应该检查实际使用的配置以及ignite-worker
服务名称的来源。在 IP finder 上正确设置所有正确设置后,它应该可以正常工作。
推荐阅读
- python - 如何将频谱图图像与其人工标记的数据结合起来,在 Python 中使用 CNN 进行处理?
- ios - 一个字符串具有多种段落样式
- javascript - 是否有任何在时间更改时执行的 PrimeNg p-calendar 事件?
- javascript - 跨多个 Ajax POST 调用在成功函数中存储和更新全局值
- c# - 如何使用 c# API 授权 Azure Devops?
- hadoop - 如何在直线开始时删除 ADD jar 语句
- android - 如何更改 android compose TextFeild 的内容填充?
- java - 在 AsyncTask 中更新后自动/立即更新进度条
- postgresql - 来自 pg_range 和 pg_type 的查询不断占用我服务器的资源 - postgresql
- node.js - 将 cURL 命令转换为 JavaScript