首页 > 其他分享 >Net Core 微服务 - 如何将.Net Core Web Api服务部署到Kubernetes (K8s)中 转载

Net Core 微服务 - 如何将.Net Core Web Api服务部署到Kubernetes (K8s)中 转载

时间:2023-01-07 21:55:06浏览次数:67  
标签:Core YourUserName Web app dotnet Net k8s Docker apidemo

原文网址:https://blog.51cto.com/u_15127693/4356672

1.新建一个WebApi项目

 

默认的web api项目包含一个默认的api:/weatherforecast

 

 2. 新建一个Dockerfile文件

  #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["CoreApi.csproj", "."]
RUN dotnet restore "./CoreApi.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "CoreApi.csproj" -c Release -o /app/build

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "CoreApi.dll"]
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
3. 通过Dockerfile生成Docker镜像文件

在Dockerfile所在目录打开命令行工具运行如下命令(注意YourUserName是你在Docker官网注册的账户名):

docker build -t YourUserName/coreapi1 .
1.
4. 将刚生成的Docker镜像推送到Docker仓库中

你需要去Docker官网注册一个账户,注册完成后进行登录:docker login --username  YourUserName

YourUserName是你注册的用户名,接着会让你输入密码,验证成功后会提示Login Succeeded

将镜像推送到仓库这个步骤是不能省略的,因为编写K8s部署文件的时候,需要从仓库拉取镜像,因为服务器在国外,所以会有点慢。

还有一个问题就是你的镜像名字需要用你的Docker用户名开头,比如YourUserName/coreapi1,YourUserName是你Docker的用户名,不然上传会提示没有权限。

 

5. 编写k8s的部署文件 k8s-deploy.yaml

kind: Deployment
apiVersion: apps/v1
metadata:
labels:
k8s-app: k8s-apidemo
name: k8s-apidemo
namespace: coreapi
spec:
replicas: 2
selector:
matchLabels:
k8s-app: k8s-apidemo
template:
metadata:
labels:
k8s-app: k8s-apidemo
spec:
containers:
- name: k8s-apidemo
image: YourUserName/coreapi1
ports:
- containerPort: 80

---

kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: k8s-apidemo
name: k8s-apidemo
namespace: coreapi
spec:
type: NodePort
ports:
- nodePort: 31001
port: 80
targetPort: 80
selector:
k8s-app: k8s-apidemo
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
需要说明两个问题,标红的image就是我们推送到仓库的镜像,namespace是资源空间名称,也就是我们当前这个pod要运行的资源空间,所以我们需要创建一下这个资源空间:

kubectl create namespace coreapi


创建完成后可以通过以下命令进行查看:kubectl get namespace coreapi


6. 运行我们的部署文件 k8s-deploy.yaml

kubectl create -f k8s-deploy.yaml
1.
如果我们没有创建资源空间coreapi,运行以上命令就会看到如下错误:


正常情况下会有两个提示,分别是deployment.apps/k8s-apidemo created 和 service/k8s-apidemo created


完成之后我们可以通过以下命令查看:kubectl get svc -n coreapi -o wide

 

 结果显示我的这个pod运行在31001端口,此时我们可以通过浏览器测试:

 

 

 OK. 部署成功了!!!

 
-----------------------------------
Net Core 微服务 - 如何将.Net Core Web Api服务部署到Kubernetes (K8s)中
https://blog.51cto.com/u_15127693/4356672

标签:Core,YourUserName,Web,app,dotnet,Net,k8s,Docker,apidemo
From: https://www.cnblogs.com/bruce1992/p/17033633.html

相关文章