Để 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:
Table of Contents
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:
1 |
kubectl get nodes |
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:
1 |
kubectl cluster-info |
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:
1 |
kubectl get pods |
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.
hưng biện
tôi mới đọc vào cái đầu tiên “Node là một đơn vị nhỏ nhất trong hệ thống Kubernetes..” không đúng rồi bạn.
Khanh Nguyen
Theo bạn thì đơn vị nhỏ nhất trong hệ thống Kubernetes là gì nhỉ?
K8s
Pod
Nguyễn Trọng Nghĩa
Nói rõ hơn thì phải là POD là đơn vị quản lý nhỏ nhất của Kubernetes,.
Khanh Nguyen
Thanks mọi người, lúc đầu Khanh mention nó trong một context khác. Đã update remove đoạn text đó để mọi người khỏi phải confuse.