Tìm hiểu về Deployment trong Kubernetes

Trong Kubernetes, đối tượng Deployment là đối tượng chính đảm nhận việc deploy và quản lý ứng dụng của chúng ta. Nó cho phép chúng ta deploy các Pod, update Pod, rollback Pod và các ReplicaSet. Cụ thể như thế nào? Chúng ta sẽ cùng nhau tìm hiểu trong bài viết này các bạn nhé!

Điều đầu tiên, như mình đã trình bày trong bài viết về câu lệnh “run”, chúng ta có thể sử dụng câu lệnh này để deploy một ứng dụng với cú pháp như sau:

Trong đó:

  • name là tên của Deployment này trong Kubernetes sau khi được chạy câu lệnh “run”
  • image_name là tên của Image sẽ được sử dụng để chạy Pod.
  • number_of_replica là số lượng Replica của Pod mà chúng ta cần để chạy ứng dụng.
  • port_number là port chúng ta sẽ chạy ứng dụng này trong Pod.

Ví dụ bây giờ mình cần chạy một Deployment để deploy ứng dụng node-hello từ image “gcr.io/googlesamples/nodehello:1.0“, tương tự như trong bài viết về câu lệnh “run” nhưng có thêm các tham số khác, thì mình sẽ chạy câu lệnh như sau:

Kết quả:

Tìm hiểu về Deployment trong Kubernetes

Kiểm tra Deployment:

Tìm hiểu về Deployment trong Kubernetes

Các bạn có thể thấy ở cột DESIRED, chúng ta đang có 2 Pod đang chạy cho Deployment này.

Kiểm tra Pod, các bạn sẽ thấy kết quả như sau:

Tìm hiểu về Deployment trong Kubernetes

Về mặt tổng quan thì Deployment sẽ quản lý các ReplicaSet và các ReplicaSet sẽ quản lý các Pods để chạy các ứng dụng. Deployment sẽ tạo ra các ReplicaSet để đảm bảo số lượng Pod cho ứng dụng của chúng ta.

Chúng ta cũng có thể tạo các Deployment trong Kubernetes sử dụng tập tin spec YAML.

Với câu lệnh “run” ở ví dụ trên, chúng ta có thể viết lại nó sử dụng tập tin YAML như sau:

Chạy câu lệnh “create” với tập tin spec trên, các bạn cũng được kết quả tương tự như trên.

Khi ứng dụng của chúng ta được deploy với đối tượng Deployment, nó chỉ có thể access bên trong cluster.

Nên muốn kiểm tra xem kết quả của việc deploy này, các bạn cần phải login vào một trong các Pod đã được deploy ứng dụng. Ví dụ như, để kiểm tra kết quả của ví dụ trên, đầu tiên mình cần phải biết Container ID của Pod với câu lệnh “docker ps -a”:

Tìm hiểu về Deployment trong Kubernetes

sau đó thì truy cập vào Container này để kiểm tra kết quả:

Tìm hiểu về Deployment trong Kubernetes

Như các bạn thấy, ứng dụng của chúng ta đã được deploy ở port 8080 và kết quả khi access tới ứng dụng này là “Hello Kubernetes!”.

Khi ứng dụng của chúng ta cần cập nhập, chúng ta sẽ cần phải update Deployment. Do đó, việc định nghĩa strategy để update Deployment là rất quan trọng các bạn ạ.

Deployment trong Kubernetes có 3 tham số định nghĩa strategy để chúng ta có thể update một Deployment.

Thứ nhất là tham số minReadySecond định nghĩa bao lâu thì một Pod vừa mới tạo được xem xét là available. Mặc định thì Kubernetes sẽ coi Pod available khi nó chạy thành công nên giá trị mặc định của tham số này là 0.

Tham số thứ 2 maxSurged định nghĩa số lượng Pod có thể tăng lên cho Deployment này là bao nhiêu. Giá trị của tham số này có thể là một số bất kỳ hoặc tính theo %. Mặc định giá trị này sẽ là 25% so với số lượng Pod cần thiết để chạy ứng dụng các bạn nhé!

Tham số thứ 3 liên quan đến việc bao nhiêu Pod sẽ trở nên unavailable khi Deployment đang được cập nhập. Giá trị của tham số này cũng có thể là một số bất kỳ hoặc tính theo %. Và mặc định giá trị này cũng sẽ là 25% các bạn nhé!

Chia sẽ bài viết này ...Share on Facebook
Facebook
0Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin

Add Comment