首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 容器化应用代码并使用Kubernetes进行自动化服务发布

Python 容器化应用代码并使用Kubernetes进行自动化服务发布

作者头像
用户11081884
发布2026-07-20 18:37:38
发布2026-07-20 18:37:38
140
举报

在现代软件开发中,容器化和编排技术已成为构建、部署和管理应用程序的标准方式。本文将详细介绍如何将一个Python应用容器化,并使用Kubernetes进行服务发布。

首先准备一个简单的Python Web应用。这里使用Flask框架创建一个基础应用:

代码语言:javascript
复制
from flask import Flask
import os

app = Flask(__name__)

@app.route('/')
def hello():
    return f"Hello from {os.getenv('HOSTNAME', 'unknown')}!"

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000)

同时创建一个requirements.txt文件列出依赖:

代码语言:javascript
复制
Flask==2.0.1

创建Dockerfile

接下来,我们创建Dockerfile来定义镜像构建过程:

代码语言:javascript
复制
# 使用官方Python轻量级镜像作为基础
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件
COPY requirements.txt .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY . .

# 暴露端口
EXPOSE 5000

# 定义环境变量
ENV FLASK_APP=app.py
ENV FLASK_ENV=production

# 运行应用
CMD ["flask", "run", "--host=0.0.0.0"]

项目目录结构如下:

代码语言:javascript
复制
-rw-r--r--. 1 root root 215 Sep 19 09:16 app.py
-rw-r--r--. 1 root root  19 Sep 19 09:17 requirements.txt
-rw-r--r--. 1 root root 245 Sep 19 09:20 Dockerfile

构建Docker镜像

使用以下命令构建Docker镜像:

代码语言:javascript
复制
docker build -t python-flask-app .

构建完成后,可以运行容器进行测试:

代码语言:javascript
复制
docker run -p 5000:5000 python-flask-app

验证容器的功能:

与实际的容器功能一致。

使用Kubernetes部署应用

准备工作

在将应用部署到Kubernetes之前,需要确保:

1、已安装kubectl命令行工具

2、已配置访问Kubernetes集群的权限

3、已安装Docker并登录到镜像仓库(如Docker Hub)

推送镜像到仓库

首先将镜像推送到可公开访问的镜像仓库:

代码语言:javascript
复制
docker tag python-flask-app yourusername/python-flask-app:v1
docker push yourusername/python-flask-app:v1

创建Kubernetes部署文件

创建deployment.yaml文件定义Kubernetes部署:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: python-flask-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: python-flask-app
  template:
    metadata:
      labels:
        app: python-flask-app
    spec:
      containers:
      - name: python-flask-app
        image: yourusername/python-flask-app:v1
        ports:
        - containerPort: 5000
        resources:
          requests:
            cpu: "100m"
            memory: "128Mi"
          limits:
            cpu: "200m"
            memory: "256Mi"

创建服务文件

创建service.yaml文件定义Kubernetes服务:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: python-flask-service
spec:
  selector:
    app: python-flask-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5000
  type: LoadBalancer

部署应用到Kubernetes

使用kubectl应用配置文件:

代码语言:javascript
复制
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

验证部署

检查部署状态:

代码语言:javascript
复制
kubectl get deployments
kubectl get pods
kubectl get services

当服务的外部IP可用时,可以通过该IP访问应用:

代码语言:javascript
复制
kubectl get service python-flask-service

高级配置

水平自动扩展

可以配置Horizontal Pod Autoscaler根据CPU使用率自动扩展:

代码语言:javascript
复制
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: python-flask-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: python-flask-app
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 50

配置健康检查

在部署中添加健康检查:

代码语言:javascript
复制
livenessProbe:
  httpGet:
    path: /
    port: 5000
  initialDelaySeconds: 5
  periodSeconds: 10
readinessProbe:
  httpGet:
    path: /
    port: 5000
  initialDelaySeconds: 5
  periodSeconds: 10

本文介绍了将Python应用容器化并使用Kubernetes进行服务发布的完整流程。通过这种方式可以获得以下优势:

1、环境一致性:容器确保应用在不同环境中的一致性

2、可扩展性:Kubernetes提供强大的扩展能力

3、高可用性:多副本部署确保服务持续可用

4、资源管理:可以精确控制资源使用

随着应用的演进,可以进一步探索Kubernetes的其他功能,如配置管理、滚动更新、服务网格等,以构建更健壮的微服务架构。

“无他,惟手熟尔”!有需要就用起来。

如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nicholas与Pypi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建Dockerfile
  • 构建Docker镜像
  • 使用Kubernetes部署应用
    • 准备工作
    • 推送镜像到仓库
    • 创建Kubernetes部署文件
    • 创建服务文件
    • 部署应用到Kubernetes
    • 验证部署
  • 高级配置
    • 水平自动扩展
    • 配置健康检查
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档