Những khái niệm quan trọng trong Kubernetes

Để làm việc với một hệ thống bất kỳ, điều đầu tiên các bạn cần phải nắm những khái niệm cơ bản được sử dụng với hệ thống đó. Do đó, trong bài viết này, mình xin giải thích với các bạn các khái niệm quan trọng trong Kubernetes để các bạn nắm nhé!

Những khái niệm này bao gồm:

Node

Node là một máy tính có thể là hardware machine hoặc là một virtual machine. Cho các data center thì node ở đây sẽ là những hardware machine nhưng cho những nhà cung cấp dịch vụ đám mây như Google Cloud Platform thì node ở đây là những virtual machine đó các bạn.

Các node này sẽ được tổ chức nằm trong các cluster, có các service cần thiết để có thể chạy các Pod, chịu sự quản lý của các cluster đó và được sử dụng tuỳ theo nhu cầu. Bất kỳ một node nào cũng có thể được thay thế bởi những node khác trong cùng một cluster.

Để kiểm tra các node hiện tại có trong cluster của Kubernetes, các bạn hãy nhập command sau:

Những khái niệm quan trọng trong Kubernetes


Cluster

Như mình nói, cluster sẽ là một hệ thống bao gồm nhiều node khác nhau. Cluster sẽ đảm nhận việc quản lý những node này.

Khi một ứng dụng được deploy lên một cluster, cluster này sẽ quản lý việc ứng dụng của chúng ta sẽ được deploy ở node nào, nếu node đang deploy ứng dụng của chúng ta có vấn đề thì cluster sẽ có nhiệm vụ đảm bảo ứng dụng của chúng ta có thể hoạt động bình thường, bằng cách sử dụng một node khác chẳng hạn…

Để kiểm tra thông tin cluster trong Kubernetes, các bạn có thể sử dụng câu lệnh sau:

Những khái niệm quan trọng trong Kubernetes


Persistent Volumes

Một vấn đề chúng ta thường đặt ra là: bởi vì cluster sẽ deploy ứng dụng của chúng ta lên các node và quản lý các node đó và nếu cluster đang deploy ứng dụng có vấn đề thì nó sẽ tự động deploy ứng dụng của chúng ta sang các node khác, trong trường hợp ứng dụng của chúng ta có lưu trữ dữ liệu, nếu deploy sang node khác thì sẽ bị mất dữ liệu trước đó. Để giải quyết vấn đề này, một nơi lưu trữ dữ liệu ứng dụng cho mỗi node là điều cần thiết, để khi node của chúng ta có vấn đề thì dữ liệu của ứng dụng vẫn còn đó.

Khái niệm persistent volumes được đưa ra để giải quyết vấn đề này. Đó là những ổ đĩa có thể mount vào cluster như là những persistent volumes để làm nơi lưu trữ dữ liệu cho ứng dụng.

Container

Nếu các bạn đã biết qua Docker thì sẽ hiểu rõ khái niệm này nên mình sẽ không nói nhiều về nó.

Linux container thường được sử dụng để deploy các ứng dụng.

Một container chúng ta có thể deploy được nhiều ứng dụng nhưng recommend nhất thì vẫn là một ứng dụng một container các bạn nhé.

Pod

Pod là khái niệm dùng để chỉ một hoặc nhiều container đang chạy trong Kubernetes. Nếu nhiều container thì chúng sẽ sử dụng cùng resource và network để dễ dàng communication với nhau.

Một pod có thể được replicate thành nhiều bản trong Kubernetes. Việc này sẽ giúp ứng dụng của chúng ta có thể hoạt động trơn tru khi có quá nhiều request bên ngoài, một pod không handle hết được.

Các bạn có thể xem tất cả các pod có trong hệ thống Kubernetes bằng cách sử dụng câu lệnh sau:

Những khái niệm quan trọng trong Kubernetes


Deployment

Các pod sẽ không được chạy trực tiếp trong Kubernetes mà nó phải thông qua một thành phần nữa gọi là Deployment. Việc này đảm bảo cho việc chúng ta có thể replacate các pods với số lượng được khai báo trước.

Khi một Deployment được thêm vào, nó sẽ khởi tạo một số lượng các pods mà chúng ta cần và quản lý chúng.

Ingress

Sau khi ứng dụng của chúng ta được deploy lên các container được quản lý bởi Kubernetes cluster, làm thế nào để chúng ta truy cập được tới nó? Chúng ta cần phải tạo một channel để bên ngoài có thể truy cập được. Channel này được gọi là Ingress trong Kubernetes.

Chúng ta có nhiều cách để thêm một Ingress vào một cluster, ví dụ như sử dụng Ingress Controller hay Load Balancer.

5/5 - (2 bình chọn)

5 thoughts on “Những khái niệm quan trọng trong Kubernetes

Add Comment