云服务器K8s部署微服务:Docker镜像到Ingress全流程
文章分类:技术文档 /
创建时间:2025-09-12
在云服务器上通过Kubernetes(K8s)部署微服务,是容器化应用管理的核心实践。本文从Docker镜像构建到Ingress配置,拆解完整操作流程,助你高效落地云服务器微服务部署。

环境准备:云服务器基础配置
部署前需确保云服务器已完成三项关键准备:其一,安装Docker(容器运行时)和Kubectl(K8s命令行工具);其二,启动K8s集群(可通过kubeadm或云厂商托管服务快速搭建);其三,准备微服务代码——本文以Python Flask应用为例,代码结构包含app.py业务逻辑与requirements.txt依赖清单。
第一步:构建Docker镜像
Docker镜像是微服务运行的“可移植包”,构建需通过Dockerfile定义步骤。在代码根目录创建Dockerfile,内容如下:
基于轻量Python镜像减少体积
FROM python:3.9-slim
设置容器内工作目录
WORKDIR /app
优先复制依赖文件加速缓存
COPY requirements.txt .
安装依赖(禁用缓存减少镜像大小)
RUN pip install --no-cache-dir -r requirements.txt
复制全部应用代码
COPY . .
暴露服务端口
EXPOSE 5000
定义启动命令
CMD ["python", "app.py"]
执行构建命令:
docker build -t my-flask-app:v1.0 .
优化提示:镜像标签建议添加版本号(如:v1.0),避免因无版本标识导致部署混乱;生产环境可通过多阶段构建(Multi-stage Build)进一步压缩镜像体积。
第二步:镜像推送至仓库
K8s部署需从镜像仓库拉取镜像,公共仓库(如Docker Hub)或私有仓库(如自建Harbor)均可。以公共仓库为例,操作步骤如下:
1. 登录镜像仓库:
docker login -u 你的用户名
2. 为镜像打标签(格式:用户名/镜像名:版本):
docker tag my-flask-app:v1.0 username/my-flask-app:v1.0
3. 推送镜像至仓库:
docker push username/my-flask-app:v1.0
实践建议:企业级场景推荐使用私有镜像仓库,支持细粒度权限控制与镜像扫描,提升安全性。
第三步:K8s部署微服务
通过K8s的Deployment(部署控制器)管理微服务实例,确保高可用。创建deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-flask-deployment
spec:
replicas: 3 # 初始3个副本
selector:
matchLabels:
app: my-flask-app
template:
metadata:
labels:
app: my-flask-app
spec:
containers:
- name: flask-container
image: username/my-flask-app:v1.0 # 指定镜像版本
ports:
- containerPort: 5000
resources:
limits:
cpu: "1"
memory: "512Mi" # 限制资源防止过载
执行部署命令:
kubectl apply -f deployment.yaml
扩展技巧:高并发场景可结合Horizontal Pod Autoscaler(HPA)实现自动扩缩容,根据CPU或内存使用率动态调整副本数。
第四步:配置Ingress暴露服务
Ingress用于将外部HTTP/HTTPS请求路由至集群内Service。需先安装Ingress Controller(如Nginx Controller),再创建ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-flask-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: / # 重写路径规则
spec:
rules:
- host: flask.example.com # 绑定域名
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-flask-service # 关联Service
port:
number: 80
注意事项:需提前在DNS服务商处将flask.example.com解析至Ingress Controller的公网IP。
通过以上步骤,云服务器上的微服务即可通过Ingress稳定对外提供服务。实际落地中可根据业务需求调整资源限制、副本策略及Ingress规则,确保服务的高性能与高可用。
上一篇: 云服务器K8s节点调度策略配置指南