0

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à LabelsSelectors.


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ạitìm kiếm Pod dễ dàng hơn.


2. Selector là gì?

Nếu Label là chiếc tem, thì Selectorđ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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí