FastAPI 教程

15.4 Kubernetes 部署基础

FastAPI Kubernetes部署基础教程 | 从零开始学习容器化

FastAPI 教程

本FastAPI教程详细讲解了如何在Kubernetes上部署应用的基础知识,包括Docker化、配置文件编写、部署步骤和最佳实践,适合新手快速入门。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

FastAPI Kubernetes部署基础

简介

FastAPI是一个高性能的Python Web框架,而Kubernetes是一个开源的容器编排系统。将FastAPI应用部署到Kubernetes上,可以实现自动化扩展、负载均衡和高可用性。本教程将引导你逐步完成FastAPI应用在Kubernetes上的基础部署。

先决条件

在开始之前,请确保你具备以下基础:

  • 基本Python和FastAPI知识(推荐学习FastAPI官方文档)。
  • Docker基础知识(如创建镜像和容器)。
  • Kubernetes集群环境(例如使用Minikube本地部署或云服务如AWS EKS、Google GKE)。
  • 安装了kubectl命令行工具(用于管理Kubernetes)。

第一步:Docker化FastAPI应用

为了在Kubernetes中运行,首先需要将FastAPI应用打包成Docker镜像。

  1. 创建Dockerfile: 在项目根目录下创建一个名为Dockerfile的文件。

    FROM python:3.9-slim
    WORKDIR /app
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    COPY . .
    CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
    

    假设你的FastAPI入口文件为main.py

  2. 构建Docker镜像: 运行以下命令构建镜像。

    docker build -t fastapi-app:v1 .
    

    可以使用docker images验证镜像是否成功创建。

第二步:准备Kubernetes配置文件

Kubernetes使用YAML文件定义资源。我们将创建两个主要文件:Deployment和Service。

  1. Deployment配置文件deployment.yaml): 这个文件定义了应用副本和容器配置。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: fastapi-deployment
    spec:
      replicas: 2  # 设置副本数量
      selector:
        matchLabels:
          app: fastapi
      template:
        metadata:
          labels:
            app: fastapi
        spec:
          containers:
          - name: fastapi-container
            image: fastapi-app:v1  # 引用前面构建的镜像
            ports:
            - containerPort: 80
    
  2. Service配置文件service.yaml): 这个文件暴露应用,使其可从外部访问。

    apiVersion: v1
    kind: Service
    metadata:
      name: fastapi-service
    spec:
      selector:
        app: fastapi
      ports:
      - protocol: TCP
        port: 80  # 服务端口
        targetPort: 80  # 容器端口
      type: LoadBalancer  # 如果使用云服务,可使用LoadBalancer;本地测试可选NodePort
    

第三步:部署到Kubernetes

使用kubectl命令应用配置文件,部署应用。

  1. 应用配置文件

    kubectl apply -f deployment.yaml
    kubectl apply -f service.yaml
    
  2. 检查部署状态: 运行以下命令查看资源状态。

    kubectl get deployments
    kubectl get pods
    kubectl get services
    

    确保Pods处于Running状态,并获取Service的外部IP(如果可用)。

第四步:测试应用

部署完成后,测试应用是否正常工作。

  • 端口转发(适用于本地测试如Minikube):

    kubectl port-forward service/fastapi-service 8080:80
    

    然后在浏览器中访问http://localhost:8080,查看FastAPI默认页面或自定义端点。

  • 云服务测试: 如果使用云服务,可以从Service获取外部IP并访问。

最佳实践

  • 配置管理:使用ConfigMap管理环境变量,避免硬编码。
  • 资源管理:在Deployment中设置资源请求(requests)和限制(limits),如CPU和内存。
  • 健康检查:添加liveness和readiness探针(probes),确保应用健康运行。
  • 扩展:通过调整replicas或使用Horizontal Pod Autoscaler实现自动扩展。
  • 安全:考虑使用Secrets管理敏感数据,并设置网络策略。

总结

通过本教程,你学会了FastAPI应用在Kubernetes上的基础部署步骤。从Docker化到Kubernetes配置文件,再到部署和测试,这些知识帮助你入门容器化部署。实践中,可以根据需求优化配置,如添加Ingress、监控等。持续学习相关文档和社区资源,提升技能。

如果有问题,请参考FastAPI官方文档和Kubernetes官方指南。祝你学习顺利!

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包