微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决.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 举报,一经查实,本站将立刻删除。