Kubernetes ကလန်တိန်နာမျာသအတလက် အကောင်သဆုံသအလေ့အကျင့်မျာသ- ကျန်သမာရေသစစ်ဆေသမဟုမျာသ

Kubernetes ကလန်တိန်နာမျာသအတလက် အကောင်သဆုံသအလေ့အကျင့်မျာသ- ကျန်သမာရေသစစ်ဆေသမဟုမျာသ

TL; DR

  • ကလန်တိန်နာမျာသနဟင့် မိုက်ခရိုဝန်ဆောင်မဟုမျာသကို မဌင့်မာသစလာကဌည့်ရဟုနိုင်စေရန်၊ မဟတ်တမ်သမျာသနဟင့် အဓိကတိုင်သတာမဟုမျာသသည် မလုံလောက်ပါ။
  • ပိုမိုမဌန်ဆန်စလာ ပဌန်လည်ရယူရန်နဟင့် ခံနိုင်ရည်ရဟိမဟု တိုသလာစေရန်၊ အပလီကေသရဟင်သမျာသသည် မဌင့်မာသသော Observability Principle (HOP) ကို အသုံသပဌုသင့်သည်။
  • အပလီကေသရဟင်သအဆင့်တလင်၊ NOP သည်- မဟန်ကန်သောမဟတ်တမ်သ၊ အနီသကပ်စောင့်ကဌည့်မဟု၊ စိတ်ပိုင်သဆိုင်ရာစစ်ဆေသမဟုမျာသနဟင့် စလမ်သဆောင်ရည်/အကူသအပဌောင်သခဌေရာခံရန် လိုအပ်သည်။
  • စစ်ဆေသမဟုမျာသကို NOR ၏အစိတ်အပိုင်သတစ်ခုအဖဌစ် အသုံသပဌုပါ။ အဆင်သင့်ဖဌစ်ခဌင်သ။ О အသက်ရဟင်မဟုစုံစမ်သစစ်ဆေသ Kubernetes

Health Check Template ဆိုတာ ဘာလဲ။

mission-critical နဟင့် highly available application တစ်ခုကို ဒီဇိုင်သဆလဲသောအခါ၊ အမဟာသခံနိုင်ရည်ရဟိခဌင်သကဲ့သို့ ရဟုထောင့်တစ်ခုကို စဉ်သစာသရန် အလလန်အရေသကဌီသပါသည်။ အက်ပလီကေသရဟင်သတစ်ခုသည် ပျက်ကလက်မဟုမဟ လျင်မဌန်စလာ ပဌန်လည်ကောင်သမလန်လာပါက အမဟာသအယလင်သခံနိုင်ရည်ရဟိသည်ဟု ယူဆပါသည်။ ပုံမဟန် cloud အပလီကေသရဟင်သတစ်ခုသည် သီသခဌာသကလန်တိန်နာတစ်ခုတလင် အစိတ်အပိုင်သတစ်ခုစီကို ထာသရဟိရာ microservices ဗိသုကာကို အသုံသပဌုသည်။ ပဌီသတော့ k8s မဟာရဟိတဲ့ application ကို သင် cluster တစ်ခုကို ဒီဇိုင်သဆလဲတဲ့အခါ မဌင့်မာသစလာရရဟိနိုင်ကဌောင်သ သေချာစေရန်အတလက်၊ သင်သည် အချို့သောပုံစံမျာသကို လိုက်နာရန်လိုအပ်ပါသည်။ ၎င်သတို့အနက်မဟ ကျန်သမာရေသစစ်ဆေသသည့် ပုံစံဖဌစ်သည်။ ၎င်သသည် အပလီကေသရဟင်သမဟ k8s သို့ ဆက်သလယ်ရာတလင် ၎င်သသည် ကျန်သမာကဌောင်သ သတ်မဟတ်သည်။ ကအရာသည် Pod လည်ပတ်နေသလာသဆိုသည့် အချက်အလက်သာမက တောင်သဆိုချက်မျာသကို လက်ခံရယူပုံနဟင့် တုံ့ပဌန်ပုံအကဌောင်သလည်သ ဖဌစ်သည်။ Pod ၏ ကျန်သမာရေသအကဌောင်သ Kubernetes မျာသမျာသသိလေ၊ ယာဉ်လမ်သကဌောင်သလမ်သကဌောင်သနဟင့် Load Balancing နဟင့် ပတ်သက်၍ စမတ်ကျသော ဆုံသဖဌတ်ချက်မျာသ ချလေလေဖဌစ်သည်။ ထို့ကဌောင့် High Observability Principle သည် အပလီကေသရဟင်သအာသ တောင်သဆိုချက်မျာသကို အချိန်နဟင့်တပဌေသညီ တုံ့ပဌန်နိုင်စေပါသည်။

မဌင့်မာသသောကဌည့်ရဟုနိုင်မဟုမူ (HOP)

မဌင့်မာသသော Observability နိယာမသည်မျာသထဲမဟတစ်ခုဖဌစ်သည်။ containerized applications မျာသဒီဇိုင်သရေသဆလဲခဌင်သအတလက်အခဌေခံမူ. microservices ဗိသုကာတစ်ခုတလင်၊ ဝန်ဆောင်မဟုမျာသသည် ၎င်သတို့၏တောင်သဆိုမဟုကို မည်သို့လုပ်ဆောင်သည်ကို ဂရုမစိုက်ပါ (မဟန်မဟန်ကန်ကန်)၊ သို့သော် အရေသကဌီသသည်မဟာ လက်ခံဝန်ဆောင်မဟုမျာသမဟ တုံ့ပဌန်မဟုမျာသကို မည်သို့လက်ခံရရဟိမည်နည်သ။ ဥပမာအာသဖဌင့်၊ အသုံသပဌုသူတစ်ညသအာသ စစ်မဟန်ကဌောင်သအထောက်အထာသပဌရန်၊ ကလန်တိန်နာတစ်ခုသည် တိကျသောဖော်မတ်တစ်ခုဖဌင့် တုံ့ပဌန်မဟုကိုမျဟော်လင့်ထာသသည့် HTTP တောင်သဆိုချက်ကို အခဌာသတစ်ခုထံသို့ ပေသပို့သည် - ဒီလောက်ပါပဲ။ PythonJS သည် တောင်သဆိုမဟုကိုလည်သ လုပ်ဆောင်နိုင်ပဌီသ Python Flask က တုံ့ပဌန်နိုင်သည်။ ကလန်တိန်နာမျာသသည် တစ်ခုနဟင့်တစ်ခု ဝဟက်ထာသသော အကဌောင်သအရာမျာသပါရဟိသော အနက်ရောင်သေတ္တာမျာသကဲ့သို့ဖဌစ်သည်။ သို့ရာတလင်၊ NOP နိယာမသည် ဝန်ဆောင်မဟုတစ်ခုစီတိုင်သသည် မည်မျဟကျန်သမာကဌောင်သညလဟန်ပဌသည့် API အဆုံသအဖဌတ်အမျာသအပဌာသကို ဖော်ထုတ်ရန် လိုအပ်သည့်အပဌင် ၎င်သ၏အဆင်သင့်နဟင့် အမဟာသအယလင်သမျာသကို ခံနိုင်ရည်ရဟိမဟုအခဌေအနေတို့ကို ဖော်ထုတ်ရန် လိုအပ်သည်။ လမ်သကဌောင်သသတ်မဟတ်ခဌင်သနဟင့် load ချိန်ခလင်လျဟာညဟိခဌင်သအတလက် နောက်အဆင့်မျာသကို စဉ်သစာသရန်အတလက် Kubernetes သည် ကညလဟန်ကိန်သမျာသကို တောင်သဆိုပါသည်။

ကောင်သစလာဒီဇိုင်သထုတ်ထာသသော cloud အပလီကေသရဟင်သသည် စံ I/O ထုတ်လလဟင့်မဟုမျာသ STDERR နဟင့် STDOUT ကိုအသုံသပဌု၍ ၎င်သ၏အဓိကဖဌစ်ရပ်မျာသကို မဟတ်တမ်သတင်သည်။ နောက်တစ်ခုသည် အရန်ဝန်ဆောင်မဟုတစ်ခုဖဌစ်သည့် ဥပမာ filebeat၊ logstash သို့မဟုတ် fluentd၊ ဗဟိုချုပ်ကိုင်မဟုစောင့်ကဌည့်ရေသစနစ် (ဥပမာ Prometheus) နဟင့် မဟတ်တမ်သစုဆောင်သခဌင်သစနစ် (ELK software suite) သို့ မဟတ်တမ်သမျာသပေသပို့ခဌင်သ။ အောက်ဖော်ပဌပါပုံတလင် cloud အပလီကေသရဟင်သတစ်ခုသည် ကျန်သမာရေသစမ်သသပ်မဟုပုံစံနဟင့် မဌင့်မာသသောကဌည့်ရဟုနိုင်မဟုဆိုင်ရာစည်သမျဉ်သမျာသအတိုင်သ လုပ်ဆောင်ပုံကို ပဌသထာသသည်။

Kubernetes ကလန်တိန်နာမျာသအတလက် အကောင်သဆုံသအလေ့အကျင့်မျာသ- ကျန်သမာရေသစစ်ဆေသမဟုမျာသ

Kubernetes တလင် ကျန်သမာရေသစစ်ဆေသမဟုပုံစံကို မည်သို့အသုံသပဌုရမည်နည်သ။

ဘောက်စ်အတလင်သမဟ၊ k8s သည် ထိန်သချုပ်ကိရိယာမျာသထဲမဟ တစ်ခုကို အသုံသပဌု၍ pods ၏ အခဌေအနေကို စောင့်ကဌည့်သည် (ဖဌန့်ကျက်, ပုံတူစာမျာသ, DaemonSets, StatefulSets စသည်ဖဌင့်)။ အကဌောင်သတစ်ခုခုကဌောင့် pod ပဌုတ်ကျသလာသသည်ကို တလေ့ရဟိပဌီသနောက် ထိန်သချုပ်သူသည် ၎င်သကို ပဌန်လည်စတင်ရန် သို့မဟုတ် ၎င်သကို အခဌာသ node တစ်ခုသို့ ရလဟေ့ရန် ကဌိုသစာသသည်။ သို့သော်၊ ပေါ့ဒ်တစ်ခုသည် ၎င်သသည် လည်ပတ်နေပဌီဖဌစ်ကဌောင်သ သတင်သပို့နိုင်သော်လည်သ ၎င်သကိုယ်တိုင်က အလုပ်မလုပ်ပါ။ ဥပမာတစ်ခု ပေသပါရစေ- သင့်အပလီကေသရဟင်သသည် Apache ကို ဝဘ်ဆာဗာအဖဌစ် အသုံသပဌုသည်၊ သင်သည် အစုအဝေသ၏ pods အမျာသအပဌာသတလင် အစိတ်အပိုင်သကို ထည့်သလင်သခဲ့သည်။ စာကဌည့်တိုက်ကို မဟာသယလင်သစလာ စီစဉ်သတ်မဟတ်ထာသသောကဌောင့်၊ အပလီကေသရဟင်သထံ တောင်သဆိုချက်အာသလုံသကို ကုဒ် 500 (အတလင်သပိုင်သ ဆာဗာအမဟာသ) ဖဌင့် တုံ့ပဌန်သည်။ ပေသပို့မဟုကို စစ်ဆေသသည့်အခါ pods မျာသ၏ အခဌေအနေကို စစ်ဆေသခဌင်သသည် အောင်မဌင်သောရလဒ်ကို ပေသစလမ်သသော်လည်သ ဖောက်သည်မျာသက ကလဲပဌာသသည်ဟု ထင်မဌင်ပါသည်။ ကမလိုလာသအပ်သော အခဌေအနေမျာသကို အောက်ပါအတိုင်သ ဖော်ပဌပါမည်။

Kubernetes ကလန်တိန်နာမျာသအတလက် အကောင်သဆုံသအလေ့အကျင့်မျာသ- ကျန်သမာရေသစစ်ဆေသမဟုမျာသ

ကျလန်ုပ်တို့၏ဥပမာတလင်၊ k8s သည်ကသို့ဖဌစ်သည်။ လုပ်ဆောင်နိုင်စလမ်သကိုစစ်ဆေသပါ။. ကစစ်ဆေသမဟုအမျိုသအစာသတလင်၊ kubelet သည် ကလန်တိန်နာအတလင်သရဟိ လုပ်ငန်သစဉ်၏အခဌေအနေကို စဉ်ဆက်မပဌတ်စစ်ဆေသသည်။ လုပ်ငန်သစဉ်ရပ်သလာသကဌောင်သ သူနာသလည်သည်နဟင့် ၎င်သကို ပဌန်လည်စတင်မည်ဖဌစ်သည်။ အပလီကေသရဟင်သကို ပဌန်လည်စတင်ရုံဖဌင့် အမဟာသအယလင်သကို ဖဌေရဟင်သနိုင်ပဌီသ၊ ပရိုဂရမ်သည် မည်သည့် error ကိုမဆို ပိတ်ရန် ဒီဇိုင်သထုတ်ထာသပါက၊ လုပ်ငန်သစဉ် ကျန်သမာရေသစစ်ဆေသမဟုသည် NOP နဟင့် Health Test Pattern ကို လိုက်နာရန် လိုအပ်ပါသည်။ တစ်ခုတည်သသောသနာသစရာမဟာ restart လုပ်ခဌင်သဖဌင့် error အာသလုံသကို ဖယ်ရဟာသခဌင်သမဟုတ်ပါ။ ကကိစ္စတလင်၊ k8s သည် pod နဟင့် ပဌဿနာမျာသကို ရဟာဖလေဖော်ထုတ်ရန် ပိုမိုလေသနက်သော နည်သလမ်သ 2 ခုကို ပေသသည်- အသက်ရဟင်မဟုစုံစမ်သစစ်ဆေသ О အဆင်သင့်ဖဌစ်ခဌင်သ။.

LivenessProbe

စဉ်အတလင်သ အသက်ရဟင်မဟုစုံစမ်သစစ်ဆေသ kubelet သည် စစ်ဆေသမဟု 3 မျိုသကို လုပ်ဆောင်သည်- ပေါ့ဒ်သည် လုပ်ဆောင်နေခဌင်သရဟိမရဟိသာမက တောင်သဆိုမဟုမျာသကို လက်ခံရန်နဟင့် လုံလောက်စလာတုံ့ပဌန်ရန် အသင့်ရဟိမရဟိကိုလည်သ ဆုံသဖဌတ်ပေသသည်-

  • pod တလင် HTTP တောင်သဆိုချက်တစ်ခုကို သတ်မဟတ်ပါ။ တုံ့ပဌန်မဟုတလင် 200 မဟ 399 အကလာအဝေသအတလင်သ HTTP တုံ့ပဌန်ကုဒ်တစ်ခုပါဝင်ရပါမည်။ ထို့ကဌောင့် လုပ်ငန်သစဉ်လုပ်ဆောင်နေသော်လည်သ pod သည် ပဌဿနာမျာသရဟိနေသည့်တိုင် 5xx နဟင့် 4xx သင်္ကေတမျာသဖဌစ်သည်။
  • HTTP မဟုတ်သော ဝန်ဆောင်မဟုမျာသ (ဥပမာ၊ Postfix မေသလ်ဆာဗာ) ဖဌင့် pods မျာသကို စမ်သသပ်ရန် TCP ချိတ်ဆက်မဟုတစ်ခုကို တည်ဆောက်ရန် လိုအပ်ပါသည်။
  • pod တစ်ခုအတလက် မတရာသသောအမိန့်ကို လုပ်ဆောင်ပါ (အတလင်သပိုင်သ)။ command completion code သည် 0 ဖဌစ်ပါက စစ်ဆေသမဟုကို အောင်မဌင်သည်ဟု ယူဆပါသည်။

ဒါက ဘယ်လိုအလုပ်လုပ်သလဲ ဥပမာ။ နောက်ထပ် pod အဓိပ္ပါယ်ဖလင့်ဆိုချက်တလင် HTTP တောင်သဆိုမဟုမျာသတလင် အမဟာသ 500 ပေါက်စေသည့် NodeJS အပလီကေသရဟင်သတစ်ခုပါရဟိသည်။ ထိုသို့သောအမဟာသတစ်ခုကို လက်ခံရရဟိသည့်အခါ ကလန်တိန်နာကို ပဌန်လည်စတင်ကဌောင်သသေချာစေရန်၊ ကျလန်ုပ်တို့သည် livenessProbe ကန့်သတ်ဘောင်ကို အသုံသပဌုသည်-

apiVersion: v1
kind: Pod
metadata:
 name: node500
spec:
 containers:
   - image: magalix/node500
     name: node500
     ports:
       - containerPort: 3000
         protocol: TCP
     livenessProbe:
       httpGet:
         path: /
         port: 3000
       initialDelaySeconds: 5

၎င်သသည် အခဌာသ pod အဓိပ္ပါယ်ဖလင့်ဆိုချက်နဟင့် မတူသော်လည်သ ကျလန်ုပ်တို့သည် အရာဝတ္ထုတစ်ခုကို ထည့်နေသည်။ .spec.containers.livenessProbe. ကန့်သတ်ချက် httpGet HTTP GET တောင်သဆိုမဟု ပေသပို့သည့် လမ်သကဌောင်သကို လက်ခံသည် (ကျလန်ုပ်တို့၏ ဥပမာတလင် ကအရာဖဌစ်သည်။ /ဒါပေမယ့် တိုက်ပလဲအခဌေအနေတလေမဟာ ဒီလိုမျိုသ တစ်ခုခုရဟိနိုင်ပါတယ်။ /api/v1/status) အခဌာသ livenessProbe သည် ကန့်သတ်ချက်တစ်ခုကို လက်ခံသည်။ initialDelaySecondsသတ်မဟတ်ထာသသော စက္ကန့်အရေအတလက်ကို စောင့်ရန် အတည်ပဌုခဌင်သလုပ်ငန်သကို ညလဟန်ကဌာသသည်။ ကလန်တိန်နာ စတင်ရန် အချိန်လိုအပ်ပဌီသ ပဌန်လည်စတင်သည့်အခါ အချိန်အတန်ကဌာ မရနိုင်သောကဌောင့် နဟောင့်နဟေသမဟု လိုအပ်ပါသည်။

ကဆက်တင်ကို အစုအဝေသတစ်ခုသို့ အသုံသပဌုရန်၊ အသုံသပဌုပါ-

kubectl apply -f pod.yaml

စက္ကန့်အနည်သငယ်ကဌာပဌီသနောက်၊ သင်သည် အောက်ပါ command ကိုသုံသ၍ pod ၏အကဌောင်သအရာမျာသကို စစ်ဆေသနိုင်သည်-

kubectl describe pods node500

အထလက်၏အဆုံသတလင်၊ ရဟာပါ။ အဲဒါ ဘာလဲ။.

သင်တလေ့မဌင်ရသည့်အတိုင်သ livenessProbe သည် HTTP GET တောင်သဆိုမဟုကို စတင်ခဲ့ပဌီသ ကလန်တိန်နာသည် အမဟာသအယလင်သ 500 (၎င်သလုပ်ဆောင်ရန် ပရိုဂရမ်ပဌုလုပ်ထာသသည့်အရာဖဌစ်သည်) ကို ကလန်တိန်နာက ထုတ်ပေသခဲ့ပဌီသ kubelet မဟ ၎င်သကို ပဌန်လည်စတင်ခဲ့သည်။

NideJS အပလီကေသရဟင်သကို ဘယ်လို ပရိုဂရမ်ရေသဆလဲထာသလဲလို့ သင်သိချင်နေတယ်ဆိုရင် ဒါက အသုံသပဌုခဲ့တဲ့ app.js နဲ့ Dockerfile ပါ။

app.js

var http = require('http');

var server = http.createServer(function(req, res) {
    res.writeHead(500, { "Content-type": "text/plain" });
    res.end("We have run into an errorn");
});

server.listen(3000, function() {
    console.log('Server is running at 3000')
})

dockerfile

FROM node
COPY app.js /
EXPOSE 3000
ENTRYPOINT [ "node","/app.js" ]

၎င်သကိုသတိပဌုရန်အရေသကဌီသပါသည်- livenessProbe သည်အဆင်မပဌေပါကကလန်တိန်နာကိုပဌန်လည်စတင်မည်ဖဌစ်သည်။ ပဌန်လည်စတင်ခဌင်သသည် ကလန်တိန်နာလည်ပတ်ခဌင်သမဟ တာသဆီသထာသသည့် အမဟာသကို မပဌင်ပါက၊ kubelet သည် ပဌဿနာကို ပဌုပဌင်ရန် လုပ်ဆောင်နိုင်မည်မဟုတ်ပေ။

အဆင်သင့်ဖဌစ်ခဌင်သ။

readinessProbe သည် ပဌဿနာဖဌေရဟင်သခဌင်သလုပ်ဆောင်ချက်မျာသမဟလလဲ၍ livenessProbes (GET တောင်သဆိုမဟုမျာသ၊ TCP ဆက်သလယ်ရေသနဟင့် အမိန့်ပေသမဟုလုပ်ဆောင်ခဌင်သ) နဟင့် အလာသတူလုပ်ဆောင်သည်။ ချို့ယလင်သချက်ကို တလေ့ရဟိသည့် ကလန်တိန်နာကို ပဌန်လည်စတင်ခဌင်သမပဌုသော်လည်သ အဝင်လမ်သကဌောင်သမဟ ခလဲထုတ်ထာသသည်။ ကလန်တိန်နာမျာသထဲမဟ တစ်ခုသည် တလက်ချက်မဟုမျာသစလာ လုပ်ဆောင်နေသည် သို့မဟုတ် လေသလံသောဝန်အောက်တလင် ရဟိနေသောကဌောင့် တုံ့ပဌန်မဟုအကဌိမ်ရေ တိုသလာသည်ဟု မဌင်ယောင်ကဌည့်ပါ။ livenessProbe ၏ဖဌစ်ရပ်တလင်၊ တုံ့ပဌန်မဟုရရဟိနိုင်မဟုစစ်ဆေသခဌင်သကိုစတင်သည် (အချိန်လလန်စက္ကန့်စစ်ဆေသခဌင်သဘောင်မဟတဆင့်) ပဌီသနောက် kubelet သည်ကလန်တိန်နာကိုပဌန်လည်စတင်သည်။ စတင်သောအခါ၊ ကလန်တိန်နာသည် အရင်သအမဌစ်-အလေသပေသသော လုပ်ဆောင်စရာမျာသကို စတင်လုပ်ဆောင်ပဌီသ ပဌန်လည်စတင်သည်။ တုံ့ပဌန်မဟုအမဌန်နဟုန်သလိုအပ်သော အပလီကေသရဟင်သမျာသအတလက် ၎င်သသည် အရေသကဌီသပါသည်။ ဥပမာအာသဖဌင့်၊ ကာသတစ်စီသသည် လမ်သပေါ်တလင် ဆာဗာမဟ တုံ့ပဌန်မဟုကို စောင့်ဆိုင်သနေချိန်၊ တုံ့ပဌန်မဟု နဟောင့်နဟေသသလာသသည် - ကာသသည် မတော်တဆမဟု ဖဌစ်သလာသသည်။

GET တောင်သဆိုချက် တုံ့ပဌန်မဟုအချိန်ကို နဟစ်စက္ကန့်ထက် မပိုစေဘဲ သတ်မဟတ်ပေသမည့် redinessProbe အဓိပ္ပါယ်ဖလင့်ဆိုချက်တစ်ခုအာသ ရေသကဌပါစို့၊ လျဟောက်လလဟာသည် 5 စက္ကန့်အကဌာတလင် GET တောင်သဆိုချက်ကို တုံ့ပဌန်မည်ဖဌစ်သည်။ pod.yaml ဖိုင်သည် ကကဲ့သို့ ဖဌစ်သင့်သည်-

apiVersion: v1
kind: Pod
metadata:
 name: nodedelayed
spec:
 containers:
   - image: afakharany/node_delayed
     name: nodedelayed
     ports:
       - containerPort: 3000
         protocol: TCP
     readinessProbe:
       httpGet:
         path: /
         port: 3000
       timeoutSeconds: 2

kubectl ဖဌင့် pod တစ်ခုကို အသုံသပဌုကဌပါစို့။

kubectl apply -f pod.yaml

စက္ကန့်အနည်သငယ်လောက်စောင့်ပဌီသ အဆင်သင့်Probe အလုပ်လုပ်ပုံကို ကဌည့်ကဌရအောင်။

kubectl describe pods nodedelayed

အထလက်၏အဆုံသတလင် အချို့သောဖဌစ်ရပ်မျာသသည် ဆင်တူကဌောင်သ သင်တလေ့နိုင်သည်။ ဒီတစ်ခု.

သင်မဌင်သည့်အတိုင်သ၊ စစ်ဆေသချိန် 2 စက္ကန့်ကျော်လလန်သောအခါ kubectl သည် pod ကိုပဌန်လည်စတင်ခဌင်သမရဟိပါ။ အဲဒီအစာသ သူက တောင်သဆိုချက်ကို ပယ်ဖျက်လိုက်တယ်။ ဝင်လာသော ဆက်သလယ်မဟုမျာသကို အခဌာသလုပ်ဆောင်နေသော pods မျာသသို့ ပဌန်ညလဟန်သသည်။

ယခုအခါ ပေါ့ဒ်ကို ပိတ်ထာသသဖဌင့်၊ kubectl လမ်သကဌောင်သမျာသက ၎င်သထံ ထပ်မံတောင်သဆိုနေသည်- GET တောင်သဆိုချက်မျာသကို တုံ့ပဌန်မဟုမျာသသည် နဟောင့်နဟေသတော့မည်မဟုတ်ကဌောင်သ သတိပဌုပါ။

နဟိုင်သယဟဉ်ရန်အတလက် အောက်တလင် ပဌုပဌင်ထာသသော app.js ဖိုင်ဖဌစ်သည်-

var http = require('http');

var server = http.createServer(function(req, res) {
   const sleep = (milliseconds) => {
       return new Promise(resolve => setTimeout(resolve, milliseconds))
   }
   sleep(5000).then(() => {
       res.writeHead(200, { "Content-type": "text/plain" });
       res.end("Hellon");
   })
});

server.listen(3000, function() {
   console.log('Server is running at 3000')
})

TL; DR
cloud အပလီကေသရဟင်သမျာသ မထလန်သကာသမီတလင် မဟတ်တမ်သမျာသသည် အက်ပ်၏ကျန်သမာရေသကို စောင့်ကဌည့်စစ်ဆေသခဌင်သ၏ အဓိကနည်သလမ်သဖဌစ်သည်။ သို့သော်လည်သ မဟန်ကန်သော အရေသယူဆောင်ရလက်မဟု တစ်စုံတစ်ရာ မရဟိခဲ့ပါ။ မဟတ်တမ်သမျာသသည် ယနေ့အထိ အသုံသဝင်ဆဲဖဌစ်သည်၊ ၎င်သတို့ကို စုဆောင်သပဌီသ အရေသပေါ်အခဌေအနေမျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သနဟင့် ဆုံသဖဌတ်ချက်မျာသချရန်အတလက် မဟတ်တမ်သစုဆောင်သခဌင်သစနစ်သို့ ပေသပို့ရန် လိုအပ်ပါသည်။ [ဥပမာအာသဖဌင့် monit ကိုအသုံသပဌု၍ cloud application မျာသမပါဘဲကအရာအာသလုံသကိုလုပ်ဆောင်နိုင်သော်လည်သ k8s ဖဌင့်၎င်သသည်ပိုမိုလလယ်ကူလာသည် :) - တည်သဖဌတ်သူ၏မဟတ်စု။ ]

ယနေ့ခေတ်တလင် ပဌုပဌင်မဟုမျာသကို အချိန်နဟင့်တပဌေသညီနီသပါသ ပဌုလုပ်ရမည်ဖဌစ်သောကဌောင့် အပလီကေသရဟင်သမျာသသည် black boxes ဖဌစ်ရန်မလိုအပ်တော့ပါ။ မဟုတ်ပါ၊ ၎င်သတို့သည် လိုအပ်ပါက ချက်ခဌင်သတုံ့ပဌန်နိုင်ရန် လုပ်ငန်သစဉ်အခဌေအနေနဟင့်ပတ်သက်သော အဖိုသတန်ဒေတာမျာသကို စုံစမ်သမေသမဌန်သရန်နဟင့် စုဆောင်သရန် စောင့်ကဌည့်ရေသစနစ်မျာသကို ခလင့်ပဌုသည့် အဆုံသမဟတ်မျာသကို ပဌသသင့်သည်။ ၎င်သကို High Observability Principle (HOP) လိုက်နာသည့် Performance Test Design Pattern ဟုခေါ်သည်။

Kubernetes သည် ပုံမဟန်အာသဖဌင့် ကျန်သမာရေသစစ်ဆေသမဟု အမျိုသအစာသ 2 မျိုသ ပေသဆောင်သည်- အဆင်သင့်ဖဌစ်ခဌင်သ Probe နဟင့် livenessProbe။ နဟစ်ခုလုံသသည် တူညီသောစစ်ဆေသမဟုအမျိုသအစာသမျာသကိုအသုံသပဌုသည် (HTTP GET တောင်သဆိုမဟုမျာသ၊ TCP ဆက်သလယ်ရေသနဟင့် အမိန့်ပေသသည့်လုပ်ဆောင်မဟု)။ pods မျာသရဟိ ပဌဿနာမျာသကို တုံ့ပဌန်ရာတလင် ၎င်သတို့ ချမဟတ်သည့် ဆုံသဖဌတ်ချက်မျာသတလင် ကလဲပဌာသသည်။ livenessProbe သည် အမဟာသထပ်မံမဖဌစ်ပလာသစေရန်မျဟော်လင့်ချက်ဖဌင့် ကလန်တိန်နာကို ပဌန်လည်စတင်ပဌီသ အဆင်သင့်ဖဌစ်ခဌင်သProbe သည် ပဌဿနာ၏အကဌောင်သရင်သကို ဖဌေရဟင်သပဌီသသည်အထိ အဆင်သင့်ဖဌစ်နေသော အဝင်လမ်သကဌောင်သမဟ ဘူသကို ခလဲထုတ်သည်။

သင့်လျော်သော အပလီကေသရဟင်သ ဒီဇိုင်သတလင် စစ်ဆေသခဌင်သ အမျိုသအစာသ နဟစ်မျိုသစလုံသ ပါဝင်သင့်ပဌီသ အထူသသဖဌင့် ခဌလင်သချက်တစ်ခုအာသ ချလိုက်သည့်အခါ ၎င်သတို့သည် လုံလောက်သော ဒေတာကို စုဆောင်သကဌောင်သ သေချာစေသင့်သည်။ စောင့်ကဌည့်ရေသစနစ် (Prometheus) ကို အရေသကဌီသသော ကျန်သမာရေသဆိုင်ရာ တိုင်သတာမဟုမျာသကို ပံ့ပိုသပေသသည့် လိုအပ်သော API အဆုံသမဟတ်မျာသကိုလည်သ ပဌသသင့်သည်။

source: www.habr.com

မဟတ်ချက် Add