Bài 16. Labels và Selectors - Trái tim của Kubernetes
Nếu Deployment, Service, ReplicaSet đều có thể "tìm" đúng Pod để làm việc, chúng làm điều đó bằng cách nào?
Câu trả lời chính là Labels và Selectors.
Hãy tưởng tượng...
Bạn có một tủ hồ sơ với hàng trăm tập tài liệu.
Làm sao để tìm được "Hồ sơ nhân viên phòng Kỹ thuật"?
Bạn sẽ dán nhãn lên từng tập:
Phòng = Kỹ thuật
Loại = Nhân viên
Khi cần, chỉ việc tìm những hồ sơ có đúng nhãn đó.
Kubernetes cũng hoạt động theo cách tương tự.
1. Label là gì?
Label là một cặp key-value được gắn vào một tài nguyên Kubernetes.
Ví dụ:
labels:
app: web
env: production
tier: frontend
Ở đây Pod được gắn ba "chiếc tem":
- app = web
- env = production
- tier = frontend
Label không làm thay đổi cách Pod hoạt động.
Nó chỉ giúp Kubernetes phân loại và tìm kiếm Pod dễ dàng hơn.
2. Selector là gì?
Nếu Label là chiếc tem, thì Selector là điều kiện tìm kiếm.
Ví dụ:
selector:
app: web
Điều này có nghĩa là:
"Hãy chọn tất cả Pod có Label
app=web."
Ví dụ trực quan
Giả sử Cluster có 4 Pod:
| Pod | Label |
|---|---|
| pod-1 | app=web |
| pod-2 | app=web |
| pod-3 | app=api |
| pod-4 | app=db |
Service có:
selector:
app: web
Kubernetes sẽ tự động chọn:
pod-1
pod-2
và bỏ qua:
pod-3
pod-4
Đó là lý do Service luôn biết phải gửi request đến đúng Pod.
3. Labels được sử dụng ở đâu?
Rất nhiều thành phần trong Kubernetes đều dựa vào Labels và Selectors.
Ví dụ:
- ReplicaSet tìm Pod cần quản lý.
- Deployment quản lý ReplicaSet.
- Service tìm Pod để gửi traffic.
- NetworkPolicy chọn Pod cần áp dụng rule.
- Monitoring chỉ theo dõi một nhóm Pod.
- Logging lọc log theo ứng dụng.
Có thể nói:
Gần như mọi thứ trong Kubernetes đều giao tiếp với nhau thông qua Labels.
Một ví dụ thực tế
Một website thương mại điện tử có thể có các Label như:
labels:
app: shop
env: production
version: v2
team: payment
Nhờ đó bạn có thể dễ dàng:
- Chỉ route traffic đến
version=v2. - Chỉ monitor Pod của
team=payment. - Chỉ restart các Pod thuộc
app=shop. - Chỉ backup ứng dụng đang chạy ở
production.
Mọi thao tác đều trở nên đơn giản chỉ nhờ những chiếc "tem" nhỏ này.
Kết luận
Label giúp Kubernetes gắn danh tính cho tài nguyên.
Selector giúp Kubernetes tìm đúng tài nguyên cần làm việc.
Hai khái niệm này tuy đơn giản nhưng lại là nền tảng để Service, Deployment, ReplicaSet và nhiều thành phần khác hoạt động chính xác.
Có thể xem Labels và Selectors là "ngôn ngữ chung" giúp các thành phần trong Kubernetes giao tiếp với nhau.
Bài tiếp theo
Biết cách gắn Label vẫn chưa đủ.
Nếu bạn muốn ép Pod chạy trên một Node cụ thể, Kubernetes có hỗ trợ không?
Đó sẽ là nội dung của bài tiếp theo:
Bài 17. NodeSelector - Ép Pod chạy đúng Node.
All rights reserved