Lộ trình
Cloud Native Computing FoundationAssociateTuần 1: Nền tảngBài 6 / 30

Ngày 6: Label & Selector

Thời lượng: 45 phút
Mục tiêu: 2 nhiệm vụ chính
Tiến độ lộ trình
ckangày 6
hoàn thành6 / 30 bài
Bối cảnh bài học

Dùng labels và selectors để phân loại, target và debug Kubernetes resources; phân biệt equality/set selectors, node labels và selector mismatch.

đọc hiểuthực hànhcheckpoint
Bài giảng hôm nay

Học hiểu, rồi mới thực hành

Dùng labels và selectors để phân loại, target và debug Kubernetes resources; phân biệt equality/set selectors, node labels và selector mismatch.

Bắt đầu đọc bài giảng

Nhiệm vụ bài học hôm nay

  • Thực hành gán label cho Pod/Node
  • Luyện dùng label selector để lọc tài nguyên
Instructor walkthrough

Bài giảng chi tiết: từ bài toán đến bằng chứng

Scenario xuyên suốt

Service không có endpoints vì selector khác label, Pod chạy nhầm node vì label không đúng và lệnh cleanup xóa quá rộng do label taxonomy mơ hồ. Bài học biến labels thành contract giữa resources và operators.

01Đọc bài toán

Xác định actor, workload, constraint và trạng thái cuối cần đạt.

02Vẽ luồng / boundary

Chỉ ra request, dependency, identity và failure domain trước khi chọn công cụ.

03Chọn và thực hành

Thay đổi nhỏ nhất trong lab cô lập; command nào cũng phải nói rõ nó kiểm tra điều gì.

04Kiểm chứng / recovery

Đối chiếu trạng thái thực tế, tạo một failure variant và ghi cách hoàn tác.

Cách nối lý thuyết với thực tế
  • Label là metadata key/value; selector dùng label để lọc/target nhưng không tự đảm bảo semantic đúng.
  • Equality selector và set-based selector có cú pháp/behavior khác; nhiều controller/Service yêu cầu selector match chính xác.
  • Pod labels, Service selectors, Deployment selectors và nodeSelector/affinity có scope/use case khác nhau.
  • Label taxonomy nên có app/component/version/owner/environment; không dùng high-cardinality hoặc mutable label làm identity bất ổn.

Labels là contract

Labels giúp inventory, selector và ownership nhưng chỉ có giá trị khi taxonomy ổn định. Dùng app/component/version/owner/environment; tránh dùng label thay đổi liên tục làm identity controller. Equality và set selector phải đọc đúng cú pháp.

Debug selector

Khi Service không route: lấy Pod labels → Service selector → EndpointSlice → readiness. Khi Pod chạy sai node: inspect node labels và selector/affinity. Đừng sửa network trước khi chứng minh mapping.

Bài tập

Tạo Pods có label, lọc bằng hai loại selector, tạo Service selector mismatch rồi sửa. Ghi expected endpoints, node target và cleanup selector. Pass khi người khác có thể xác định target từ owner label mà không cần đoán.

Terminal reference

Command list và cách dùng

Chạy từng lệnh theo đúng thứ tự. Trước các lệnh có thể tạo hoặc thay đổi tài nguyên, hãy kiểm tra profile, account và region.

Commands · read-only checkpoints
kubectl get pods -n cka-day6 --show-labels
kubectl get pods -n cka-day6 -l "app=web" -o wide
kubectl get pods -n cka-day6 -l "environment in (lab,exam)"
kubectl get endpointslice -n cka-day6 -l kubernetes.io/service-name=web
kubectl get nodes --show-labels
Hands-on lab

Thực hành theo scenario

  1. Tạo namespace `cka-day6`, tạo Pod labels `app`, `component`, `version`, `owner`; inspect bằng `--show-labels`, `-l` equality và set selector.
  2. Tạo Service cố ý selector sai, chứng minh không có endpoints, sửa selector và verify EndpointSlice/traffic path.
  3. Gán label node lab (chỉ cluster local), dùng nodeSelector/affinity design để target; không label/taint production node tùy ý.
  4. Cleanup bằng label `owner=cka`, list target trước delete, rồi verify không còn resource lab ngoài cluster-scoped objects.
Evidence checkpoint

Kiểm chứng kết quả

Không coi lệnh chạy thành công là đủ. Hãy đối chiếu output với trạng thái mong đợi:

  • Label taxonomy có owner/environment semantics.
  • Equality/set selector dùng đúng.
  • Service/Deployment selector match labels và endpoints.
  • Node label targeting có evidence và scope.
  • Cleanup selector không xóa nhầm resource.
Transfer to exam / production

Bẫy thường gặp và trade-off

CKA hay đưa lỗi selector mismatch: Pod tồn tại không có nghĩa Service route được. Hãy kiểm tra labels hai bên và EndpointSlice trước khi sửa firewall hoặc scale.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Service tồn tại nhưng EndpointSlice rỗng trong khi Pod Running. Kiểm tra đầu tiên là gì?

Kết thúc bài

Checklist trước khi sang Ngày 2