kubernetes 的 Apache Ignite C# 客户端连接出错

Error in Apache Ignite C# Client connection for kubernetes

我们按照 中建议的解决方案作为胖客户端连接 kubrenetes 中的 ignite 集群 运行。

我们在启动时收到以下错误消息:

无法启动:System.EntryPointNotFoundException:无法在共享库 'libcoreclr.so' 中找到名为 'dlopen' 的入口点。在 Apache.Ignite.Core.Impl.Unmanaged.Jni.DllLoader.NativeMethodsCore.dlopen(字符串文件名,Int32 标志)在 Apache.Ignite.Core.Impl.Unmanaged.Jni.DllLoader.Load(字符串 dllPath)在 Apache.Ignite.Core.Impl.Unmanaged.Jni.JvmDll.LoadDll(字符串文件路径,字符串简单名称)在 Apache.Ignite.Core.Impl.Unmanaged.Jni.JvmDll.Load(字符串 configJvmDllPath,ILogger 日志)在Apache.Ignite.Core.Ignition.Start(IgniteConfiguration 配置文件)

我们在 docker 图像中包含了 openjdk8。这是 docker 文件。


#FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#WORKDIR /app
#EXPOSE 80
#EXPOSE 443

ARG REPO=mcr.microsoft.com/dotnet/runtime
FROM $REPO:3.1.24-alpine3.15 AS base
# Install ASP.NET Core
RUN aspnetcore_version=3.1.24 \
    && wget -O aspnetcore.tar.gz https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-x64.tar.gz \
    && aspnetcore_sha512='1341b6e0a9903b253a69fdf1a60cd9e6be8a5c7ea3c4a52cd1a8159461f6ba37bef7c2ae0d6df5e1ebd38cd373cf384dc55c6ef876aace75def0ac77427d3bb0' \
    && echo "$aspnetcore_sha512  aspnetcore.tar.gz" | sha512sum -c - \
    && tar -oxzf aspnetcore.tar.gz -C /usr/share/dotnet ./shared/Microsoft.AspNetCore.App \
    && rm aspnetcore.tar.gz

RUN apk add openjdk8
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk
ENV PATH="$JAVA_HOME/bin:${PATH}"

WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
...
RUN dotnet restore "API.csproj"
COPY . .
WORKDIR "API"
RUN dotnet build "API.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "API.csproj" -c Release -o /app/publish

FROM base AS final


WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "API.dll"]````

Alpine Linux 上的 Ignite 问题已在昨天发布的 2.13 中修复 - 请尝试升级。

https://issues.apache.org/jira/browse/IGNITE-16749 https://www.nuget.org/packages/Apache.Ignite/2.13.0


此外,设置LD_LIBRARY_PATH环境变量:

  • openjdk8: ENV LD_LIBRARY_PATH /usr/lib/jvm/default-jvm/jre/lib/amd64/server
  • openjdk11: ENV LD_LIBRARY_PATH /usr/lib/jvm/default-jvm/jre/lib/server

不要设置 JAVA_HOMEPATH - 没有必要。

除了 Pavel 的回应之外,您可以利用 GridGain 版本中提供的基础图像,而不是构建您自己的 docker 图像:https://hub.docker.com/r/gridgain/community-dotnet

GridGain 社区版基于 Apache Ignite 构建,同样免费且开源。您可以查看官方文档以获取更多详细信息。