Docker映像只在我的机器上工作,但在AKS上不工作

Docker映像只在我的机器上工作,但在AKS上不工作,docker,kubernetes,azure-aks,kubernetes-cronjob,Docker,Kubernetes,Azure Aks,Kubernetes Cronjob,我是库伯内特斯的新手 因此,我构建了一个.NET核心控制台应用程序Docker映像: FROM mcr.microsoft.com/dotnet/core/runtime:3.0-buster-slim AS base WORKDIR /app FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src COPY ["DataSync.Entry/DataSync.Entry.csproj", "DataSyn

我是库伯内特斯的新手

因此,我构建了一个.NET核心控制台应用程序Docker映像:

FROM mcr.microsoft.com/dotnet/core/runtime:3.0-buster-slim AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
WORKDIR /src
COPY ["DataSync.Entry/DataSync.Entry.csproj", "DataSync.Entry/"]
RUN dotnet restore "DataSync.Entry/DataSync.Entry.csproj"
COPY . .
WORKDIR "/src/DataSync.Entry"
RUN dotnet build "DataSync.Entry.csproj" -c Release -o /app/build

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "DataSync.Entry.dll"]
这个图像在我的机器上运行得很好。然而,当我尝试在Kubernetes中将其部署为CronJob时,它失败了

以下是YAML:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: netcore-cronjob
  namespace: aim-ns
  labels:
    app: netcore-cronjob
spec:
  schedule: "*/2 * * * *"
  jobTemplate:
    spec: #JOB
      backoffLimit: 1
      template: 
        spec: #POD
          containers:
            - name: netcore-job
              image: <ACR>.azurecr.io/aim/test-data-sync-netcore:v1 #my docker image above pushed to ACR
              command: ["dotnet", "DataSync.Entry.dll"]
              args: []
              resources:
                requests:
                  memory: "64Mi"
                  cpu: "100m"
                limits:
                  memory: "128Mi"
                  cpu: "150m"
          restartPolicy: Never
当我运行
kubectl日志-n aim ns netcore-cronjob-1582854120-scwfb
时,我得到:

  It was not possible to find any installed .NET Core SDKs
  Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
      https://aka.ms/dotnet-download

我错过了什么

我也遇到了同样的问题,我需要更改“从mcr.microsoft.com/dotnet/core/runtime:3.0-buster-slim作为基础” (用于运行应用程序)更改为“从mcr.microsoft.com/dotnet/core/sdk:3.0-buster作为基础”。我认为运行时间必须足够,但是

再见
Markus

您认为在AWS上运行的映像似乎不是您在本地运行的映像。您是否能够
docker运行.azurecr.io/aim/test data sync netcore:v1--dotnet DataSync.Entry.dll
?这应该证明,Kubernetes在AWS上运行的是您在本地运行的。Docker的一个问题是,
v1
不是唯一的。您主机用作
v1
的内容不一定是其他主机(即远程Kubernetes节点)认为的
v1
@DazWilkin感谢您的建议。我尝试运行该命令,得到了一个
C:\Program Files\Docker\Docker\resources\bin\Docker.exe:守护程序的错误响应:OCI运行时创建失败:容器\u linux。go:346:启动容器进程导致“exec:\”--\“:在$PATH中找不到可执行文件”:未知。
错误。也许我们在这里发现了一些问题。我更希望看到Kubernetes报告的相同错误(
不可能找到任何已安装的.NET Core SDK
)。现在我们有了第三个问题:-(对容器执行强制docker pull并执行
ls
,我认为您在错误的路径上运行
docker pull.azurecr.io/aim/test data sync netcore:v1
docker run--entrypoint/bin/bash.azurecr.io/aim/test data sync netcore:v1
  It was not possible to find any installed .NET Core SDKs
  Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
      https://aka.ms/dotnet-download