October 22, 2021
kubernetes deploy

Các chiến lược triển khai Kubernetes

Trong bài này, chúng ta sẽ tìm hiểu về các chiến lược khi deploy application trên Kubernetes.

Recreate – Shutdown old version and create a new version.

Với chiến lược này, chúng ta sẽ tắt tất cả version cũ của application, và sau đó tạo lại với version mới.
Lợi ích:
+ Trạng thái của application sẽ được tạo mới.
Bất lợi:
+ Sẽ mất thời gian downtime khi stop và start server.

Rolling update – Những version mới sẽ được tạo và thay thế version cũ một cách từ từ, từng cái một.

Rolling update là cách deploy mặt định của K8s. Nó sẽ tạo pod mới mới để thay thế pod cũ, từng cái một, mà không gặp vấn đề downtime.
Lợi ích:
+ Không xãy ra tình trạng downtime.
+ Không đội resource tại thời điểm update.
Bất lợi:
+ Không thể control lưu lượng traffic.

Blue/Green – Version mới sẽ tồn tại cùng với version cũ.

Cả version cũ và mới sẽ tồn tại cùng lúc. Nhưng end-user không access vào version mới, chỉ QA, tester mới sử dụng version cho mục đích test. Sau khi test không có vấn đề gì thì mới chuyển traffic của end-user qua version mới.
Lợi ích:
+ Không xảy ra tình trạng downtime.
Bất lợi:
+ Cần nhiều resource.

Canary – Deploy version mới cho 1 lượng nhỏ end-user, nếu không có vấn đề thì update toàn bộ.

Deploy version mới cùng với version cũ, nhưng vesion mới chỉ chiếm 1 phần nhỏ traffic. Sau khi end-user sử dụng và phân có bất kỳ vấn đề gì, thì có thể deploy toàn bộ version mới.
Lợi ích:
+ Có thể controller được traffic.
+ Có thể rollback nếu có problem.
Bất lợi:
+ Deploy chậm.

A/B testing – Deploy version mới cho 1 lượng nhỏ end-user dựa vào điều kiện như (HTTP header, cookie, …)

A/B testing khá giống với Canary. Nhưng dựa vào thông tin, số liệu thống kê để quyết định traffic sử dụng version mới, những thông tin đó được đánh dấu ở HTTP header, cookie, …
Lợi ích:
+ Có thể controller được traffic cụ thể.
+ Version cũ và mới chạy song song.
Bất lợi:
+ Phức tạp.

Liên hệ ngay với chúng tôi, Cloud Ace Việt Nam để được tư vấn về G Suite, GCP.

Leave a Reply

Your email address will not be published. Required fields are marked *