Labels giúp gán thông tin tùy chỉnh cho các đối tượng như Pods và Nodes, trong khi Selectors cho phép bạn lọc và lựa chọn các đối tượng đó một cách linh hoạt và hiệu quả. Trong bài viết này, hãy cùng mình tìm hiểu cách sử dụng Labels and Selectors trong Kubernetes.
Xem thêm:
1. Khái niệm Labels và Selectors
Labels là các thuộc tính (key-value pairs) được gán cho các đối tượng Kubernetes (Pods, Services, Kubernetes Deployments,…) để phân loại và nhóm chúng.
Selectors là các bộ lọc sử dụng Labels để chọn ra các đối tượng Kubernetes cụ thể.
2. Ví dụ minh họa
Giả sử bạn có một vườn thú ảo với nhiều loài động vật.
Bạn có thể gắn Labels cho mỗi con vật dựa trên:
- Loài: Thú, Chim, Cá,…
- Môi trường sống: Hoang dã, Nuôi nhốt
- Màu sắc: Xanh, Đỏ, Vàng,…
Selectors giúp bạn lọc ra các con vật cụ thể.
Ví dụ:
- Chọn tất cả các con vật thuộc lớp Thú: class=Thú
- Chọn tất cả các con vật màu xanh: color=Xanh
- Kết hợp nhiều tiêu chí: class=Chim, color=Xanh (chọn tất cả các con chim màu xanh)
3. Ứng dụng trong Kubernetes
Kubernetes sử dụng Labels và Selectors để quản lý và tổ chức hàng trăm, hàng nghìn đối tượng.
Ví dụ:
- Gom nhóm các Pods trong kubernetes: ReplicaSet sử dụng Selectors để xác định các Pods mà nó quản lý.
- Kết nối Services với Pods: Service sử dụng Selectors để tìm và chuyển tiếp traffic đến các Pods phù hợp.
4. Cách sử dụng Labels và Selectors trong Kubernetes:
Ví dụ chúng ta đã triển khai các pod và gán nhãn tier, env, bu.
controlplane ~ ➜ kubectl get pods NAME READY STATUS RESTARTS AGE db-1-4tmgs 1/1 Running 0 4m14s db-2-h9sx5 1/1 Running 0 4m14s app-1-vddc2 1/1 Running 0 4m15s db-1-bbgf5 1/1 Running 0 4m14s auth 1/1 Running 0 4m14s app-1-rt8v4 1/1 Running 0 4m15s app-2-m9l77 1/1 Running 0 4m14s app-1-zzxdf 1/1 Running 0 4m14s app-1-jnlkb 1/1 Running 0 4m15s db-1-hxj48 1/1 Running 0 4m14s db-1-cl5zr 1/1 Running 0 4m14s
– Lọc các pod có env=dev
controlplane ~ ➜ kubectl get pods --selector env=dev NAME READY STATUS RESTARTS AGE db-1-4tmgs 1/1 Running 0 4m3s app-1-vddc2 1/1 Running 0 4m4s db-1-bbgf5 1/1 Running 0 4m3s app-1-rt8v4 1/1 Running 0 4m4s app-1-jnlkb 1/1 Running 0 4m4s db-1-hxj48 1/1 Running 0 4m3s db-1-cl5zr 1/1 Running 0 4m3s
– Lọc các pod có bu=finance
controlplane ~ ✖ kubectl get pods --selector bu=finance NAME READY STATUS RESTARTS AGE db-2-h9sx5 1/1 Running 0 5m25s app-1-vddc2 1/1 Running 0 5m26s auth 1/1 Running 0 5m25s app-1-rt8v4 1/1 Running 0 5m26s app-1-zzxdf 1/1 Running 0 5m25s app-1-jnlkb 1/1 Running 0 5m26s
– Lọc các pod, replicaset và cả objects khac có env=prod
controlplane ~ ✖ kubectl get all --selector env=prod NAME READY STATUS RESTARTS AGE pod/db-2-h9sx5 1/1 Running 0 7m30s pod/auth 1/1 Running 0 7m30s pod/app-2-m9l77 1/1 Running 0 7m30s pod/app-1-zzxdf 1/1 Running 0 7m30s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/app-1 ClusterIP 10.43.138.121 <none> 3306/TCP 7m30s NAME DESIRED CURRENT READY AGE replicaset.apps/db-2 1 1 1 7m30s replicaset.apps/app-2 1 1 1 7m30s
– Lọc các pod có env=prod, tier=frontend, bu=finace
controlplane ~ ✖ kubectl get pods --selector env=prod,bu=finance,tier=frontend NAME READY STATUS RESTARTS AGE app-1-zzxdf 1/1 Running 0 9m25s
5. Annotations
Annotations cũng là các key-value pairs nhưng được sử dụng để lưu trữ thông tin bổ sung, không dùng để phân loại hay lọc đối tượng.
Ví dụ về Annotations: thông tin về phiên bản, tác giả, liên lạc,…
Hy vọng qua bài viết này, bạn đã nắm vững cách sử dụng Labels and Selectors trong Kubernetes. Cảm ơn bạn đã tham khảo kubernetes cơ bản trên ttnguyen.net.
Bài viết liên quan: