10.pods
1. Pod là gì? Đơn vị cơ bản nhất trong Kubernetes 🌱¶
Điểm đầu tiên và quan trọng nhất bạn cần nhớ: Kubernetes không triển khai container một cách trực tiếp. Thay vào đó, các container được "đóng gói" vào bên trong một đối tượng của Kubernetes gọi là Pod.
- Pod là một thực thể (instance) duy nhất của một ứng dụng.
- Pod là đối tượng nhỏ nhất bạn có thể tạo và quản lý trong Kubernetes.
Hãy coi Pod như một cái "vỏ bọc" cho container của bạn. Ngay cả khi bạn chỉ có một container, nó vẫn phải nằm bên trong một Pod.
2. Mở rộng quy mô (Scaling) ứng dụng 📈¶
Khi ứng dụng của bạn cần xử lý nhiều người dùng hơn, bạn cần phải mở rộng (scale up) nó. Cách Kubernetes thực hiện điều này là:
- Để scale up: Bạn tạo ra các Pod mới.
- Để scale down: Bạn xóa bớt các Pod hiện có.
Quy tắc vàng: Bạn KHÔNG thêm container mới vào một Pod đang có sẵn để scale ứng dụng. Thay vào đó, bạn tạo ra nhiều Pod hơn. Điều này dẫn đến một mối quan hệ phổ biến là 1 Pod : 1 Container cho ứng dụng chính của bạn.
3. Trường hợp đặc biệt: Pod đa Container (Multi-Container Pods) 🤓¶
Mặc dù 1 Pod thường chỉ chứa 1 container chính, nhưng một Pod có thể chứa nhiều container. Trường hợp này thường được sử dụng khi bạn có:
- Một container ứng dụng chính (main application container).
- Một hoặc nhiều container phụ trợ (helper/sidecar containers) làm các tác vụ hỗ trợ, ví dụ như xử lý file, thu thập log, hoặc làm proxy.
Lợi ích của việc đặt nhiều container trong cùng một Pod:
- Chung Vòng đời (Shared Lifecycle): Tất cả các container trong cùng một Pod sẽ được tạo ra cùng nhau và "chết" cùng nhau.
- Chung Không gian Mạng (Shared Network Namespace): Chúng có thể giao tiếp với nhau qua
localhost
như thể chúng đang chạy trên cùng một máy. - Chung Không gian Lưu trữ (Shared Storage): Chúng có thể dễ dàng chia sẻ cùng một vùng lưu trữ (volume).
Pod giúp tự động hóa tất cả những việc phức tạp này. Tuy nhiên, hãy nhớ rằng Pod đa container là một trường hợp sử dụng không quá phổ biến.
4. Cách Triển khai và Xem Pods (Lệnh cơ bản) 💻¶
-
Để tạo một Pod (một cách nhanh chóng):
-
Sử dụng lệnh
kubectl run
. Lệnh này thực chất sẽ tạo ra một Pod và sau đó triển khai container image bạn chỉ định vào bên trong nó. - Cú pháp:
kubectl run <tên-pod> --image=<tên-image>
-
Ví dụ:
kubectl run my-nginx-pod --image=nginx
-
Để xem danh sách các Pod:
- Sử dụng lệnh
kubectl get pods
. - Lệnh này sẽ hiển thị các Pod đang có trong cluster và trạng thái của chúng (ví dụ:
ContainerCreating
,Running
,Completed
,Error
).
5. Một lưu ý quan trọng về Mạng 🌐¶
Việc tạo ra một Pod không tự động làm cho ứng dụng bên trong nó có thể được truy cập từ bên ngoài. Để làm được điều đó, chúng ta cần một đối tượng khác là Service, chúng ta sẽ tìm hiểu về nó sau. Hiện tại, Pod chỉ có thể được truy cập từ bên trong node mà nó đang chạy.
6. "Chốt hạ" cho Kỳ thi CKA 📝¶
- Pod là đơn vị nhỏ nhất có thể triển khai trong Kubernetes. Nó là một "lớp bọc" cho một hoặc nhiều container.
- Scaling được thực hiện bằng cách thay đổi số lượng Pod, không phải số lượng container trong một Pod.
- Mô hình 1 Pod : 1 Container là phổ biến nhất.
- Pod đa container rất hữu ích cho các mẫu thiết kế "sidecar", vì chúng chia sẻ chung mạng và lưu trữ.
- Biết các lệnh cơ bản:
kubectl run
để tạo Pod vàkubectl get pods
để liệt kê chúng.
Hiểu rõ về Pod là nền tảng để bạn có thể làm chủ được các khái niệm phức tạp hơn trong Kubernetes. Chúc bạn buổi chiều học tập hiệu quả!