透過我們之前建立好的應用
我們可以透過以下步驟部屬在 Kubernetes 中
首先,我們需要將 Flask 應用程式容器化。
這可以通過編寫一個 Dockerfile 來實現,它將定義應用程式的構建過程和運行環境。
# Use a base Python image
FROM python:3.9-slim
# Set the working directory
WORKDIR /app
# Copy the Flask app files
COPY app.py /app/
# Copy the model weights
COPY coco_predictions.pth /app/
# Copy the static files
COPY static /app/static/
# Copy the HTML templates
COPY templates /app/templates/
# Install dependencies
RUN pip install flask torch torchvision
# Expose the port Flask runs on
EXPOSE 5000
# Run the Flask app
CMD ["python", "app.py"]
並透過以下指令建立 Docker Image
docker build -t flask-image-classifier .
首先是 deployment.yaml
在 Kubernetes 中,Deployment 物件負責管理應用程式的副本數量、滾動更新策略等。
apiVersion: apps/v1
kind: Deployment
metadata:
name: flask-app-deployment
spec:
replicas: 3
selector:
matchLabels:
app: flask-app
template:
metadata:
labels:
app: flask-app
spec:
containers:
- name: flask-app
image: flask-image-classifier:latest
ports:
- containerPort: 5000
volumeMounts:
- name: model-volume
mountPath: /app/coco_predictions.pth
volumes:
- name: model-volume
hostPath:
path: /path/to/your/model
再來是service.yaml
Service 物件負責將流量路由到正確的 Pod,並提供應用程式的持久化訪問點。
apiVersion: v1
kind: Service
metadata:
name: flask-app-service
spec:
selector:
app: flask-app
ports:
- protocol: TCP
port: 80
targetPort: 5000
type: LoadBalancer
使用以下命令將 Deployment 和 Service 資源應用到 Kubernetes 集群中:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
這些命令會根據 YAML 文件建立相應的 Kubernetes 資源。
服務啟動並運行後,我們可以透過 LoadBalancer 提供的外部 IP 存取 Flask 應用程式:
kubectl get svc flask-app-service
我們可以使用以下命令來管理和監控應用程式的運行狀況:
kubectl get pods
以下指令會顯示 Pod 的名稱、狀態及啟動時間。
kubectl logs <pod-name>