.Net API 的 Kubernetes 部署和服务无法访问

问题描述

我正在尝试在使用 Kubernetes 评估的 Linode 集群上部署 .NET Core API 控制器。我能够生成部署和服务,但我无法使在 Linode 集群上创建的端点工作。我在 Visual Studio 2019 中创建了映像,然后将此映像推送到我的帐户下的 DockerHub。 VS 中的 docker 文件如下所示。我暴露了 80 端口。注意这个文件是由 VS 2019 生成的。

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

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["DataAPI/DataAPI.csproj","DataAPI/"]
COPY ["Data/Data.csproj","Data/"]
COPY ["Utilities/Utilities.csproj","Utilities/"]
COPY ["UnitConversion/UnitConversion.csproj","UnitConversion/"]
COPY ["CRSProjections/CRSProjections.csproj","CRSProjections/"]
COPY ["DataUtils/DataUtils.csproj","DataUtils/"]
COPY ["Database/Database.csproj","Database/"]
COPY ["DataLoaders/DataLoaders.csproj","DataLoaders/"]
RUN dotnet restore "DataAPI/DataAPI.csproj"
COPY . .
WORKDIR "/src/DataAPI"
RUN dotnet build "DataAPI.csproj" -c Release -o /app/build

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet","DataAPI.dll"]

然后我将此映像推送到我的 DockerHub。

然后我用这个命令应用我的 kubernetes 配置文件('gems-dataapi.yaml'):

kubectl apply -f gems-dataapi.yaml

以下是创建部署和服务的文件内容:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dataapi-server
  labels:
    app: dataapi-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dataapi-server
  template:
    metadata:
      labels:
        app: dataapi-server
    spec:
      containers:
      - name: dataapi-server
        # This is not the real one
        image: my-dataapi-server-image:latest
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: dataapi-server
spec:
  selector:
    service: dataapi-server
  type: LoadBalancer
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 80

然后我应用以下命令:

kubectl get service

给出(注意我插入星号来混淆):

NAME                    TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
dataapi-server          LoadBalancer   10.128.177.69    45.**.**.***    80:32098/TCP   149m
kubernetes              ClusterIP      10.***.***.**    <none>          443/TCP        27h

然后在邮递员中,我在上面的“EXTERNAL-IP”地址上应用 GET:

GET http://45.**.**.***:32098/api/values

应该返回“dataapi server is up and running”。但相反,我得到了:

Error: connect ETIMEDOUT 45.**.**.***:32098
Content-Type: application/json
User-Agent: PostmanRuntime/7.26.8
Accept: */*
Cache-Control: no-cache
Postman-Token: b87e2ddb-0e13-4599-a4b1-6c90ac56fd56
Host: 45.**.**.***:32098
Accept-Encoding: gzip,deflate,br

我是 kubernetes 的新手。知道我做错了什么吗?我不得不承认,在这一切中,我仍在为所有端口技术而苦苦挣扎。我可以让它对我的前端图像正常工作,所以我很困惑。

谢谢!!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)