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