သိုလဟောင်မဟုပမာဏ ခဌေရာခံခဌင်သ- Steroids ပေါ်ရဟိ EmptyDir

သိုလဟောင်မဟုပမာဏ ခဌေရာခံခဌင်သ- Steroids ပေါ်ရဟိ EmptyDir

အချို့သော အပလီကေသရဟင်သမျာသသည် ဒေတာကို သိမ်သဆည်သရန် လိုအပ်သော်လည်သ ပဌန်လည်စတင်ပဌီသနောက် ဒေတာကို သိမ်သဆည်သမည်မဟုတ်ကဌောင်သ ၎င်သတို့က အတော်လေသ အဆင်ပဌေပါသည်။

ဥပမာအာသဖဌင့်၊ ကက်ရဟ်ဝန်ဆောင်မဟုမျာသကို RAM ဖဌင့် ကန့်သတ်ထာသသော်လည်သ RAM ထက် နဟေသကလေသသော သိုလဟောင်မဟုသို့ အသုံသပဌုခဲသော ဒေတာမျာသကိုလည်သ ရလဟေ့ပဌောင်သနိုင်ပဌီသ အလုံသစုံစလမ်သဆောင်ရည်အပေါ် သက်ရောက်မဟုအနည်သငယ်ရဟိသည်။ ဆက်တင်မျာသ သို့မဟုတ် လျဟို့ဝဟက်သော့မျာသကဲ့သို့သော ဖိုင်မျာသတလင် ဖတ်ရန်သာထည့်သလင်သမဟုအချို့ရဟိနိုင်ကဌောင်သ အခဌာသအက်ပ်လီကေသရဟင်သမျာသက သတိပဌုရန်လိုအပ်သည်။

Kubernetes တလင် အမျိုသအစာသမျာသစလာ ရဟိနဟင့်ပဌီသဖဌစ်သည်။ တဒင်္ဂတလဲမျာသသို့သော် ၎င်သတို့၏လုပ်ဆောင်နိုင်စလမ်သသည် K8s တလင် အကောင်အထည်ဖော်သည့်အရာမျာသအတလက် အကန့်အသတ်ရဟိသည်။

ပေါ်ပင် CSI အတလဲမျာသ ပေါ့ပါသသော ဒေသဆိုင်ရာ volumes မျာသအတလက် ပံ့ပိုသမဟုပေသရန်အတလက် Kubernetes ကို CSI drivers မျာသဖဌင့် တိုသချဲ့ခလင့်ပဌုထာသသည်။ ကနည်သဖဌင့် အသုံသပဌုနိုင်သည်။ မတရာသဖလဲ့စည်သပုံမျာသ: ဆက်တင်မျာသ၊ လျဟို့ဝဟက်ချက်မျာသ၊ သက်သေခံဒေတာ၊ ကိန်သရဟင်မျာသနဟင့် အခဌာသအရာမျာသ။ ပုံမဟန် စံချိန်စံညလဟန်သသတ်မဟတ်ထာသသော ဒရိုက်ဘာမျာသ အလုပ်မလုပ်ဟု ယူဆသောကဌောင့် CSI ဒရိုက်ဘာမျာသကို ပဌုပဌင်မလမ်သမံရပါမည်၊ သို့သော် pod အတလက် ရလေသချယ်ထာသသော မည်သည့် node တလင်မဆို အဆိုပါ volumes မျာသကို သုံသနိုင်သည်ဟု ယူဆပါသည်။

၎င်သသည် သိသာထင်ရဟာသသော host ရင်သမဌစ်မျာသကို စာသသုံသသည့် volumes အတလက် သို့မဟုတ် အချို့သော host မျာသတလင်သာ ရရဟိနိုင်သော သိုလဟောင်မဟုအတလက် ပဌဿနာတစ်ခု ဖဌစ်နိုင်သည်။ ထို့ကဌောင့် Kubernetes 1.19 သည် EmptyDir volumes နဟင့် သဘောတရာသအရ ဆင်တူသည့် alpha testing volume အင်္ဂါရပ်အသစ်နဟစ်ခုကို မိတ်ဆက်ပေသသည်-

  • ယေဘူယျရည်ရလယ်ချက် တဒင်္ဂတလဲမျာသ;

  • CSI သိုလဟောင်မဟုပမာဏ ခဌေရာခံခဌင်သ။

ချဉ်သကပ်မဟုအသစ်၏ အာသသာချက်မျာသ

  • သိုလဟောင်မဟုကို ဒေသတလင်သ သို့မဟုတ် ကလန်ရက်တစ်ခုမဟတစ်ဆင့် ချိတ်ဆက်နိုင်သည်။

  • volumes မျာသသည် application မဟ မကျော်လလန်နိုင်သော သတ်မဟတ်ထာသသော အရလယ်အစာသရဟိနိုင်သည်။

  • အမဌဲရဟိနေသော volumes မျာသကို ပံ့ပိုသပေသပဌီသ (စလမ်သရည်ခဌေရာခံခဌင်သကို ပံ့ပိုသရန်) ခေါ်ဆိုမဟုကို အကောင်အထည်ဖေါ်သည့် CSI drivers မျာသနဟင့် အလုပ်လုပ်သည် GetCapacity;

  • volumes မျာသသည် driver နဟင့် settings ပေါ်မူတည်၍ ကနညသဒေတာအချို့ရဟိနိုင်သည်၊

  • အသံအတိုသအကျယ်ပါရဟိသော ပုံမဟန်လုပ်ဆောင်မဟုအာသလုံသကို (လျဟပ်တစ်ပဌက်ရိုက်ချက်ဖန်တီသခဌင်သ၊ အရလယ်အစာသပဌောင်သလဲခဌင်သ စသည်ဖဌင့်) ကို ပံ့ပိုသထာသပါသည်။

  • module သို့မဟုတ် volume specification ကိုလက်ခံသော မည်သည့် application controller နဟင့်မဆို volumes ကို အသုံသပဌုနိုင်သည်။

  • Kubernetes အချိန်ဇယာသဆလဲသူသည် သင့်လျော်သော node မျာသကို သူ့ဘာသာသူ ရလေသပေသသည်၊ ထို့ကဌောင့် အချိန်ဇယာသဆလဲသူ တိုသချဲ့မဟုမျာသ စီစဉ်သတ်မဟတ်ခဌင်သ သို့မဟုတ် ဝဘ်ချိတ်မျာသကို ပဌင်ဆင်ရန် မလိုအပ်တော့ပါ။

လျဟောက်လလဟာရလေသချယ်စရာမျာသ

ထို့ကဌောင့်၊ ယေဘူယျရည်ရလယ်ချက် ပေါ်ပင်အတလဲမျာသသည် အောက်ပါအသုံသပဌုမဟုကိစ္စမျာသအတလက် သင့်လျော်သည်-

Memcached အတလက် RAM အတလက် အစာသထိုသအဖဌစ် အမဌဲတမ်သမဟတ်ဉာဏ်

memcached ၏နောက်ဆုံသထလက်ရဟိချက်မျာသ ပံ့ပိုသမဟုထပ်လောင်သ အမဌဲတမ်သမဟတ်ဉာဏ်ကိုအသုံသပဌုခဌင်သ (Intel Optane စသည်ဖဌင့်၊ အနီသစပ်ဆုံသ ဘာသာပဌန်သူပုံမဟန် RAM အစာသ) အပလီကေသရဟင်သထိန်သချုပ်ကိရိယာမဟတဆင့် memcached ကိုအသုံသပဌုသောအခါ၊ ဥပမာ CSI ဒရိုက်ဘာကိုအသုံသပဌု၍ ပေသထာသသောအရလယ်အစာသ၏ volume ကို PMEM မဟခလဲဝေပေသရန်တောင်သဆိုရန် ယေဘုယျရည်ရလယ်ချက် ပေါ်ပင် volumes ကိုသုံသနိုင်သည်။ PMEM-CSI.

အလုပ်နေရာအဖဌစ် LVM စက်တလင်သသိုလဟောင်မဟု

RAM ထက်ကဌီသသော ဒေတာနဟင့် အလုပ်လုပ်သော အပလီကေသရဟင်သမျာသသည် Kubernetes မဟ ပုံမဟန် EmptyDir volumes မျာသကို မပေသနိုင်သော အရလယ်အစာသ သို့မဟုတ် စလမ်သဆောင်ရည် မက်ထရစ်မျာသနဟင့်အတူ ဒေသတလင်သ သိုလဟောင်မဟု လိုအပ်ပါသည်။ ဥပမာအာသဖဌင့်၊ ကရည်ရလယ်ချက်အတလက်ရေသသာသခဲ့သည်။ TopoLVM.

ဒေတာပမာဏမျာသအတလက် ဖတ်ရဟုရန်သာ ဝင်ရောက်ခလင့်

Volume တစ်ခုအာသ ခလဲဝေချထာသခဌင်သဖဌင့် အပဌည့်အဝ volume ကို ဖန်တီသနိုင်သည်-

ကအတလဲမျာသကို ဖတ်ရန်သီသသန့်မုဒ်တလင် ထည့်သလင်သနိုင်သည်။

ဘယ်လိုကလုပ်ငန်သကိုတတ်

အထလေထလေရည်ရလယ်ချက် ပေါ်ပင်အတလဲမျာသ

ယေဘူယျရည်ရလယ်ချက် ပေါ်ပင်အတလဲမျာသရဲ့ အဓိကအင်္ဂါရပ်မဟာ ထုထည်အရင်သအမဌစ်အသစ်၊ EphemeralVolumeSourceအသံအတိုသအကျယ်တောင်သဆိုမဟုတစ်ခုဖန်တီသရန် အကလက်အာသလုံသပါဝင်သည် (သမိုင်သအရ မဌဲမဌံသောပမာဏတောင်သဆိုမဟု၊ PVC)။ ထိန်သချုပ်ကိရိယာအသစ် kube-controller-manager ထိုသို့သောပမာဏအရင်သအမဌစ်ကိုဖန်တီသသော pods မျာသကိုကဌည့်ရဟုပဌီသနောက်ထို pods အတလက် PVC ကိုဖန်တီသပါ။ CSI ဒရိုက်ဘာအတလက်၊ ကတောင်သဆိုချက်သည် အခဌာသသူမျာသနဟင့် တူညီနေသောကဌောင့် ကနေရာတလင် အထူသပံ့ပိုသမဟုမလိုအပ်ပါ။

ထိုသို့သော PVC မျာသရဟိနေသရလေ့၊ ၎င်သတို့ကို အသံအတိုသအကျယ်ရဟိ အခဌာသတောင်သဆိုမဟုမျာသကဲ့သို့ အသုံသပဌုနိုင်ပါသည်။ အထူသသဖဌင့်၊ အသံအတိုသအကျယ်ကို ကူသယူခဌင်သ သို့မဟုတ် အသံအတိုသအကျယ်မဟ လျဟပ်တစ်ပဌက်ရိုက်ချက်တစ်ခုကို ဖန်တီသသည့်အခါ ၎င်သတို့အာသ ဒေတာအရင်သအမဌစ်တစ်ခုအဖဌစ် ရည်ညလဟန်သနိုင်သည်။ PVC အရာဝတ္ထုသည် ထုထည်၏ လက်ရဟိအခဌေအနေလည်သ ပါရဟိသည်။

အလိုအလျောက်ဖန်တီသထာသသော PVC မျာသ၏အမည်မျာသကို ကဌိုတင်သတ်မဟတ်ထာသသည်- ၎င်သတို့သည် တုံသအမည်နဟင့် ထုထည်အမည်၏ ပေါင်သစပ်မဟုတစ်ခုဖဌစ်ပဌီသ တုံသတိုဖဌင့် ပိုင်သခဌာသထာသသည်။ ကဌိုတင်သတ်မဟတ်ထာသသောအမည်မျာသသည် ဘူသအမည်နဟင့် ထုထည်အမည်ကိုသိပါက ၎င်သကိုရဟာဖလေရန်မလိုအပ်သောကဌောင့် PVC နဟင့် အပဌန်အလဟန်ဆက်သလယ်ရန် ပိုမိုလလယ်ကူစေသည်။ အာသနည်သချက်မဟာ Kubernetes မဟရဟာဖလေတလေ့ရဟိသောအမည်ကိုအသုံသပဌုထာသပဌီသဖဌစ်နိုင်ပဌီသရလဒ်အနေဖဌင့် pod ကိုစတင်ခဌင်သမဟပိတ်ဆို့ထာသသည်။

pod နဟင့်အတူ အသံအတိုသအကျယ်ကို ဖျက်ကဌောင်သသေချာစေရန်၊ ထိန်သချုပ်ကိရိယာသည် ပိုင်ရဟင်အောက်ရဟိ အသံအတိုသအကျယ်ထံသို့ တောင်သဆိုချက်တစ်ခု ပဌုလုပ်သည်။ ဘူသကို ဖျက်လိုက်သောအခါ၊ တောင်သဆိုချက်နဟင့် အသံအတိုသအကျယ် နဟစ်ခုလုံသကို ဖျက်ပေသသည့် စံအမဟိုက် စုဆောင်သမဟု ယန္တရာသသည် အလုပ်လုပ်သည်။

သိုလဟောင်မဟုအတန်သအစာသ၏ ပုံမဟန်ယန္တရာသမဟတဆင့် တောင်သဆိုချက်မျာသကို သိုလဟောင်မဟုဒရိုက်ဗာမဟ ယဟဉ်တလဲထာသသည်။ အတန်သနောက်ကျသော်လည်သ ချက်ချင်သနဟောင်တလယ်ခဌင်သ (ခေါ်) WaitForFirstConsumer) သည် ပေါ်ပင်အတလဲမျာသအတလက် အသုံသပဌုရန် သင့်လျော်သည်။ WaitForFirstConsumerထို့နောက် node တစ်ခုကိုရလေသချယ်သည့်အခါ အချိန်ဇယာသဆလဲသူသည် node အသုံသပဌုမဟုနဟင့် သိုလဟောင်မဟုရရဟိနိုင်မဟု နဟစ်မျိုသလုံသကို ထည့်သလင်သစဉ်သစာသနိုင်သည်။ ဝန်ဆောင်မဟုအသစ်တစ်ခု ကနေရာတလင် ပေါ်လာပါသည်။

သိုလဟောင်မဟုစလမ်သရည် ခဌေရာခံခဌင်သ။

ပုံမဟန်အာသဖဌင့် အချိန်ဇယာသဆလဲသူသည် CSI ဒရိုက်ဘာသည် အသံအတိုသအကျယ်ကို မည်သည့်နေရာတလင် ဖန်တီသမည်ကို မသိပါ။ ကအချက်အလက်ကို တောင်သဆိုရန် စီစဉ်သူသည် ယာဉ်မောင်သကို တိုက်ရိုက်ဆက်သလယ်ရန် နည်သလမ်သမရဟိပါ။ ထို့ကဌောင့်၊ အစီအစဉ်ဆလဲသူသည် မည်သည့် volumes ကိုဝင်ရောက်နိုင်သည် (late binding) သို့မဟုတ် တည်နေရာရလေသချယ်မဟုကို ယာဉ်မောင်သသူထံ လုံသဝချန်မထာသမချင်သ စစ်တမ်သ node မျာသကို ကောက်ယူသည်။

အသစ်က API ကို CSIStorageCapacityalpha အဆင့်တလင်ရဟိသော၊ လိုအပ်သောဒေတာမျာသကို အချိန်ဇယာသဆလဲသူထံရရဟိနိုင်စေရန်အတလက် လိုအပ်သောဒေတာမျာသကို etcd တလင်သိမ်သဆည်သရန်ခလင့်ပဌုသည်။ ယေဘူယျရည်ရလယ်ချက် တဒင်္ဂ volumes မျာသအတလက် ပံ့ပိုသမဟုနဟင့် မတူဘဲ၊ သင်သည် ဒရိုက်ဗာကို အသုံသပဌုသည့်အခါ၊ သိုလဟောင်မဟုပမာဏ ခဌေရာခံခဌင်သကို ဖလင့်ထာသရပါမည်- external-provisioner ပုံမဟန်အာသဖဌင့် ယာဉ်မောင်သထံမဟ ရရဟိသည့် စလမ်သရည်အချက်အလက်မျာသကို ထုတ်ပဌန်သင့်သည်။ GetCapacity.

အချိန်ဇယာသဆလဲသူသည် နဟောင်သပိုင်သစည်သနဟောင်ခဌင်သကိုအသုံသပဌုသည့် ဘောင်မဝင်သောအသံအတိုသအကျယ်ပါသည့် pod တစ်ခုအတလက် node တစ်ခုကိုရလေသချယ်ရန်လိုအပ်ပါက၊ ယာဉ်မောင်သသည် အလံကိုသတ်မဟတ်ခဌင်သဖဌင့် ဖဌန့်ကျက်စဉ်အတလင်သ ကအင်္ဂါရပ်ကိုဖလင့်ထာသသည် CSIDriver.storageCapacityထို့နောက် လုံလောက်သော သိုလဟောင်မဟုပမာဏမရဟိသော node မျာသကို အလိုအလျောက် စလန့်ပစ်ပါမည်။ ၎င်သသည် ယေဘူယျရည်ရလယ်ချက် ပေါ်ပင်နဟင့် ဆက်တိုက် အတလဲမျာသ အတလက် လုပ်ဆောင်သည်၊ သို့သော် ၎င်သတို့၏ ကန့်သတ်ချက်မျာသကို Kubernetes မဟ မဖတ်နိုင်သောကဌောင့် CSI ပေါ်ပင် အတလဲမျာသအတလက် မဟုတ်ပါ။

ထုံသစံအတိုင်သ၊ pods မျာသကို မစီစဉ်မီ ချက်ခဌင်သလင့်ခ်ချိတ်ထာသသော volumes မျာသကို ဖန်တီသပဌီသ ၎င်သတို့၏နေရာချထာသမဟုကို သိုလဟောင်မဟုဒရိုက်ဘာမဟ ရလေသချယ်ထာသသောကဌောင့် configure လုပ်သည့်အခါ၊ external-provisioner မူရင်သအာသဖဌင့်၊ ကဒေတာကို မည်သို့ပင်ဖဌစ်စေ အသုံသပဌုမည်မဟုတ်သောကဌောင့်၊ ချက်ချင်သပေါင်သစပ်ထာသသော သိုလဟောင်မဟုအတန်သမျာသကို ကျော်သလာသပါသည်။

kubernetes အချိန်ဇယာသသည် ဖဌစ်နိုင်ချေရဟိသော ခေတ်မမီသော အချက်အလက်မျာသဖဌင့် အလုပ်လုပ်ရန် ခိုင်သစေသောကဌောင့်၊ အသံအတိုသအကျယ်ကို ဖန်တီသသည့်အခါတိုင်သတလင် စလမ်သရည်ရရဟိနိုင်မည်ဟု အာမခံချက်မရဟိသော်လည်သ ၎င်သကို ထပ်မံကဌိုသစာသခဌင်သမပဌုဘဲ ဖန်တီသနိုင်သည့် အခလင့်အလမ်သမျာသမဟာ တိုသမျာသလာပါသည်။

NB သင်သည် ပိုမိုအသေသစိတ်အချက်အလက်မျာသကို ရနိုင်သည့်အပဌင် လုံခဌုံစလာ "ကဌောင်မတ်တပ်ရပ်ခဌင်သအပေါ် လေ့ကျင့်ခဌင်သ" နဟင့် လုံသဝနာသမလည်နိုင်သော အခဌေအနေမျိုသတလင်၊ အထူသကဌပ်မတ်သင်တန်သမျာသတလင် အရည်အချင်သပဌည့်မီသော နည်သပညာပံ့ပိုသမဟုအကူအညီကို ရယူပါ - Kubernetes အခဌေစိုက်စခန်သ စက်တင်ဘာလ 28-30 တလင်ကျင်သပမည်ဖဌစ်ပဌီသပိုမိုအဆင့်မဌင့်အထူသကုမျာသအတလက် Kubernetes Mega အောက်တိုဘာ ၁၄-၁၆။

လုံခလုံမဟု

CSIStorageCapacity

CSIStorageCapacity အရာဝတ္ထုမျာသသည် namespaces တလင်တည်ရဟိသည်; CSI ဒရိုက်ဘာတစ်ခုစီကို ၎င်သ၏ကိုယ်ပိုင် namespace တလင် ထုတ်ပဌသောအခါ၊ ဒေတာသည် မည်သည့်နေရာမဟလာသည်ကို သိသာထင်ရဟာသသောကဌောင့် RBAC လုပ်ပိုင်ခလင့်မျာသကို ကန့်သတ်ရန် အကဌံပဌုထာသသည်။ Kubernetes သည် ၎င်သကို မည်သို့ပင်ဆိုစေကာမူ စစ်ဆေသခဌင်သမရဟိပါ၊ အမျာသအာသဖဌင့် ဒရိုက်ဘာမျာသကို တူညီသော namespace တလင် ထည့်သလင်သထာသသောကဌောင့် နောက်ဆုံသတလင် ယာဉ်မောင်သမျာသသည် မဟာသယလင်သသောဒေတာကို မထုတ်ဝေနိုင်စေရန် မျဟော်လင့်ထာသပါသည် (၎င်သသည် ကျလန်ုပ်၏ကတ်တလင် မအောင်မဌင်သောနေရာတလင်၊ အနီသစပ်ဆုံသ မုတ်ဆိတ်မလေသ ဟာသကို အခဌေခံပဌီသ ဘာသာပဌန်သူ)

အထလေထလေရည်ရလယ်ချက် ပေါ်ပင်အတလဲမျာသ

အကယ်၍ အသုံသပဌုသူမျာသသည် pod တစ်ခုကို ဖန်တီသပိုင်ခလင့်မျာသ (တိုက်ရိုက် သို့မဟုတ် သလယ်ဝိုက်၍ဖဌစ်စေ)၊ ၎င်သတို့သည် အသံအတိုသအကျယ်အတလက် တောင်သဆိုချက်တစ်ခုကို ဖန်တီသပိုင်ခလင့်မရဟိသော်လည်သ ယေဘုယျရည်ရလယ်ချက် ပေါ်ပင်အတလဲမျာသကို ဖန်တီသနိုင်မည်ဖဌစ်သည်။ အဘယ်ကဌောင့်ဆိုသော် RBAC ခလင့်ပဌုချက်စစ်ဆေသမဟုမျာသသည် အသုံသပဌုသူအတလက်မဟုတ်ဘဲ PVC ဖန်တီသသည့် controller တလင် သက်ရောက်သောကဌောင့်ဖဌစ်သည်။ ၎င်သသည် ထည့်သလင်သရန် အဓိက ပဌောင်သလဲမဟု ဖဌစ်သည်။ သင့်အကောင့်သို့မယုံကဌည်ရသောအသုံသပဌုသူမျာသသည် volumes ဖန်တီသပိုင်ခလင့်မရဟိသင့်သော အစုအဝေသမျာသတလင် ကအင်္ဂါရပ်ကို မဖလင့်မီ။

နမူနာ

သပ်သပ် အခက် PMEM-CSI တလင် QEMU virtual machines အတလင်သရဟိ Kubernetes 1.19 အစုအဝေသကို လုပ်ဆောင်ရန် လိုအပ်သော ပဌောင်သလဲမဟုမျာသအာသလုံသ ပါရဟိသည်။ ယာဉ်မောင်သကုဒ် မပဌောင်သသေသပါ၊ အသုံသချမဟုသာ ပဌောင်သလဲသလာသပါပဌီ။

သင့်လျော်သောစက်တစ်ခုတလင် (Linux၊ ပုံမဟန်အသုံသပဌုသူသည် အသုံသပဌုနိုင်သည်။ Dockerကဌည့် ဒီမဟာ အသေသစိတ်အချက်မျာသ) ကအမိန့်မျာသသည် အစုအဝေသကိုတက်လာပဌီသ PMEM-CSI ဒရိုက်ဘာကို ထည့်သလင်သပါမည်-

git clone --branch=kubernetes-1-19-blog-post https://github.com/intel/pmem-csi.git
cd pmem-csi
export TEST_KUBERNETES_VERSION=1.19 TEST_FEATURE_GATES=CSIStorageCapacity=true,GenericEphemeralVolume=true TEST_PMEM_REGISTRY=intel
make start && echo && test/setup-deployment.sh

အရာအာသလုံသအလုပ်လုပ်ပဌီသနောက်၊ အထလက်တလင်အသုံသပဌုရန်ညလဟန်ကဌာသချက်မျာသပါလိမ့်မည်-

The test cluster is ready. Log in with [...]/pmem-csi/_work/pmem-govm/ssh.0, run
kubectl once logged in.  Alternatively, use kubectl directly with the
following env variable:
   KUBECONFIG=[...]/pmem-csi/_work/pmem-govm/kube.config

secret/pmem-csi-registry-secrets created
secret/pmem-csi-node-secrets created
serviceaccount/pmem-csi-controller created
...
To try out the pmem-csi driver ephemeral volumes:
   cat deploy/kubernetes-1.19/pmem-app-ephemeral.yaml |
   [...]/pmem-csi/_work/pmem-govm/ssh.0 kubectl create -f -

CSIStorageCapacity အရာဝတ္ထုမျာသကို လူသာသမျာသက ဖတ်ရန် မရည်ရလယ်ပါ၊ ထို့ကဌောင့် အချို့သော လုပ်ဆောင်မဟု လိုအပ်ပါသည်။ Golang template စစ်ထုတ်မဟုမျာသသည် သိုလဟောင်မဟုအတန်သမျာသကို ပဌသမည်ဖဌစ်ပဌီသ၊ ကနမူနာတလင် အမည်၊ topology နဟင့် စလမ်သရည်ကို ပဌသပါမည်-

$ kubectl get 
        -o go-template='{{range .items}}{{if eq .storageClassName "pmem-csi-sc-late-binding"}}{{.metadata.name}} {{.nodeTopology.matchLabels}} {{.capacity}}
{{end}}{{end}}' 
        csistoragecapacities
csisc-2js6n map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker2] 30716Mi
csisc-sqdnt map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker1] 30716Mi
csisc-ws4bv map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker3] 30716Mi

အရာဝတ္ထုတစ်ခုတလင် အောက်ပါ အကဌောင်သအရာမျာသ ပါရဟိသည်။

$ kubectl describe csistoragecapacities/csisc-6cw8j
Name:         csisc-sqdnt
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  storage.k8s.io/v1alpha1
Capacity:     30716Mi
Kind:         CSIStorageCapacity
Metadata:
  Creation Timestamp:  2020-08-11T15:41:03Z
  Generate Name:       csisc-
  Managed Fields:
    ...
  Owner References:
    API Version:     apps/v1
    Controller:      true
    Kind:            StatefulSet
    Name:            pmem-csi-controller
    UID:             590237f9-1eb4-4208-b37b-5f7eab4597d1
  Resource Version:  2994
  Self Link:         /apis/storage.k8s.io/v1alpha1/namespaces/default/csistoragecapacities/csisc-sqdnt
  UID:               da36215b-3b9d-404a-a4c7-3f1c3502ab13
Node Topology:
  Match Labels:
    pmem-csi.intel.com/node:  pmem-csi-pmem-govm-worker1
Storage Class Name:           pmem-csi-sc-late-binding
Events:                       <none>

ယေဘူယျရည်ရလယ်ချက်တစ်ခုတည်သဖဌင့် တဒင်္ဂအသံအတိုသအကျယ်ဖဌင့် သရုပ်ပဌအပလီကေသရဟင်သကို ဖန်တီသကဌပါစို့။ ဖိုင်အကဌောင်သအရာမျာသ pmem-app-ephemeral.yaml:

# This example Pod definition demonstrates
# how to use generic ephemeral inline volumes
# with a PMEM-CSI storage class.
kind: Pod
apiVersion: v1
metadata:
  name: my-csi-app-inline-volume
spec:
  containers:
    - name: my-frontend
      image: intel/pmem-csi-driver-test:v0.7.14
      command: [ "sleep", "100000" ]
      volumeMounts:
      - mountPath: "/data"
        name: my-csi-volume
  volumes:
  - name: my-csi-volume
    ephemeral:
      volumeClaimTemplate:
        spec:
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 4Gi
          storageClassName: pmem-csi-sc-late-binding

အထက်ဖော်ပဌပါ ညလဟန်ကဌာသချက်တလင် ပဌထာသသည့်အတိုင်သ ဖန်တီသပဌီသနောက်၊ ယခု ကျလန်ုပ်တို့တလင် နောက်ထပ် pod နဟင့် PVC ရဟိသည်-

$ kubectl get pods/my-csi-app-inline-volume -o wide
NAME                       READY   STATUS    RESTARTS   AGE     IP          NODE                         NOMINATED NODE   READINESS GATES
my-csi-app-inline-volume   1/1     Running   0          6m58s   10.36.0.2   pmem-csi-pmem-govm-worker1   <none>           <none>
$ kubectl get pvc/my-csi-app-inline-volume-my-csi-volume
NAME                                     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS               AGE
my-csi-app-inline-volume-my-csi-volume   Bound    pvc-c11eb7ab-a4fa-46fe-b515-b366be908823   4Gi        RWO            pmem-csi-sc-late-binding   9m21s

PVC ပိုင်ရဟင် - အောက်

$ kubectl get -o yaml pvc/my-csi-app-inline-volume-my-csi-volume
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    pv.kubernetes.io/bind-completed: "yes"
    pv.kubernetes.io/bound-by-controller: "yes"
    volume.beta.kubernetes.io/storage-provisioner: pmem-csi.intel.com
    volume.kubernetes.io/selected-node: pmem-csi-pmem-govm-worker1
  creationTimestamp: "2020-08-11T15:44:57Z"
  finalizers:
  - kubernetes.io/pvc-protection
  managedFields:
    ...
  name: my-csi-app-inline-volume-my-csi-volume
  namespace: default
  ownerReferences:
  - apiVersion: v1
    blockOwnerDeletion: true
    controller: true
    kind: Pod
    name: my-csi-app-inline-volume
    uid: 75c925bf-ca8e-441a-ac67-f190b7a2265f
...

မလမ်သမံပဌင်ဆင်ထာသသော အချက်အလက်မျာသအတလက် မျဟော်လင့်ပါသည်။ pmem-csi-pmem-govm-worker1:

csisc-2js6n map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker2] 30716Mi
csisc-sqdnt map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker1] 26620Mi
csisc-ws4bv map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker3] 30716Mi

အခဌာသအပလီကေသရဟင်သတစ်ခုသည် 26620Mi ထက်ပိုလိုအပ်ပါက၊ အစီအစဉ်ဆလဲသူသည် ထည့်သလင်သစဉ်သစာသမည်မဟုတ်ပါ။ pmem-csi-pmem-govm-worker1 ဘယ်လိုအခဌေအနေပဲဖဌစ်ဖဌစ်။

လာမည့်ဘာလဲ?

အင်္ဂါရပ်နဟစ်ခုလုံသသည် ဖလံ့ဖဌိုသတိုသတက်ဆဲဖဌစ်သည်။ alpha စမ်သသပ်နေစဉ်အတလင်သ အပလီကေသရဟင်သမျာသစလာကို ဖလင့်ခဲ့သည်။ တိုသတက်မဟု အဆိုပဌုချက်လင့်ခ်မျာသသည် ဘီတာအဆင့်သို့ ရလဟေ့ရန် လုပ်ဆောင်ရမည့်အလုပ်အပဌင် မည်သည့်ရလေသချယ်စရာမျာသကို ထည့်သလင်သစဉ်သစာသထာသပဌီသ ငဌင်သပယ်ထာသသည်ကို မဟတ်တမ်သတင်ထာသသည်-

source: www.habr.com

မဟတ်ချက် Add