iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
Kubernetes

關於新手會想知道Kubernetes的幾件事情系列 第 23

[Day 23] K8S Lab - 基於 MS COCO 的圖像分類系統 (6)

  • 分享至 

  • xImage
  •  

透過我們之前建立好的應用

我們可以透過以下步驟部屬在 Kubernetes 中

Dockerfile 設置

首先,我們需要將 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 .

Kubernetes 建制設定

首先是 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

Kubernetes 部屬

使用以下命令將 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>

上一篇
[Day 22] K8S Lab - 基於 MS COCO 的圖像分類系統 (5)
下一篇
[Day 24] Top Kubernetes Design Patterns
系列文
關於新手會想知道Kubernetes的幾件事情30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言