在 Kubernetes 中部署 .NET 微服务需要将应用容器化,然后通过配置清单部署到集群。整个过程包括编写 Dockerfile、构建镜像、推送到镜像仓库,最后使用 YAML 配置文件部署服务。
准备 .NET 应用并容器化
确保你的 .NET 微服务项目可以正常运行,并添加一个 Dockerfile 来定义容器镜像。
示例 Dockerfile(适用于 .NET 8):FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base WORKDIR /app EXPOSE 80 <p>FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY . . RUN dotnet restore RUN dotnet publish -c Release -o /app/publish</p><p>FROM base AS final WORKDIR /app COPY --from=build /app/publish . ENTRYPOINT ["dotnet", "YourMicroservice.dll"]
执行以下命令构建镜像:
docker build -t your-registry/microservice:v1 .
推送镜像到容器仓库
Kubernetes 需要从镜像仓库拉取镜像。你可以使用 Docker Hub、Azure Container Registry 或其他私有仓库。
登录并推送镜像:
docker login docker push your-registry/microservice:v1
编写 Kubernetes 部署和服务配置
创建 deployment.yaml 文件来定义微服务的部署和暴露方式。
示例 deployment.yaml:apiVersion: apps/v1
kind: Deployment
metadata:
name: microservice-deployment
spec:
replicas: 2
selector:
matchLabels:
app: microservice
template:
metadata:
labels:
app: microservice
spec:
containers:
- name: microservice
image: your-registry/microservice:v1
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: microservice-service
spec:
type: LoadBalancer
selector:
app: microservice
ports:
- protocol: TCP
port: 80
targetPort: 80这个配置会启动两个副本,并通过负载均衡器对外暴露服务。
应用配置到 Kubernetes 集群
使用 kubectl 将配置应用到集群:
kubectl apply -f deployment.yaml
查看部署状态:
kubectl get pods kubectl get services
如果一切正常,你应该能看到运行中的 Pod 和分配的外部 IP(如果是 LoadBalancer 类型)。
基本上就这些。只要镜像能正确构建并推送到可访问的仓库,Kubernetes 就能拉取并运行你的 .NET 微服务。后续可以结合 Helm、Ingress 或配置健康检查进一步优化部署。不复杂但容易忽略细节,比如镜像标签、网络端口或权限设置。
