.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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...