Net Core 微服务 - 如何将.Net Core Web Api服务部署到Kubernetes (K8s)中 转载
原文网址: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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2022-01-07 WPF 自定义ComboBox样式,自定义多选控件
2021-01-07 uwp 基础知识