将 Rust 部署到 Kubernetes:面向初学者的基础指南

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

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

开始课程

将 Rust 部署到 Kubernetes:面向初学者的基础指南



现代开发越来越不仅要求编写快速且安全的代码,还要求能够正确地将代码部署到云基础设施中。Rust 以其高性能和内存安全性著称,成为微服务的绝佳选择。而 Kubernetes——标准的容器编排器——则帮助大规模管理这些服务。



在本文中,我们将走完从编写一个简单的 Rust Web 服务器到将其部署到 Kubernetes 集群的完整流程。您将学习如何将应用程序打包成 Docker 镜像、创建必要的清单文件并在云端运行它。



1. 准备用于容器化的 Rust 应用程序



首先,我们使用流行的框架 actix-web 创建一个简单的 Rust Web 应用程序。它将返回一个简单的 JSON 消息——这是微服务的理想示例。



创建一个新项目:

cargo new rust-k8s-democd rust-k8s-demo


在 Cargo.toml 中添加依赖:

[dependencies]actix-web = "4"serde = { version = "1.0", features = ["derive"] }tokio = { version = "1", features = ["full"] }


现在,在 src/main.rs 中编写应用程序代码:

use actix_web::{web, App, HttpServer, Responder, HttpResponse};use serde::Serialize;

#[derive(Serialize)]struct HealthResponse { status: String, message: String,}

async fn health_check() -> impl Responder { HttpResponse::Ok().json(HealthResponse { status: "ok".to_string(), message: "Rust service is running on Kubernetes!".to_string(), })}

#[actix_web::main]async fn main() -> std::io::Result<()> { println!("Starting server on 0.0.0.0:8080"); HttpServer::new(|| { App::new() .route("/health", web::get().to(health_check)) }) .bind("0.0.0.0:8080")? .run() .await}


请注意:我们绑定到 0.0.0.0:8080,因为在容器内部,应用程序应该监听所有接口。在本地测试:

cargo run


打开 http://localhost:8080/health——您应该会看到 JSON 响应。



2. 创建包含 Rust 应用程序的 Docker 镜像



对于 Kubernetes,我们需要一个容器。Rust 编译为原生二进制文件,因此我们可以使用多阶段构建来获得最小的镜像。



在项目根目录创建 Dockerfile 文件:

# 构建阶段FROM rust:1.75-slim-bookworm AS builder

WORKDIR /appCOPY Cargo.toml Cargo.lock ./RUN mkdir src && echo "fn main() {}" > src/main.rsRUN cargo build --release 2>/dev/null || true

COPY src/ src/RUN cargo build --release

# 最终镜像FROM debian:bookworm-slimRUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*COPY --from=builder /app/target/release/rust-k8s-demo /usr/local/bin/rust-k8s-demo

EXPOSE 8080CMD ["rust-k8s-demo"]


这个 Dockerfile 首先构建依赖,然后编译我们的代码,并将二进制文件复制到基于 Debian 的最小镜像中。这样可以节省空间并提高安全性。



构建镜像:

docker build -t rust-k8s-demo:latest .


在本地测试容器:

docker run -p 8080:8080 rust-k8s-demo:latest


如果一切正常——将镜像推送到仓库(例如 Docker Hub):

docker tag rust-k8s-demo:latest yourusername/rust-k8s-demo:v1docker push yourusername/rust-k8s-demo:v1


3. 配置 Kubernetes 清单文件



现在镜像已准备就绪,我们需要为 Kubernetes 创建清单文件。我们将创建 Deployment(用于管理副本)和 Service(用于

博客

书籍推荐