Kubenetes Deployments là gì? Lợi ích, cách hoạt động

Bằng cách tự động hóa các tác vụ phức tạp, Kubernetes Deployment giúp giảm thiểu thời gian chết và đảm bảo các ứng dụng luôn hoạt động ổn định. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về Kubernetes Deployment là gì và lý do tại sao nó là một phần không thể thiếu trong quản lý container.

Xem thêm:

Containerd là gì ? So sánh Docker và Containerd

Container runtime là gì ? 2 loại phổ biến

Kubernetes Deployment là gì?

Kubernetes Deployment là một resource trong Kubernetes đóng vai trò quan trọng trong việc quản lý và cập nhật một version mới của ứng dụng. Deployment cho phép nâng cấp các phiên bản một cách liền mạch, mang lại khả năng linh hoạt và kiểm soát tuyệt đối trong quá trình phát triển và triển khai ứng dụng.

Kubernetes Deployment

Lợi ích của Deployment

  • Nâng cấp liền mạch: Deployment cung cấp hai cách triển khai chính: Recreate và RollingUpdate. Cả hai đều được thực hiện tự động, giúp quá trình nâng cấp trở nên đơn giản và hiệu quả.
  • Hoàn tác thay đổi: Lịch sử các phiên bản được lưu trữ, bạn có thể dễ dàng hoàn tác các thay đổi bằng cách rollback về phiên bản trước đó.
  • Tạm dừng và tiếp tục: Bạn có thể tạm dừng quá trình triển khai và tiếp tục khi cần thiết.
  • Quản lý Pod: Deployment quản lý các Pod trong k8s. Tự động thay thế các Pod bị lỗi bằng các Pod mới, đảm bảo ứng dụng luôn sẵn sàng.

Cách hoạt động

Deployment hoạt động dựa trên các template ( file định nghĩa về cấu hình và thiết lập của Pod). Khi template thay đổi, Deployment sẽ tự động tạo các Pod mới với cấu hình cập nhật và thay thế các Pod cũ.

Cách tạo và quản lý

  • Deployment tạo ReplicaSet: Deployment sẽ tạo ra một ReplicaSet để quản lý các Pod.
  • ReplicaSet tạo Pod: ReplicaSet sẽ tạo và quản lý các Pod dựa trên template được định nghĩa trong Deployment.
  • Pod chạy container: Các Pod sẽ chạy các container ứng dụng của bạn.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-1
spec:
  replicas: 2
  selector:
    matchLabels:
      name: busybox-pod
  template:
    metadata:
      labels:
        name: busybox-pod
    spec:
      containers:
      - name: busybox-container
        image: busybox888
        command:
        - sh
        - "-c"
        - echo Hello Kubernetes! && sleep 3600

Cảm ơn các bạn đã tham khảo kubernetes cơ bản trên ttnguyen.net.

Bài viết liên quan:

Imperative và Declarative trong K8S

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em