Kubernetes ရှိ ပြည်နယ်အလိုက် အပလီကေးရှင်းများနှင့် ပြဿနာ
အပလီကေးရှင်းများနှင့် ဝန်ဆောင်မှုများကို ဖွဲ့စည်းတည်ဆောက်ပုံ၊ စတင်ခြင်းနှင့် ထပ်ဆင့်ချဲ့ထွင်ခြင်းသည် နိုင်ငံမဲ့အဖြစ် ခွဲခြားထားသော ကိစ္စများတွင် လွယ်ကူပါသည်။ ဒေတာသိမ်းဆည်းခြင်းမရှိဘဲ။ တိကျသော သို့မဟုတ် မှော်အတတ်များ မပါဝင်ဘဲ စံဖွဲ့စည်းပုံများအတိုင်း အရာအားလုံး "အပြင်မှာ" ဖြစ်နေသောကြောင့်၊ ၎င်း၏ စံ API များကို အသုံးပြုကာ Kubernetes တွင် ထိုသို့သောဝန်ဆောင်မှုများကို လုပ်ဆောင်ရန် အဆင်ပြေပါသည်။
ရိုးရိုးရှင်းရှင်းပြောရလျှင် PHP/Ruby/Python တွင် backend ကော်ပီငါးခုကို ကွန်တိန်နာအစုအဝေးတစ်ခုတွင် စတင်ရန်၊ သင်သည် ဆာဗာအသစ်တစ်ခုကို 5 ကြိမ်သတ်မှတ်ပြီး အရင်းအမြစ်များကို ကူးယူရန် လိုအပ်သည်။ အရင်းအမြစ်ကုဒ်နှင့် init script နှစ်ခုလုံးသည် ပုံတွင် ပါရှိသောကြောင့်၊ နိုင်ငံမဲ့အက်ပလီကေးရှင်းကို အတိုင်းအတာချဲ့ခြင်းသည် လုံးဝအခြေခံဖြစ်လာသည်။ ကွန်တိန်နာများနှင့် မိုက်ခရိုဆားဗစ်ဗိသုကာလက်ရာများကို ပရိတ်သတ်များ ကောင်းစွာသိသည်နှင့်အမျှ အခက်အခဲက စတင်သည်။ ပြည်နယ်ဆိုင်ရာအက်ပ်များ, i.e. ဒေတာဘေ့စ်များနှင့် ကက်ရှ်များ (MySQL၊ PostgreSQL၊ Redis၊ ElasticSearch၊ Cassandra... ၎င်းသည် quorum အစုအဝေး (ဥပမာ၊ Percona XtraDB နှင့် Cassandra) ကို သီးခြားလုပ်ဆောင်သည့် ဆော့ဖ်ဝဲလ်နှစ်ခုလုံးနှင့် သက်ဆိုင်သည် (ဥပမာ Redis၊ MySQL၊ PostgreSQL...) ကဲ့သို့သော သီးခြားစီမံခန့်ခွဲမှုအသုံးအဆောင်များ လိုအပ်သည့် ဆော့ဖ်ဝဲနှစ်ခုစလုံးနှင့် သက်ဆိုင်ပါသည်။
အရင်းအမြစ်ကုဒ်နှင့် ဝန်ဆောင်မှုစတင်ခြင်းတို့သည် မလုံလောက်တော့သောကြောင့် အခက်အခဲများ ဖြစ်ပေါ်လာသည် - သင်သည် နောက်ထပ်အဆင့်အချို့ကို လုပ်ဆောင်ရန် လိုအပ်သည်။ အနည်းဆုံး၊ ဒေတာကို မိတ္တူကူးပြီး/သို့မဟုတ် အစုအဝေးသို့ ဝင်ပါ။ ပို၍တိကျသည်မှာ၊ ဤဝန်ဆောင်မှုများသည် ဒေတာဆုံးရှုံးမှု သို့မဟုတ် ယာယီမရနိုင်ဘဲ ၎င်းတို့ကို မည်ကဲ့သို့ မှန်ကန်စွာ အတိုင်းအတာ၊ အပ်ဒိတ်နှင့် ပြန်လည်ဖွဲ့စည်းရမည်ကို နားလည်ရန် လိုအပ်ပါသည်။ ဤလိုအပ်ချက်များကို ထည့်သွင်းစဉ်းစားခြင်းကို "လုပ်ငန်းဆောင်ရွက်မှုဆိုင်ရာ အသိပညာ" ဟုခေါ်သည်။
CoreOS အော်ပရေတာများ
"ပရိုဂရမ်" လုပ်ငန်းလည်ပတ်မှုဆိုင်ရာ အသိပညာရရှိရန်အတွက် ယမန်နှစ်နှောင်းပိုင်းတွင် CoreOS ပရောဂျက်
Kubernetes ၏ ပင်မစွမ်းရည်များကို အသုံးပြု၍ ချဲ့ထွင်သည့် အော်ပရေတာများ (အပါအဝင်။ StatefulSetsအောက်ဖော်ပြပါ ခြားနားချက်ကို ကြည့်ပါ) DevOps ကျွမ်းကျင်သူများကို အပလီကေးရှင်းကုဒ်တွင် လုပ်ငန်းဆောင်ရွက်မှုဆိုင်ရာ အသိပညာကို ထည့်သွင်းခွင့်ပြုပါ။
အော်ပရေတာ၏ရည်ရွယ်ချက် — အသုံးပြုသူအား Kubernetes အစုအဝေးတစ်ခုအတွင်းရှိ နိုင်ငံပိုင်အပလီကေးရှင်းများစွာကို စီမံခန့်ခွဲနိုင်စေမည့် API တစ်ခုအား ပံ့ပိုးပေးသည် (မည်သည့်ဒေတာနှင့် ၎င်းနှင့်လုပ်ဆောင်ရမည်နည်း။ ) အမှန်မှာ၊ အော်ပရေတာသည် အစုအဝေးအတွင်း အပလီကေးရှင်းနှင့် အလုပ်ကို အတတ်နိုင်ဆုံး ရိုးရှင်းစေရန် ဒီဇိုင်းထုတ်ထားပြီး ယခင်က ကိုယ်တိုင်ဖြေရှင်းခဲ့ရသည့် လုပ်ငန်းလည်ပတ်မှုဆိုင်ရာ တာဝန်များကို အလိုအလျောက်လုပ်ဆောင်ပေးသည်။
Operator တွေ ဘယ်လိုအလုပ်လုပ်လဲ။
ပုံတူစာများ Kubernetes သည် သင့်အား သင်အလိုရှိသော လည်ပတ်နေသော pods အရေအတွက်ကို သတ်မှတ်ခွင့်ပြုထားပြီး ထိန်းချုပ်သူများသည် ၎င်းတို့၏နံပါတ်ကို ထိန်းသိမ်းထားကြောင်း သေချာစေရန် (pods များကို ဖန်တီးခြင်းနှင့် ဖျက်ခြင်း)။ အော်ပရေတာတစ်ခုသည် သင်လိုအပ်သော အပလီကေးရှင်းအရေအတွက်ကို ပံ့ပိုးရန် နောက်ထပ်လုပ်ဆောင်ချက်များကို လုပ်ဆောင်နိုင်စေမည့် စံ Kubernetes အရင်းအမြစ်နှင့် ထိန်းချုပ်ကိရိယာသို့ လုပ်ငန်းလည်ပတ်မှုဆိုင်ရာ အသိပညာအစုံကို ပေါင်းထည့်ကာ အလားတူနည်းလမ်းဖြင့် အလုပ်လုပ်ပါသည်။
ဒါက ဘယ်လိုကွာခြားလဲ။ StatefulSetsဒေတာသိုလှောင်မှု သို့မဟုတ် တည်ငြိမ် IP များကဲ့သို့သော နိုင်ငံပိုင်ရင်းမြစ်များ ပံ့ပိုးပေးရန် အစုအဖွဲ့မှ လိုအပ်သော အပလီကေးရှင်းများအတွက် ဒီဇိုင်းထုတ်ထားပါသလား။ ထိုကဲ့သို့သော application များအတွက်, Operators ကိုသုံးနိုင်သည်။ StatefulSets (အစား ပုံတူစာများ) အခြေခံအဖြစ်၊ ပူဇော်သက္ကာ အပိုအလိုအလျောက်စနစ်: ပျက်ကျသည့်အခါတွင် လိုအပ်သော လုပ်ဆောင်ချက်များကို လုပ်ဆောင်ရန်၊ မိတ္တူကူးရန်၊ စီစဉ်ဖွဲ့စည်းမှုကို အပ်ဒိတ်လုပ်ခြင်း စသည်ဖြင့်၊
ထို့ကြောင့် ဒါတွေအားလုံး ဘယ်လိုအလုပ်လုပ်လဲ။ အော်ပရေတာသည် မန်နေဂျာ daemon ဖြစ်သည်-
- Kubernetes ရှိ event API ကို စာရင်းသွင်းသည်။
- စနစ်နှင့်ပတ်သက်သော အချက်အလက် (၎င်း၏အကြောင်း ပုံတူစာများ, သီးတောင့်, န်ဆောင်မှုများ နောက် ... ပြီးတော့။);
- ဒေတာနှင့်ပတ်သက်ပြီး လက်ခံရရှိသည်။ Third Party အရင်းအမြစ်များ (ဥပမာများကို အောက်တွင်ကြည့်ပါ)။
- အသွင်အပြင်/ပြောင်းလဲမှုကို တုံ့ပြန်သည်။ Third Party အရင်းအမြစ်များ (ဥပမာ၊ အရွယ်အစားကိုပြောင်းရန်၊ ဗားရှင်းကိုပြောင်းရန်၊ စသည်ဖြင့်)။
- စနစ်၏အခြေအနေပြောင်းလဲမှုများကိုတုံ့ပြန်သည် (၎င်း၏အကြောင်း ပုံတူစာများ, သီးတောင့်, န်ဆောင်မှုများ နောက် ... ပြီးတော့။);
- အရေးကြီးဆုံး:
- လိုအပ်သည့်အရာအားလုံးကို ဖန်တီးရန် Kubernetes API ကိုခေါ်ဆိုသည် (တဖန်၎င်း၏ကိုယ်ပိုင် ပုံတူစာများ, သီးတောင့်, န်ဆောင်မှုများ... )၊
- အချို့သော မှော်ပညာကို လုပ်ဆောင်သည် (ရိုးရှင်းစေရန်၊ အော်ပရေတာသည် pods များထဲသို့ ကိုယ်တိုင်ဝင်သွားပြီး၊ ဥပမာ၊ အစုအဖွဲ့တစ်ခုသို့ ချိတ်ဆက်ရန် သို့မဟုတ် ဗားရှင်းတစ်ခုကို အပ်ဒိတ်လုပ်သည့်အခါ ဒေတာဖော်မတ်ကို အဆင့်မြှင့်ရန် အမိန့်ပေးချက်များကို ခေါ်ဆိုသည်)။
တကယ်တော့၊ ပုံမှာတွေ့မြင်နိုင်သလို၊ သီးခြားအပလီကေးရှင်းကို Kubernetes မှာ ရိုးရိုးရှင်းရှင်းထည့်သွင်းထားပါတယ်။ ဖြန့်ကျက် с ပုံတူသတ်မှတ်Operator ဟုခေါ်သည်။ ၎င်းသည် သာမန်အစေ့တစ်ခု (အများအားဖြင့် တစ်ခုသာ) တွင်နေထိုင်ပြီး စည်းကမ်းအရ ၎င်းအတွက်သာ တာဝန်ရှိသည်။ အမည်နေရာ. ဤအော်ပရေတာအပလီကေးရှင်းသည် ၎င်း၏ API ကို တိုက်ရိုက်မဟုတ်သော်လည်း တစ်ဆင့်ချင်း လုပ်ဆောင်သည်။ Third Party အရင်းအမြစ်များ Kubernetes တွင်
ဒါကြောင့် ကျွန်တော်တို့ ဖန်တီးပြီးရင်ပေါ့။ အမည်နေရာ အော်ပရေတာတို့ အဲဒါကို ထည့်လို့ရတယ်။ Third Party အရင်းအမြစ်များ.
etcd အတွက် ဥပမာ (အသေးစိတ်အချက်အလက်များကို အောက်တွင်ကြည့်ပါ):
apiVersion: etcd.coreos.com/v1beta1
kind: Cluster
metadata:
name: example-etcd-cluster
spec:
size: 3
version: 3.1.0
Elasticsearch အတွက် ဥပမာ-
apiVersion: enterprises.upmc.com/v1
kind: ElasticsearchCluster
metadata:
name: example-es-cluster
spec:
client-node-replicas: 3
master-node-replicas: 2
data-node-replicas: 3
zones:
- us-east-1c
- us-east-1d
- us-east-1e
data-volume-size: 10Gi
java-options: "-Xms1024m -Xmx1024m"
snapshot:
scheduler-enabled: true
bucket-name: elasticsnapshots99
cron-schedule: "@every 2m"
storage:
type: gp2
storage-class-provisioner: kubernetes.io/aws-ebs
အော်ပရေတာများအတွက်လိုအပ်ချက်များ
CoreOS သည် အော်ပရေတာများပေါ်တွင် အလုပ်လုပ်နေစဉ် အင်ဂျင်နီယာများမှရရှိသော ပင်မပုံစံများကို ရေးဆွဲခဲ့သည်။ အော်ပရေတာများအားလုံးသည် တစ်ဦးချင်းဖြစ်သည် (၎င်း၏ကိုယ်ပိုင်လက္ခဏာများနှင့်လိုအပ်ချက်များရှိသော သီးခြားအက်ပလီကေးရှင်းတစ်ခုအတွက် ဖန်တီးထားခြင်းဖြစ်သည်)၊ ၎င်းတို့၏ဖန်တီးမှုသည် အောက်ပါလိုအပ်ချက်များကိုပြဌာန်းသည့်ဘောင်အမျိုးအစားတစ်ခုအပေါ်အခြေခံရပါမည်-
- တပ်ဆင်ခြင်းတစ်ခုတည်းအားဖြင့်လုပ်ဆောင်ရပါမည်။ ဖြန့်ကျက်: kubectl -f SOME_OPERATOR_URL/deployment.yaml ဖန်တီးပါ။ - နှင့်နောက်ထပ်လုပ်ဆောင်ချက်များမလိုအပ်ပါ။
- Kubernetes တွင် အော်ပရေတာတစ်ခုကို ထည့်သွင်းသောအခါ၊ ပြင်ပအဖွဲ့အစည်း အမျိုးအစားအသစ်ကို ဖန်တီးရပါမည်။ (ThirdPartyResource). အပလီကေးရှင်းဖြစ်ရပ်များ (အစုအဝေးဖြစ်ရပ်များ) ကိုဖွင့်ရန်နှင့် ၎င်းတို့ကို ထပ်မံစီမံခန့်ခွဲရန် (ဗားရှင်းများကို အပ်ဒိတ်လုပ်ခြင်း၊ အရွယ်အစားပြောင်းခြင်း စသည်ဖြင့်) အသုံးပြုသူသည် ဤအမျိုးအစားကို အသုံးပြုမည်ဖြစ်သည်။
- ဖြစ်နိုင်သည့်အခါတိုင်း၊ ကဲ့သို့သော Kubernetes တွင်တည်ဆောက်ထားသော primitives များကို အသုံးပြုသင့်သည်။ န်ဆောင်မှုများ и ပုံတူစာများကောင်းစွာစမ်းသပ်ပြီး နားလည်နိုင်သောကုဒ်ကို အသုံးပြုရန်။
- အော်ပရေတာများ၏ နောက်ပြန်လိုက်ဖက်ညီမှုနှင့် အသုံးပြုသူဖန်တီးထားသော အရင်းအမြစ်များ၏ ဗားရှင်းအဟောင်းများအတွက် ပံ့ပိုးမှု လိုအပ်သည်။
- အော်ပရေတာအား ဖယ်ရှားပါက၊ အပလီကေးရှင်းကိုယ်တိုင်က ပြောင်းလဲခြင်းမရှိဘဲ ဆက်လက်လုပ်ဆောင်သင့်သည်။
- အသုံးပြုသူများသည် အလိုရှိသော အပလီကေးရှင်းဗားရှင်းနှင့် အက်ပ်ဗားရှင်းမွမ်းမံမှုများကို စီစဉ်သတ်မှတ်နိုင်ရပါမည်။ ဆော့ဖ်ဝဲလ်အပ်ဒိတ်များ ချို့တဲ့ခြင်းသည် လုပ်ငန်းလည်ပတ်မှုနှင့် လုံခြုံရေးပြဿနာများ၏ ဘုံအရင်းအမြစ်ဖြစ်သောကြောင့် အော်ပရေတာများသည် ဤကိစ္စရပ်တွင် အသုံးပြုသူများကို ကူညီပေးရမည်ဖြစ်သည်။
- pods၊ configurations နှင့် network များတွင် ဖြစ်နိုင်ချေရှိသော ချို့ယွင်းချက်များကို ဖော်ထုတ်ပေးသည့် Chaos Monkey ကဲ့သို့သော ကိရိယာဖြင့် အော်ပရေတာများကို စမ်းသပ်သင့်သည်။
etcd အော်ပရေတာ
အော်ပရေတာ အကောင်အထည်ဖော်မှု နမူနာ - etcd Operator၊
etcd ကို CoreOS တွင် ဖန်တီးထားသောကြောင့် ၎င်း၏ Operator ကို ဦးစွာမြင်ရသည်မှာ ယုတ္တိတန်ပါသည်။ သူဘယ်လိုအလုပ်လုပ်သလဲ။ အော်ပရေတာ ယုတ္တိဗေဒ စသည်တို့ အစိတ်အပိုင်းသုံးခုဖြင့် ဆုံးဖြတ်သည်-
- ရှုမှတ်ပါ။ အော်ပရေတာသည် Kubernetes API ကို အသုံးပြု၍ အစုအဝေး၏အခြေအနေကို စောင့်ကြည့်သည်။
- ခွဲခြမ်းစိတ်ဖြာခြင်း။ လက်ရှိအခြေအနေနှင့် လိုချင်သည့်အရာ (အသုံးပြုသူဖွဲ့စည်းပုံမှသတ်မှတ်ထားသော) အကြား ကွဲပြားမှုများကို ရှာပါ။
- အက်ရှင်။ etcd နှင့်/သို့မဟုတ် Kubernetes ဝန်ဆောင်မှု APIs များကို အသုံးပြု၍ တွေ့ရှိထားသော ကွဲပြားမှုများကို ဖြေရှင်းပါ။
ဤယုတ္တိကို အကောင်အထည်ဖော်ရန်၊ လုပ်ဆောင်ချက်များကို အော်ပရေတာတွင် ပြင်ဆင်ထားသည်။ ဖန်တီး/ဖျက်ဆီး (etcd cluster အဖွဲ့ဝင်များကို ဖန်တီးခြင်းနှင့် ဖျက်ခြင်း) နှင့် အရွယ်အစားပြောင်းပါ (အစုအဖွဲ့၀င်အရေအတွက် အပြောင်းအလဲ)။ Netflix မှ Chaos Monkey ပုံသဏ္ဍာန်ဖန်တီးထားသည့် utility ကို အသုံးပြု၍ ၎င်း၏လုပ်ဆောင်ချက်၏ မှန်ကန်မှုကို စစ်ဆေးခဲ့သည်။ etcd pods များကို ကျပန်းသတ်ခြင်း။
etcd ၏ အပြည့်အဝလည်ပတ်မှုအတွက်၊ အော်ပရေတာသည် နောက်ထပ်အင်္ဂါရပ်များကို ပံ့ပိုးပေးသည်- Backup ကို (အရန်မိတ္တူများ ဖန်တီးရာတွင် အလိုအလျောက်နှင့် မမြင်နိုင်သော သုံးစွဲသူများအတွက် - config တွင် ၎င်းတို့ကို ပြုလုပ်ရန် အကြိမ်အရေအတွက်နှင့် မည်မျှသိမ်းဆည်းရမည်ကို ဆုံးဖြတ်ရန် လုံလောက်သည် - ၎င်းတို့ထံမှ ဒေတာများကို နောက်ဆက်တွဲ ပြန်လည်ရယူခြင်း) နှင့် အဆင့်မြှင့် (အလုပ်မလုပ်ဘဲ etcd တပ်ဆင်မှုများကို အပ်ဒိတ်လုပ်ခြင်း)။
အော်ပရေတာနှင့်အလုပ်လုပ်ပုံကဘယ်လိုလဲ။
$ kubectl create -f https://coreos.com/operators/etcd/latest/deployment.yaml
$ kubectl create -f https://coreos.com/operators/etcd/latest/example-etcd-cluster.yaml
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
etcd-cluster-0000 1/1 Running 0 23s
etcd-cluster-0001 1/1 Running 0 16s
etcd-cluster-0002 1/1 Running 0 8s
etcd-cluster-backup-tool-rhygq 1/1 Running 0 18s
etcd အော်ပရေတာ၏ လက်ရှိအခြေအနေသည် Kubernetes 1.5.3+ နှင့် etcd 3.0+ ကို လုပ်ဆောင်ရန် လိုအပ်သော beta ဗားရှင်းဖြစ်သည်။ အရင်းအမြစ်ကုဒ်နှင့် စာရွက်စာတမ်းများ (အသုံးပြုရန်အတွက် ညွှန်ကြားချက်များအပါအဝင်) တွင် ရရှိနိုင်ပါသည်။
CoreOS မှ နောက်ထပ်ဥပမာ အကောင်အထည်ဖော်မှုကို ဖန်တီးထားသည်-
အနေအထားနှင့် အလားအလာ
Kubernetes အော်ပရေတာများ၏ ကြေငြာချက်ကြောင့် ၅ လကျော်သွားပါပြီ။ တရားဝင် CoreOS repository (etcd နှင့် Prometheus အတွက်) တွင် အကောင်အထည်ဖော်မှုနှစ်ခုသာ ရှိသေးသည်။ နှစ်ခုစလုံးသည် ၎င်းတို့၏တည်ငြိမ်သောဗားရှင်းများကို မရောက်ရှိသေးသော်လည်း ကတိကဝတ်များကို နေ့စဉ်နေ့တိုင်း စောင့်ကြည့်နေပါသည်။
developer များသည် "အသုံးပြုသူများသည် Postgres အော်ပရေတာများ၊ Cassandra အော်ပရေတာများ သို့မဟုတ် Redis အော်ပရေတာများကို ၎င်းတို့၏ Kubernetes အစုအဝေးများတွင် ထည့်သွင်းကာ ယနေ့ခေတ် နိုင်ငံမဲ့ ဝဘ်အက်ပလီကေးရှင်းများ၏ ပုံတူများကို အလွယ်တကူ အသုံးချသကဲ့သို့ ဤအပလီကေးရှင်းများ၏ အရွယ်အစားမှာ အလွယ်တကူ လုပ်ဆောင်နိုင်သည့် အနာဂတ်ကို စိတ်ကူးယဉ်ကြသည်။" ပထမ ပြင်ပအဖွဲ့အစည်း developer များမှ အော်ပရေတာများ တကယ်ပေါ်လာတော့တယ်
-
Elasticsearch အော်ပရေတာ UPMC Enterprises မှ၊ -
PostgreSQL အော်ပရေတာ Crunchy Data မှ (၂၀၁၇ ခုနှစ် မတ်လနှောင်းပိုင်းတွင် ကြေငြာခဲ့သည်); -
Rook အော်ပရေတာ Ceph ကိုအခြေခံထားသောဖြန့်ဝေဒေတာသိမ်းဆည်းမှုစနစ်၏စာရေးဆရာများမှ (Rook သည် alpha အဆင့်တွင်ရှိနေသည်); -
Openstack အော်ပရေတာများ SAP CCloud မှ
Brussels တွင် 2017 ခုနှစ် ဖေဖော်ဝါရီလတွင် ကျင်းပခဲ့သော အကြီးဆုံးဥရောပ အခမဲ့ဆော့ဖ်ဝဲကွန်ဖရင့် FOSDEM တွင် CoreOS မှ Josh Wood မှ အော်ပရေတာများအား ကြေညာခဲ့သည်။
PS ဆောင်းပါးကို စိတ်ဝင်စားသည့်အတွက် ကျေးဇူးတင်ပါသည်။ ကျွန်ုပ်တို့၏ဗဟိုသို့ စာရင်းသွင်းပါ။DevOps နှင့် GNU/Linux စနစ်စီမံခန့်ခွဲရေးတွင် ပစ္စည်းအသစ်များနှင့် ချက်ပြုတ်နည်းများကို လက်လွတ်မခံစေရန် - ၎င်းတို့ကို ကျွန်ုပ်တို့ ပုံမှန်ထုတ်ဝေပါမည်။
source: www.habr.com