Triển khai, mở rộng và giám sát ứng dụng stateful

Nhập môn Kubernetes

Frank Heilmann

Platform Architect and Freelance Instructor

Ôn tập ứng dụng stateless

  • Tóm tắt nhanh: ứng dụng stateless ánh xạ sang "Deployments" trong Kubernetes
  • Dùng khi mỗi Pod của ứng dụng có nhiệm vụ giống hệt nhau
  • Ứng dụng stateful cần các Pod thuộc cùng một tập, nhưng có thể làm nhiệm vụ và dữ liệu khác nhau
  • Nhiều kiến thức về Deployments cũng áp dụng cho StatefulSets
Nhập môn Kubernetes

Ứng dụng stateful

  • Ứng dụng stateful:

    • khái niệm chung
    • phù hợp với Kubernetes
    • lưu một phần trạng thái
  • Khi bị gián đoạn hoặc dừng, bản sao (Pod) mới có thể đọc trạng thái đã lưu và tiếp tục từ đó

  • Ví dụ:
    • Backend cơ sở dữ liệu (vd. PostgreSQL) cung cấp dữ liệu cho frontend bằng 3 Pod.
    • Mỗi lần cập nhật dữ liệu bằng bất kỳ Pod nào, dữ liệu phải được lưu bền vững
    • Khi một Pod kết thúc, Pod mới được tạo và cần khôi phục trạng thái đã lưu
Nhập môn Kubernetes

Kubernetes StatefulSets

  • Ứng dụng stateful ánh xạ sang "Kubernetes StatefulSets"
  • Manifest mẫu gồm các phần tương tự:
    • apiVersion, kind, metadata, spec, template
  • replicas xác định số Pod trong StatefulSet
  • Sẽ nói thêm về selector sau
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: <deployment name>
  labels:
    app: <a label for the application>
spec:
  replicas: <number of initial replicas>
  selector:
    matchLabels:
      app: <matches the label above>
  template:
    metadata:
      labels:
        app: <label to be given to each pod>
    spec:
      containers:
      - name: <container name>
        image: <the image to be used>
        ports:
        - containerPort: <ports for networking>
Nhập môn Kubernetes

Triển khai lên cụm Kubernetes

  • Triển khai StatefulSet tương tự Deployments: kubectl apply -f <manifest.yml>
  • Sau khi triển khai, StatefulSet được tạo khác Deployment:
    • Pod được tạo tuần tự, không phải đồng thời như trong Deployment
    • Pod có tên dự đoán được như pod-0, pod-1, pod-2, v.v.
  • Nghĩa là: khác với Pod của Deployment, Pod của StatefulSet có danh tính và trạng thái
  • Vì vậy, các Pod khác nhau trong StatefulSet với danh tính khác có thể đảm nhiệm vai trò khác nhau trong ứng dụng
Nhập môn Kubernetes

Scale StatefulSet

  • Giống như Deployments, StatefulSet có thể scale lên hoặc xuống:
    • Hoặc đổi số replicas trong Manifest và áp dụng lại,
    • Hoặc dùng lệnh kubectl scale statefulsets ...
  • Khi scale lên, Pod mới được tạo tuần tự:
    • ví dụ: pod-0, pod-1, pod-2, trước pod-3, rồi thêm pod-4
  • Khi scale xuống, Pod tạo sau bị xóa trước:
    • ví dụ: xóa pod-4 trước, rồi pod-3
Nhập môn Kubernetes

Giám sát StatefulSet

  • Như với Deployments, Monitoring cho phép phản ứng với sự cố như outage, spike tải, hoặc thiếu storage
  • Ở đây, dùng kubectl cho các tác vụ giám sát cơ bản
  • Lệnh điển hình: giống như với Deployments
  • Ví dụ 1: kubectl get pods trả về tất cả pod trong StatefulSet cùng trạng thái hiện tại
  • Ví dụ 2: kubectl get services trả về các service mà StatefulSet có thể dùng
Nhập môn Kubernetes

Ayo berlatih!

Nhập môn Kubernetes

Preparing Video For Download...