ข้ามไปเนื้อหาหลัก
คอนเทนเนอร์· ~12 นาที

Labels และ Selectors

ระบบป้ายกำกับที่ K8s ใช้เชื่อมทุกอย่างเข้าด้วยกัน

เปรียบเทียบให้เห็นภาพ

Label เหมือนป้ายสติกเกอร์ที่แปะบนของ (เช่น app: web, env: prod) · Selector เหมือนคำสั่งค้นหา ("เอาทุกอย่างที่ติดป้าย app=web มา") · K8s ไม่ได้ผูกของเข้าด้วยกันแบบตายตัว แต่ใช้ป้ายกับการค้นหานี่แหละเชื่อมทุกอย่าง

Labels คือคู่ key/value ที่แปะบน object ได้ทุกชนิด · Selectors คือเงื่อนไขเลือก object ตาม label · กลไกนี้คือ "กาว" ที่ทำให้ Deployment หา Pod เจอ และ (บทหน้า) ทำให้ Service ส่ง traffic ถึง Pod ที่ถูกต้อง

selector ค้นหา Pod ด้วย label ที่ตรงกัน

Deploymentselector: app=web
Serviceselector: app=web
เลือกที่ app=web
Pod #1🏷️ app=web
Pod #2🏷️ app=web
Pod #3🏷️ app=api (ไม่ถูกเลือก)

Pod #3 ติดป้าย app=api จึงไม่ถูก selector app=web เลือก

Pod ติด label · Deployment และ Service ใช้ selector ค้นหา Pod ที่ตรงกัน
kubectl get pods --show-labels           # ดู label ของทุก Pod
kubectl get pods -l app=web              # เอาเฉพาะที่ติด app=web
kubectl get pods -l 'env in (prod,staging)'  # เลือกหลายค่า
kubectl label pod my-pod tier=frontend   # แปะ label เพิ่ม
ใช้ label กรอง Pod ด้วย kubectl

สรุป Key Takeaways

  • Label = ป้าย key/value แปะบน object · Selector = เงื่อนไขค้นหาตาม label
  • กลไกนี้คือกาวที่เชื่อม Deployment→Pod และ Service→Pod
  • ตั้ง label เป็นระบบ (app/tier/env/version) ตั้งแต่แรก
  • Label ใช้ค้นหา · Annotation ใช้แนบข้อมูลเฉย ๆ (ค้นไม่ได้)
อ่านจบแล้วอย่าลืมทำเครื่องหมาย