如何在 Kubernetes 内部的 Ignite 集群中确认已启用的模块?

问题描述 投票:0回答:0

我已经使用 ignite-geospatial 模块设置了一个 Ignite Cluster,但是它遇到了 H2SpatialIndex 的 ClassNotFound 异常,我知道这是由于缺少 ignite-geospatial 模块造成的。我是 Kubernetes 的新手,可能配置有误,但我不确定如何检查我的 Ignite 节点是否可以访问此模块。

我可以运行任何快速命令来验证 ignite-geospatial 的类路径吗?

这是我的 Ignite 部署 YAML:

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"ignite-cluster","namespace":"ignite"},"spec":{"replicas":2,"selector":{"matchLabels":{"app":"ignite"}},"template":{"metadata":{"labels":{"app":"ignite"}},"spec":{"containers":[{"env":[{"name":"OPTION_LIBS","value":"ignite-kubernetes,ignite-rest-http"},{"name":"CONFIG_URI","value":"file:///ignite/config/node-configuration.xml"}],"image":"gridgain/community:latest","name":"ignite-node","ports":[{"containerPort":47100},{"containerPort":47500},{"containerPort":49112},{"containerPort":10800},{"containerPort":8080}],"volumeMounts":[{"mountPath":"/ignite/config","name":"config-vol"}]}],"serviceAccountName":"ignite","terminationGracePeriodSeconds":100000,"volumes":[{"configMap":{"name":"ignite-config"},"name":"config-vol"}]}}}}
  creationTimestamp: "2023-03-15T11:42:44Z"
  generation: 1
  name: ignite-cluster
  namespace: ignite
spec:
  progressDeadlineSeconds: 600
  replicas: 2
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: ignite
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: ignite
    spec:
      containers:
      - env:
        - name: OPTION_LIBS
          value: ignite-kubernetes,ignite-rest-http,ignite-geospatial
        - name: CONFIG_URI
          value: file:///ignite/config/node-configuration.xml
        image: gridgain/community:8.8.27
        imagePullPolicy: Always
        name: ignite-node
        ports:
        - containerPort: 47100
          protocol: TCP
        - containerPort: 47500
          protocol: TCP
        - containerPort: 49112
          protocol: TCP
        - containerPort: 10800
          protocol: TCP
        - containerPort: 8080
          protocol: TCP
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /ignite/config
          name: config-vol
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: ignite
      serviceAccountName: ignite
      terminationGracePeriodSeconds: 100000
      volumes:
      - configMap:
          defaultMode: 420
          name: ignite-config
        name: config-vol

我之前的部署 YAML 没有在 OPTION_LIBS 下包含 ignite-geospatial 值,所以我已经更正了它并重新启动了 Ignite Cluster。我可以使用带有 PeerClassEnabled 的胖客户端连接到 Kubernetes 中的 Ignite 集群,但在尝试加载任何 JTS 几何体后我遇到了以下问题。在本地运行所有内容并明确省略 ignite-geospatial 模块时,会发现相同的错误。当将 ignite-geospatial 添加到依赖项时,该错误在本地得到纠正。

[o.a.i.i.processors.cache.ExchangeActions$CacheGroupActionData@413cde3b]]
class org.apache.ignite.IgniteException: Failed to instantiate: org.apache.ignite.internal.processors.query.h2.opt.GridH2SpatialIndex
        at org.apache.ignite.internal.processors.query.h2.H2Utils.createSpatialIndex(H2Utils.java:359)
        at org.apache.ignite.internal.processors.query.h2.H2TableDescriptor.createUserIndex(H2TableDescriptor.java:442)
        at org.apache.ignite.internal.processors.query.h2.H2TableDescriptor.createUserIndexes(H2TableDescriptor.java:392)
        at org.apache.ignite.internal.processors.query.h2.SchemaManager.createTable(SchemaManager.java:554)
        at org.apache.ignite.internal.processors.query.h2.SchemaManager.onCacheTypeCreated(SchemaManager.java:338)
        at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.registerType(IgniteH2Indexing.java:1979)
        at org.apache.ignite.internal.processors.query.GridQueryProcessor.registerCache0(GridQueryProcessor.java:2205)
        at org.apache.ignite.internal.processors.query.GridQueryProcessor.onCacheStart0(GridQueryProcessor.java:1048)
        at org.apache.ignite.internal.processors.query.GridQueryProcessor.onCacheStart(GridQueryProcessor.java:1115)
        at org.apache.ignite.internal.processors.cache.GridCacheProcessor.prepareCacheStart(GridCacheProcessor.java:1968)
        at org.apache.ignite.internal.processors.cache.GridCacheProcessor.lambda$prepareStartCaches$55a0e703$1(GridCacheProcessor.java:1838)
        at org.apache.ignite.internal.processors.cache.GridCacheProcessor.lambda$prepareStartCachesIfPossible$14(GridCacheProcessor.java:1808)
        at org.apache.ignite.internal.processors.cache.GridCacheProcessor.prepareStartCaches(GridCacheProcessor.java:1835)
        at org.apache.ignite.internal.processors.cache.GridCacheProcessor.prepareStartCachesIfPossible(GridCacheProcessor.java:1806)
        at org.apache.ignite.internal.processors.cache.CacheAffinitySharedManager.processCacheStartRequests(CacheAffinitySharedManager.java:1039)
        at org.apache.ignite.internal.processors.cache.CacheAffinitySharedManager.onCacheChangeRequest(CacheAffinitySharedManager.java:925)
        at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.onCacheChangeRequest(GridDhtPartitionsExchangeFuture.java:1479)
        at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.init(GridDhtPartitionsExchangeFuture.java:986)
        at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body0(GridCachePartitionExchangeManager.java:3416)
        at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:3245)
        at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.ClassNotFoundException: org.apache.ignite.internal.processors.query.h2.opt.GridH2SpatialIndex
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:315)
        at org.apache.ignite.internal.processors.query.h2.H2Utils.createSpatialIndex(H2Utils.java:343)
        ... 21 more
kubernetes geospatial ignite gridgain
© www.soinside.com 2019 - 2024. All rights reserved.