Thuta Learning
ရှာဖွေရန်
IntermediateDevOpsintermediate

Labels & Selectors

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Labels & Selectors ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် kubectl command/YAML ကို run ကြည့်တတ်မယ်
  • Real project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

Kubernetes မှာ resource (pod, deployment, service) တွေကို key-value pair label တပ်နိုင်ပါတယ် — ဥပမာ `app: web`, `env: production`, `tier: frontend`. Selector ကတော့ 'ဒီ label ရှိတဲ့ resource အားလုံးကို ရွေးပါ' ဆိုတဲ့ query ပါ — Service က pod ကို ရှာတဲ့အခါ, Deployment က ကိုယ့် pod ဘယ်ဟာလဲ သိတဲ့အခါ Label/Selector ကို သုံးပါတယ်။ Label က resource name လို unique မဟုတ်ပါ — pod ၅၀ မှာ တူညီတဲ့ label ရှိနိုင်ပါတယ်, Selector က အဲဒီ ၅၀ ခုလုံးကို တစ်ပြိုင်နက် ရွေးနိုင်ပါတယ်။

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

`kubectl get pods -l app=web` ရေးရင် app=web label ပါတဲ့ pod တွေချည်း filter ကြည့်လို့ရပါတယ် — production troubleshooting လုပ်တဲ့အခါ (pod ရာနဲ့ချီရှိတဲ့ cluster) label filter က အရေးကြီးပါတယ်။ Team တွေက convention သတ်မှတ်ကြပါတယ် — `app`, `env`, `team`, `version` စတဲ့ label ကို consistent ထားရင် ရှာဖွေရလွယ်ပါတယ်။

အတူတူ ကြည့်မယ်

bash
# Filter pods by label
kubectl get pods -l app=web

# Multiple labels (AND condition)
kubectl get pods -l app=web,env=production

# Add a label to an existing pod
kubectl label pod my-first-pod team=backend

# See labels on all pods
kubectl get pods --show-labels
You should see
NAME                              READY   STATUS    LABELS
web-deployment-7d9f8c6b5-abc12    1/1     Running   app=web,env=production
web-deployment-7d9f8c6b5-def34    1/1     Running   app=web,env=production

၅ မိနစ် စမ်းကြည့်

Pod/Deployment အားလုံးကို app, env label ၂ ခု တပ်ထားပြီး `kubectl get pods -l` command အမျိုးမျိုးနဲ့ filter ကြည့်ပါ။

သတိလေးတစ်ချက်

Deployment ရဲ့ selector field ကို create ပြီးတဲ့နောက် ပြန်ပြင်လို့ မရပါ (immutable) — အစကတည်းက သေချာစဉ်းစားပြီး ရေးပါ။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Label key/value ကို team တစ်ခုလုံး consistent မရေးဘဲ တစ်ယောက်စီ ကိုယ်ပိုင်ပုံစံနဲ့ ရေးခြင်း — filter/query လုပ်ရခက်သွားပါတယ်
  • Selector ထဲမှာ label တစ်ခု spelling မှားရေးမိခြင်း (case-sensitive ဖြစ်လို့ 'App' နဲ့ 'app' က မတူပါ)

အခု ကိုယ်တိုင် စမ်းကြည့်

Pod/Deployment အားလုံးကို app, env label ၂ ခု တပ်ထားပြီး `kubectl get pods -l` command အမျိုးမျိုးနဲ့ filter ကြည့်ပါ။

You'll know it worked when: NAME READY STATUS LABELS web-deployment-7d9f8c6b5-abc12 1/1 Running app=web,env=production web-deployment-7d9f8c6b5-def34 1/1 Running app=web,env=production

Labels & Selectors | Thuta Learning