将 C# 部署到 Kubernetes:初学者基础指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么 C# 和 Kubernetes 是强大的组合



现代开发越来越要求不仅编写代码,还要正确地将其打包并在云环境中运行。Kubernetes(或 K8s)已成为容器编排的事实标准,而 C# (.NET) 是创建高负载 Web 应用程序和微服务最流行的语言之一。



在本指南中,我们将走完从现成的 C# 应用程序到将其完全部署到 Kubernetes 集群的整个过程。您将学习如何创建 Docker 镜像、编写部署和服务清单,然后使用 kubectl 运行所有内容。没有魔法——只有实践。



步骤 1:准备 .NET 应用程序并进行容器化



1.1 创建简单的 C# Web API



为了演示,我们将创建一个最小的 ASP.NET Core Web API。打开终端并执行:



dotnet new webapi -n MyK8sAppcd MyK8sApp


默认情况下,项目已经包含 WeatherForecastController 控制器。让我们确保应用程序可以在本地运行:



dotnet run


导航到 http://localhost:5000/weatherforecast — 您应该会看到 JSON 响应。现在我们的应用程序已准备好进行打包。



1.2 创建 Dockerfile



没有容器化就无法部署到 Kubernetes。在项目根目录中创建一个 Dockerfile 文件:



# 使用官方镜像进行构建FROM mcr.microsoft.com/dotnet/sdk:8.0 AS buildWORKDIR /app

# 复制项目文件并还原依赖项COPY *.csproj .RUN dotnet restore

# 复制其余文件并构建应用程序COPY . .RUN dotnet publish -c Release -o out

# 最终镜像——仅运行时FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtimeWORKDIR /appCOPY --from=build /app/out .ENTRYPOINT ["dotnet", "MyK8sApp.dll"]


请注意:我们使用多阶段构建——这可以减少最终镜像大小并提高安全性。



1.3 构建并检查 Docker 镜像



构建镜像并在本地运行:



docker build -t myk8sapp:latest .docker run -d -p 8080:80 --name myapp myk8sapp:latest


检查是否正常工作:http://localhost:8080/weatherforecast。如果一切正常,那就太好了。停止容器:



docker stop myapp && docker rm myapp


步骤 2:Kubernetes 基础知识——部署需要了解的内容



在编写清单之前,让我们了解 Kubernetes 的关键概念:



  • Pod — 最小的部署单元。包含一个或多个容器。
  • Deployment — 管理 Pod 的状态:扩展、更新、故障恢复。
  • Service — 提供对 Pod 的网络访问的抽象。通常使用 ClusterIP(内部)或 LoadBalancer(外部)类型。
  • ConfigMap / Secret — 用于存储配置和敏感数据。


我们将使用 minikube 进行本地测试。请按照官方说明进行安装。



启动集群:



minikube start


步骤 3:为 C# 应用程序创建 Kubernetes 清单



3.1 Deployment 清单



创建 deployment.yaml 文件:



apiVersion: apps/v1kind: Deploymentmetadata:  name: myk8sapp-deploymentspec:  replicas: 3  selector:    matchLabels:      app: myk8sapp  template:    metadata:      labels:        app: myk8sapp    spec:      containers:      - name: myk8sapp        image: myk8sapp:latest        imagePullPol                

博客

书籍推荐