Getting Started with Kubernetes

K8s Cluster Architecture

K8s Architecture

Kubernetes ဆိုတာကတော့ open-source container orchestration tools တစ်ခုပဲဖြစ်ပါတယ်။ Container တွေကိုထိန်းကျောင်းမောင်းနှင်ပေးနိုင်သော Container Orchestrator လို့လည်းခေါ်ကြပါတယ်။

Kubernetes Cluster တွေဟာ Physical Server or Virtual Machine တွေကို စုပေါင်းထားပြီး အလုပ်တွေကို အတူတကွလုပ်ဆောင်နိုင်မယ့် Computer အစုအဝေးပဲ ဖြစ်ပါတယ်။ Kubernetes Cluster တွင် Master Node (Control Plane) & Worker Node (Minion) ဆိုပြီး ရှိပါတယ်။

Master Node (Control Plane)

Master Node ဆိုတာကတော့ Kubernetes Cluster ရဲ့ Control Plane ဖြစ်ပြီးတော့ Cluster တစ်ခုလုံးကို Control & Manage လုပ်ပါတယ်။ Master Node မှာဆိုရင် အကြမ်းဖျင်းအားဖြင့် အပိုင်း (၄) ပိုင်းကို အဓိကလုပ်ဆောင်ပေးပါတယ်။Kubernetes Cluster ရဲ့အဓိကလုပ်ဆောင်ပေးတယ့် အချက်တွေကတော့ -

  • API Server

  • Controller Manager

  • Scheduler

  • Etcd တို့ပဲဖြစ်ပါတယ်။

API Server

API Server ကတော့ Cluster အတွင်းမှာရှိတဲ့ Master Node နဲ့ Worker Node တွေမှာ ရှိတဲ့ components တွေနဲ့ Kubernetes Cluster Client တွေကြားကို အဓိကဆက်သွယ်ပေးတဲ့ components တစ်ခုပဲဖြစ်ပါတယ်။

Controller Manager

Controller Manager ကဘာလုပ်လဲဆိုတော့ Clusterအတွင်းမှာရှိတဲ့ Nodeတွေကို စောင့်ကြည့်နေပြီးတော့ Cluster Level အလုပ်တွေကို လုပ်ဆောင်ပေးပါတယ်။ တစ်နည်းအားဖြင့် Replication လုပ်ပေးပါတယ်။

Scheduler

Application တွေကို deploy လုပ်တဲ့အခါ ဘယ် worker တွေကတော့ ဘယ် Node ပေါ်မှာ deploy လုပ်ရမယ်ဆိုတာမျိုးပေါ့။ အလွယ်ပြောရရင် ကျွန်တော်တို့ရဲ့ container app လေးကို ဘယ် worker node ပေါ်မှာ deploy လုပ်ပေးမယ်ဆိုတာမျိုးကို ဆိုလိုခြင်းဖြစ်ပါတယ်။

Etcd

Etcd ကတော့ Kubernetes Cluster ကြီးတစ်ခုလုံးရဲ့ configuration တွေကို persistent ဖြစ်အောင် သိုလှောင်ထားသည့် အရာပဲဖြစ်ပါတယ်။ ဥပမာ - application တစ်ခုကိုသုံးဖို့အတွက် backend က database လိုအပ်သလိုသလိုမျိုးပေါ့။ Kubernetes Cluster ရဲ့ configuration တွေကိုလဲ Etcd ကသိမ်းဆည်းပေးထားခြင်းဖြစ်ပါတယ်။

Worker Nodes (Minion)

Worker Nodes တွေကတော့ ကျွန်တော်တို့ရဲ့ cluster ထဲမှာ application တွေကို run တဲ့အခါ worker node ပေါ်တွင် run တာပဲဖြစ်ပါတယ်။ Worker Node ရဲ့အဓိက လုပ်ဆောင်ချက်တွေကတော့ -

  • Kubelet

  • Container Runtime

  • Kube Proxy တို့ပဲဖြစ်ပါတယ်။

Kubelet

Kubelet ကတော့ Kubernetes ရဲ့ အဓိက agent ဖြစ်ပြီးတော့ Kubernetes Cluster ထဲမှာရှိတဲ့ node တိုင်းမှာ run နေမှာပဲဖြစ်ပါတယ်။ Worker Node တွေဟာ Cluster ထဲကို join မယ်ဆိုတာနဲ့ kubelet ကို အရင်ဆုံး install လုပ်ထားဖို့လိုပါတယ်။ kubelet ၏အဓိကအလုပ်များထဲမှတစ်ခုမှာ new task များကိုလက်ခံရန်အတွက် API Server ကို အမြဲစောင့်ကြည့်နေမှာပဲဖြစ်ပါတယ်။ Kubelet သည် API Server ကနေ ချပေးလိုက်တဲ့ task တွေကို လုပ်ဆောင်ပြီး Control Plane ဆီကို task and maintains အတွက် reporting လဲ ပြန်လုပ်ပေးမည်ဖြစ်ပါသည်။

Container Runtime

Container Runtime ကဘာတွေလုပ်ပေးလဲဆိုတော့ container image တွေ pulling လုပ်တာတွေ container starting or stopping စသဖြင့်ကို လုပ်ဆောင်ပေးပါတယ်။ ဒီ Container Rumtime ကို သွင်းထားမှသာ မိမိတို့အသုံးပြုချင်သည့် application တွေကို container image ကနေမှတစ်ဆင့် container အဖြစ် Run နိုင်ဖို့ အတွက် လုပ်ဆောင်ပေးမှာပဲဖြစ်ပါတယ်။ အဓိက အသုံးများတဲ့ container runtime တွေကတော့ Docker, Containerd, CRI-O တို့ပဲဖြစ်ပါတယ်။ အစပိုင်းမှာတော့ Kubernetes က သူ့ရဲ့ default container runtime ကို Docker ကိုအသုံးပြုခဲ့ပြီး v1.24 ကနေစပြီးတော့ Containerd ကိုအစားထိုးခဲ့ပါသည်။

Kube Proxy

Kube Proxy ကတော့ Kubernetes Cluster ထဲတွင် Deploy လုပ်လိုက်တဲ့ App တွေရဲ့ network traffic တွေကို လုပ်ဆောင်ပေးပါတယ်။ Node တိုင်းတွင် လုပ်ဆောင်နေမည်ဖြစ်ပြီး local cluster ထဲမှာ ရှိတဲ့ networking နဲ့ပတ်သက်တဲ့ routing နဲ့ load-balancing ကို အဓိကလုပ်ဆောင်ပေးတာပဲဖြစ်ပါတယ်။

Kubernetes DNS

Kubernetes Cluster တိုင်းရဲ့ control plane နဲ့ node components တွေကြားထဲမှာ internal အနေနဲ့ လုပ်ဆောင်ပေးတယ့် dns service ရှိပါတယ်။ Cluster ထဲမှာရှိနေတယ့် dns service ကတော့ cluster ထဲမှာ ရှိနေတယ့် pod တွေကို

Reference: - https://kubernetes.io/docs/concepts/architecture/

- the kubernetes book

Last updated