15.4 Kubernetes 部署基础
FastAPI Kubernetes部署基础教程 | 从零开始学习容器化
本FastAPI教程详细讲解了如何在Kubernetes上部署应用的基础知识,包括Docker化、配置文件编写、部署步骤和最佳实践,适合新手快速入门。
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镜像。
-
创建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。 -
构建Docker镜像: 运行以下命令构建镜像。
docker build -t fastapi-app:v1 .可以使用
docker images验证镜像是否成功创建。
第二步:准备Kubernetes配置文件
Kubernetes使用YAML文件定义资源。我们将创建两个主要文件:Deployment和Service。
-
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 -
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命令应用配置文件,部署应用。
-
应用配置文件:
kubectl apply -f deployment.yaml kubectl apply -f service.yaml -
检查部署状态: 运行以下命令查看资源状态。
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官方指南。祝你学习顺利!