Wednesday, February 3, 2021

What I learned about Kubernetes - Multi Container and Init Container

                 ဒီ article မှာတော့ Kubernetes ရဲ့ multi-container နဲ့ init-container အကြောင်းလေးကိုပြောသွားမှာဖြစ်ပါတယ်။

So, What's multi container in kubernetes?

            multi-container ဆိုတာက kubernetes ရဲ့ Pod တစ်ခုအတွင်းမှာ တစ်ခုထက်ပိုတဲ့ container တွေ ထားပြီး အသုံးပြတာဖြစ်ပါတယ်။ ပုံမှန်အားဖြင့် Pod တစ်ခု container တစ်ခု သတ်မှတ်ပေမယ့်လဲ တစ်ချို့ အခြေအနေတွေမှာဆိုရင်လဲ Pod တစ်ခု အတွင်းမှာ multi-container အသုံးပြုလို့ရပါတယ်။ ဆိုတော့ Pod တစ်ခု အတွင်းမှာ "main" container နဲ့ "sidecar" container ဆိုပြီး main container ကို အထောက်အပံ့ ပေးတဲ့ container အနေနဲ့ တည်ဆောက်ပါတယ်။

            ဒီလိုအခြေနေမျိုးမှာ Pod တစ်ခုအတွင်းရှိ container နှစ်ခု အချင်းချင်း communicate လုပ်ဖို့အတွက် i.e volume sharing, network services etc.. တွေအတွက် သီးခြား setup လုပ်ပေးစရာမလိုပါဘူး။

So, How to create a multi-container pod?

            Multi container pod ဖန်တီး ဖို့အတွက် definition file ထဲက spec: array အောက်မှာ နောက်ထပ် container တစ်ခု ထပ်ထည့်ပြီး creat လုပ်တာဖြစ်ပါတယ်။ အောက်ပုံမှာဆိုရင် Pod definition file ထဲမှာ main container ဆိုပြီး "nginx" app နဲ့ caching service ကို လုပ်ဆောင်ပေးမယ့် "redis" app နှစ်ခု ကို ဥပမာအနေနဲ့ တည်ဆောက်ပြထားတာဖြစ်ပါတယ်။


What is another type called Init-container in kubernetes?

                Init-container သည်လဲပဲ multi-container လိုမျိုးပဲ Pod တစ်ခုအတွင်းမှာ တစ်ခုထက်ပိုတဲ့ containers  တွေ တည်ဆောက်ပြီး အသုံးပြုတဲ့ ပုံစံမျိုးဖြစ်ပါတယ်။ multi-container type နဲ့ မတူညီတဲ့အချက်က multi-container က Pod တစ်ခုအတွင်းမှာ ရှိတဲ့ container နှစ်ခုဆို နှစ်ခု စလုံး running ဖြစ်နေရမှာဖြစ်ပြီး container နှစ်ခု ရှိရင် နှစ်ခု ထဲက တစ်ခု failed ဖြစ်ပါက Pod restart ကျသွားမှာဖြစ်ပါတယ်။

                 init-container type ကျတော့ Pod တစ်ခုအတွင်း container နှစ်ခု စလုံး အမြဲတမ်း running ဖြစ်နေစရာမလိုပဲ  main container process မစတင်ခင်မှာ init-container ရဲ့ process က အရင် run ပြီး complete ဖြစ်ရမှာဖြစ်ပါတယ်။ ဥပမာအားဖြင့် main container အတွက် လိုအပ်တဲ့ codes or binariesတွေကို pulling လုပ်ပေးတဲ့ container လိုမျိုး တွေဆိုရင် သူတို့ရဲ့ process က အမြဲတမ်း running ဖြစ်နေဖို့မလိုပါဘူး။

                အောက်ပုံမှာဆိုရင် main-container တစ်ခုနဲ့ init-container တစ်ခု ပါရှိပါတယ်။ Init-container process က အရင် running ဖြစ်နေတဲ့အချိန်မှာ main-container process သည် pending state ဖြစ်နေတာကိုတွေ့မှာဖြစ်ပါတယ်။ Init-container ရဲ့ process ပြီးသွားမှသာ main-container process သည် running စဖြစ်တာကိုတွေ့ရမှာဖြစ်ပါတယ်။ 




For your detail information, pls follow this guide 

https://kubernetes.io/docs/concepts/workloads/pods/init-containers/

ဒါကတော့ kubernetes ရဲ့ multi-container နဲ့ init-container အကြောင်းကိုရှင်းပြထားတာဖြစ်ပါတယ်။

That's it 😊


Pls Like and Subscribe Our Root Of Info FB Page and Youtube Channel


https://www.facebook.com/rootofinfo


https://www.youtube.com/channel/UCkOi7WxhUBKONv3uD0CvuWw?view_as=subscriber


Thank you!!!



Share:

0 comments:

Post a Comment