JcaPEMKeyConverter предоставляется BouncyCastle, дополнительной зависимостью. Чтобы использовать поддержку ключей EC, выJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JcaPEMKeyConverter предоставляется BouncyCastle, дополнительной зависимостью. Чтобы использовать поддержку ключей EC, вы

Сообщение Anonymous »

У меня есть простое приложение для потоковой передачи Flink. Он хорошо работает в кластере, созданном командой start-cluster.sh.
Теперь, основываясь на руководстве Flink, я надеюсь развернуть его в режиме приложения изначально в кластере Kubernetes. создано k3d на macOS.
Сначала я создал кластер с помощью k3d Cluster create dev.
Вот мой Dockerfile:

Код: Выделить всё

FROM flink
RUN mkdir -p $FLINK_HOME/usrlib
COPY target/streaming-0.1.jar $FLINK_HOME/usrlib/streaming-0.1.jar
Я собрал и отправил его в Docker Hub.
Имя моего кластера — k3d-dev, поэтому я запустил

Код: Выделить всё

flink run-application \
--target kubernetes-application \
-Dkubernetes.cluster-id=k3d-dev \
-Dkubernetes.container.image=hongbomiao/my-flink-xxx:latest \
local:///opt/flink/usrlib/streaming-0.1.jar

Однако у меня возникла ошибка:

Код: Выделить всё

 The program finished with the following exception:

io.fabric8.kubernetes.client.KubernetesClientException: JcaPEMKeyConverter is provided by BouncyCastle, an optional dependency. To use support for EC Keys you must explicitly add this dependency to classpath.
at io.fabric8.kubernetes.client.internal.CertUtils.handleECKey(CertUtils.java:161)
at io.fabric8.kubernetes.client.internal.CertUtils.loadKey(CertUtils.java:131)
at io.fabric8.kubernetes.client.internal.CertUtils.createKeyStore(CertUtils.java:111)
at io.fabric8.kubernetes.client.internal.CertUtils.createKeyStore(CertUtils.java:243)
at io.fabric8.kubernetes.client.internal.SSLUtils.keyManagers(SSLUtils.java:128)
at io.fabric8.kubernetes.client.internal.SSLUtils.keyManagers(SSLUtils.java:122)
at io.fabric8.kubernetes.client.utils.HttpClientUtils.createHttpClient(HttpClientUtils.java:82)
at io.fabric8.kubernetes.client.utils.HttpClientUtils.createHttpClient(HttpClientUtils.java:62)
at io.fabric8.kubernetes.client.BaseClient.(BaseClient.java:51)
at io.fabric8.kubernetes.client.DefaultKubernetesClient.(DefaultKubernetesClient.java:105)
at org.apache.flink.kubernetes.kubeclient.FlinkKubeClientFactory.fromConfiguration(FlinkKubeClientFactory.java:102)
at org.apache.flink.kubernetes.KubernetesClusterClientFactory.createClusterDescriptor(KubernetesClusterClientFactory.java:61)
at org.apache.flink.kubernetes.KubernetesClusterClientFactory.createClusterDescriptor(KubernetesClusterClientFactory.java:39)
at org.apache.flink.client.deployment.application.cli.ApplicationClusterDeployer.run(ApplicationClusterDeployer.java:63)
at org.apache.flink.client.cli.CliFrontend.runApplication(CliFrontend.java:213)
at org.apache.flink.client.cli.CliFrontend.parseAndRun(CliFrontend.java:1057)
at org.apache.flink.client.cli.CliFrontend.lambda$main$10(CliFrontend.java:1132)
at org.apache.flink.runtime.security.contexts.NoOpSecurityContext.runSecured(NoOpSecurityContext.java:28)
at org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1132)
После прочтения Я добавил

Код: Выделить всё

org.bouncycastle
bcpkix-jdk15on
1.69


org.bouncycastle
bcprov-jdk15on
1.69


org.bouncycastle
bcprov-ext-jdk15on
1.69

в мой файл pom.xml. Я снова собрал и отправил Docker Hub.
Когда я запустил приведенную выше команду Flink, я все равно получил ту же ошибку. Есть идеи? Спасибо!

ОБНОВЛЕНИЕ 1:
Кроме вышеуказанного pom.xml изменение, я вручную загрузил эти 3 jar-файла и изменил свой Dockerfile на

Код: Выделить всё

FROM flink
COPY lib/* $FLINK_HOME/lib
RUN mkdir -p $FLINK_HOME/usrlib
COPY target/streaming-0.1.jar $FLINK_HOME/usrlib/streaming-0.1.jar
и попробовал еще раз, но ошибка все та же.
Я могу подтвердить 3 файла jar bcpkix-jdk15on-1.69.jar, bcprov-ext-jdk15on-1.69.jar, bcprov-jdk15on-1.69.jar находятся в образе докера:

Код: Выделить всё

➜ docker run -it 6c48af48db55c334003a307d1ef7a5fc5181f389613284b66b5cb97588b9708d sh

$ cd lib && ls
bcpkix-jdk15on-1.69.jar      flink-dist_2.12-1.13.2.jar     flink-table_2.12-1.13.2.jar  log4j-slf4j-impl-2.12.1.jar
bcprov-ext-jdk15on-1.69.jar  flink-json-1.13.2.jar      log4j-1.2-api-2.12.1.jar
bcprov-jdk15on-1.69.jar      flink-shaded-zookeeper-3.4.14.jar  log4j-api-2.12.1.jar
flink-csv-1.13.2.jar         flink-table-blink_2.12-1.13.2.jar  log4j-core-2.12.1.jar
$ cd ../usrlib && ls
streaming-0.1.jar
ОБНОВЛЕНИЕ 2:
Я пытался запустить режим сеанса

Код: Выделить всё

/usr/local/Cellar/apache-flink/1.13.1/libexec/bin/kubernetes-session.sh
но все равно возникла та же ошибка. Итак, теперь я могу подтвердить, что когда я раньше использовал режим приложения, проблема не связана с моим образом Docker.
У меня эти jar-файлы расположены в ~/.m2 на моем машина:
Изображение

Пропустил ли я еще какие-нибудь банки?
Кроме того, я обнаружил, что ошибка возникает только в кластере, созданном k3d/k3s, но не в minikube.

Подробнее здесь: https://stackoverflow.com/questions/687 ... y-to-use-s
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»