Kubernetes 1.17- ပင်မတီထလင်ဆန်သသစ်မဟုမျာသ၏ ခဌုံငုံသုံသသပ်ချက်

ယမန်နေ့ ဒီဇင်ဘာ ၉ ရက်၊ နေရာယူခဲ့သည်။ Kubernetes ၏နောက်ထလက်ရဟိမဟု - 1.17။ ကျလန်ုပ်တို့၏ဘလော့ဂ်အတလက် တီထလင်ထာသသော အစဉ်အလာအရ၊ ကျလန်ုပ်တို့သည် ဗာသရဟင်သအသစ်တလင် အထူသခဌာသဆုံသသော အပဌောင်သအလဲမျာသအကဌောင်သ ဆလေသနလေသကဌသည်။

Kubernetes 1.17- ပင်မတီထလင်ဆန်သသစ်မဟုမျာသ၏ ခဌုံငုံသုံသသပ်ချက်

ကပစ္စည်သကို ပဌင်ဆင်ရာတလင် အသုံသပဌုသည့် အချက်အလက်မျာသကို တရာသဝင်ကဌေငဌာချက်မဟ ထုတ်ယူပဌီသ၊ Kubernetes အဆင့်မဌဟင့်တင်မဟုမျာသ ခဌေရာခံဇယာသမျာသ, ပဌောင်သလဲခဌင်သ-1.17 နဟင့် ဆက်စပ်ပဌဿနာမျာသ၊ တောင်သဆိုမဟုမျာသနဟင့် Kubernetes မဌဟင့်တင်မဟု အဆိုပဌုချက်မျာသ (KEP)။ ဒါဆို ဘာအသစ်လဲ..

Topology-aware လမ်သကဌောင်သ

Kubernetes အသိုင်သအဝိုင်သသည် ကအင်္ဂါရပ်ကို အချိန်အတော်ကဌာ စောင့်မျဟော်နေပါသည်- Topology-aware ဝန်ဆောင်မဟုလမ်သကဌောင်သ။ လျဟင် CAP ၎င်သသည် 2018 ခုနဟစ် အောက်တိုဘာလတလင် စတင်ခဲ့ပဌီသ တရာသဝင်ဖဌစ်သည်။ တိုသမဌဟင့် - လလန်ခဲ့တဲ့ ၂ နဟစ်လောက်က ပုံမဟန်ကိစ္စတလေ (ကဌိုက်တယ်။ က) - နောက်ထပ် နဟစ်အနည်သငယ် ပိုကဌီသသည်...

ယေဘူယျ အယူအဆမဟာ Kubernetes တလင်နေထိုင်သည့် ဝန်ဆောင်မဟုမျာသအတလက် "ဒေသခံ" လမ်သကဌောင်သကို အကောင်အထည်ဖော်နိုင်စေရန် ပံ့ပိုသပေသခဌင်သဖဌစ်သည်။ ကကိစ္စတလင် "ဒေသခံ" သည် "တူညီသော topological အဆင့်" ကိုဆိုလိုသည် (topology အဆင့်)ဖဌစ်ကောင်သဖဌစ်နိုင်သည်-

  • ဝန်ဆောင်မဟုမျာသအတလက် တူညီသော node မျာသ၊
  • server rack အတူတူ၊
  • တူညီသောဒေသ
  • တူညီသော cloud provider၊
  • ...

ကအင်္ဂါရပ်ကိုအသုံသပဌုခဌင်သ၏ဥပမာမျာသ-

  • အမျာသအပဌာသရရဟိနိုင်မဟုဇုန်မျာသ (multi-AZ) - အမျာသအပဌာသရရဟိနိုင်မဟုဇုန်မျာသပါရဟိသော cloud တပ်ဆင်မဟုမျာသတလင်အသလာသအလာအပေါ်ချလေတာသည်။ လတ်ဆတ်သော သရုပ်ဖော်ပုံ တူညီသောဒေသမဟအသလာသအလာနမူနာကိုအသုံသပဌုသော်လည်သ AWS ရဟိ မတူညီသော AZs;
  • စလမ်သဆောင်ရည် နဟေသကလေသခဌင်သ/ ပိုမိုကောင်သမလန်သော ဖဌတ်သန်သမဟု။
  • shard တစ်ခုစီရဟိ node မျာသအကဌောင်သ ဒေသဆိုင်ရာအချက်အလက်မျာသပါရဟိသော sharded ဝန်ဆောင်မဟုတစ်ခု။
  • မဟတ်တမ်သမျာသကို စုဆောင်သထာသသော အပလီကေသရဟင်သမျာသနဟင့် တူညီသော node ပေါ်တလင် ကျလမ်သကျင်စလာ (သို့မဟုတ် analogues) မျာသကို နေရာချထာသခဌင်သ၊
  • ...

topology အကဌောင်သ “သိ” သော ထိုကဲ့သို့သော လမ်သကဌောင်သကို ကလန်ရက်ဆက်စပ်မဟုဟုလည်သ ခေါ်သည် - ဥပမာအာသဖဌင့်၊ node affinity, pod affinity/ anti-affinity သို့မဟုတ် ပေါ်လာသည်။ သိပ်မကဌာသေသဘူသ။ Topology-Aware Volume Scheduling (နဟင့် အသံအတိုသအကျယ် စီမံဆောင်ရလက်ခဌင်သ) လက်ရဟိအကောင်အထည်ဖော်မဟုအဆင့် ServiceTopology Kubernetes - အယ်လ်ဖာဗာသရဟင်သ။

အင်္ဂါရပ်မည်သို့အလုပ်လုပ်ပုံနဟင့် ၎င်သကို သင်အသုံသပဌုနိုင်ပဌီသဖဌစ်ကဌောင်သ အသေသစိတ်အတလက် ဖတ်ရဟုပါ။ ကဆောင်သပါသတလင် စာရေသဆရာတစ်ညသထံမဟ။

IPv4/IPv6 dual stack ပံ့ပိုသမဟု

သိသာထင်ရဟာသသောတိုသတက်မဟု သတ်မဟတ်ထာသတဲ့ အခဌာသကလန်ရက်အင်္ဂါရပ်တလင်- ပထမဆုံသမိတ်ဆက်ခဲ့သည့် IP stacks နဟစ်ခုအတလက် တပဌိုင်နက်တည်သ ပံ့ပိုသမဟု K8s 1.16. အထူသသဖဌင့်၊ အသစ်ထလက်ရဟိမဟုတလင်အောက်ပါပဌောင်သလဲမဟုမျာသကိုဆောင်ခဲ့:

  • kube-proxy တလင် အကောင်အထည်ဖော်ခဲ့သည်။ မုဒ်နဟစ်ခုစလုံသတလင် တစ်ပဌိုင်နက်လုပ်ဆောင်နိုင်ခဌေ (IPv4 နဟင့် IPv6);
  • в Pod.Status.PodIPs သည်ထင်ရဟာသ downward API အတလက် ပံ့ပိုသမဟု ( တစ်ချိန်တည်သမဟာပင် /etc/hosts ယခု ၎င်သတို့သည် IPv6 လိပ်စာတစ်ခုထည့်ရန် အိမ်ရဟင်ကို လိုအပ်သည်)။
  • dual stack ပံ့ပိုသမဟု ကဌင်နာ (Kubernetes IN Docker) နဟင့် kubeadm;
  • e2e စမ်သသပ်မဟုမျာသကို မလမ်သမံထာသသည်။

Kubernetes 1.17- ပင်မတီထလင်ဆန်သသစ်မဟုမျာသ၏ ခဌုံငုံသုံသသပ်ချက်
ပုံဥပမာ KIND တလင် dual stack IPV4/IPv6 ကိုအသုံသပဌုသည်။

CSI တိုသတက်မဟု

တည်ငဌိမ်ကဌောင်သ ကဌေညာခဲ့သည်။ topology ပံ့ပိုသမဟု CSI-based သိုလဟောင်မဟုအတလက် ပထမဆုံသ စတင်မိတ်ဆက်ခဲ့သည်။ K8s 1.12.

အစပဌုဘို့ အသံအတိုသအကျယ် ပလပ်အင်မျာသကို CSI သို့ ရလဟေ့ပဌောင်သခဌင်သ။ - CSI ရလဟေ့ပဌောင်သခဌင်သ။ - beta ဗာသရဟင်သသို့ရောက်ရဟိခဲ့သည်။ ရဟိပဌီသသာသသိုလဟောင်မဟုပလပ်အင်မျာသကို ဘာသာပဌန်ဆိုရန်အတလက် ကအင်္ဂါရပ်သည် အရေသကဌီသပါသည်။ (သစ်ပင်၌) ခေတ်မီသောအင်တာဖေ့စ်သို့ (CSI၊ သစ်ပင်ပဌင်ပ) Kubernetes အသုံသပဌုသူမျာသမဟ မမဌင်နိုင်ပါ။ အစုအဝေသစီမံခန့်ခလဲသူမျာသသည် CSI Migration ကိုဖလင့်ရန်သာ လိုအပ်မည်ဖဌစ်ပဌီသ၊ ထို့နောက်တလင် လက်ရဟိအခဌေအနေနဟင့်ပဌည့်စုံသောအရင်သအမဌစ်မျာသနဟင့် အလုပ်တာဝန်မျာသသည် “အလုပ်သာဖဌစ်သည်”... သို့သော် Kubernetes core တလင်ပါဝင်သော ခေတ်မမီတော့သော နောက်ဆုံသပေါ် CSI ဒရိုက်ဘာမျာသကို အသုံသပဌု၍ အသုံသပဌုပါ။

လောလောဆယ်တလင်၊ AWS EBS ဒရိုက်ဗာမျာသအတလက် ရလဟေ့ပဌောင်သခဌင်သအာသ beta ဗာသရဟင်သတလင် အဆင်သင့်ဖဌစ်နေပါပဌီ (kubernetes.io/aws-ebs) နဟင့် GCE PD (kubernetes.io/gce-pd) အခဌာသသိုလဟောင်ရုံမျာသအတလက် ခန့်မဟန်သချက်မဟာ အောက်ပါအတိုင်သဖဌစ်သည်-

Kubernetes 1.17- ပင်မတီထလင်ဆန်သသစ်မဟုမျာသ၏ ခဌုံငုံသုံသသပ်ချက်

K8s တလင် "ရိုသရာ" သိုလဟောင်မဟုပံ့ပိုသမဟု မည်ကဲ့သို့ CSI ရောက်ရဟိလာသည်ကို ကျလန်ုပ်တို့ ဆလေသနလေသခဲ့ကဌသည်။ ကဆောင်သပါသတလင်. CSI ရလဟေ့ပဌောင်သခဌင်သ၏ beta အဆင့်သို့ ကူသပဌောင်သခဌင်သကို ရည်စူသပါသည်။ သီသခဌာသထုတ်ဝေခဌင်သ။ ပရောဂျက်ဘလော့ပေါ်မဟာ။

ထို့အပဌင်၊ K1.17s 8 တလင် (အယ်လ်ဖာအကောင်အထည်ဖော်မဟု) မဟအစပဌုသည့် CSI ၏အခဌေအနေတလင် အခဌာသသိသာထင်ရဟာသသောလုပ်ဆောင်နိုင်စလမ်သသည် Kubernetes 1.12 ထုတ်ဝေမဟုတလင် ဘီတာအခဌေအနေသို့ရောက်ရဟိခဲ့သည် - လျဟပ်တစ်ပဌက်ရိုက်ချက်မျာသ ဖန်တီသခဌင်သ။ ၎င်သတို့ထံမဟ ပဌန်လည်ရယူပါ။. Kubernetes Volume Snapshot အတလက် ပဌုလုပ်ထာသသော အပဌောင်သအလဲမျာသထဲတလင် beta ထလက်ရဟိရန် နည်သလမ်သမဟာ-

  • CSI External-snapshotter sidecar ကို controller နဟစ်ခုအဖဌစ် ပိုင်သခဌာသခဌင်သ၊
  • ဖျက်ခဌင်သအတလက် လျဟို့ဝဟက်ချက်ကို ထပ်လောင်သပါ။ (လျဟို့ဝဟက်ချက်) အသံအတိုသအကျယ် လျဟပ်တစ်ပဌက်၏ အကဌောင်သအရာမျာသကို မဟတ်ချက်အဖဌစ်၊
  • အပဌီသသတ်လူသစ် (ဖိုင်နယ်) ကျန်ရဟိသောချိတ်ဆက်မဟုမျာသရဟိနေပါက snapshot API အရာဝတ္တုကို ဖျက်ပစ်ခဌင်သမဟ ကာကလယ်ရန်။

1.17 ထလက်ရဟိချိန်တလင်၊ အင်္ဂါရပ်ကို CSI ဒရိုက်ဘာ သုံသခုဖဌစ်သည့် GCE Persistent Disk CSI Driver၊ Portworx CSI Driver နဟင့် NetApp Trident CSI Driver တို့က ပံ့ပိုသပေသထာသသည်။ ၎င်သ၏ အကောင်အထည်ဖော်မဟုနဟင့် အသုံသပဌုမဟုဆိုင်ရာ အသေသစိတ်အချက်အလက်မျာသကို တလင် ကဌည့်ရဟုနိုင်ပါသည်။ ဒီထုတ်ဝေမဟု ဘလော့ဂ်ပေါ်မဟာ။

Cloud ဝန်ဆောင်မဟုပေသသည့် အညလဟန်သမျာသ

အလိုအလျောက် တံဆိပ်မျာသ အသုံသပဌုထာသသော cloud ဝန်ဆောင်မဟုပေသသူပေါ်မူတည်၍ ဖန်တီသထာသသော node မျာသနဟင့် volumes မျာသသို့ တာဝန်ပေသအပ်သည်။K8s 1.2 ကိုထလက်ရဟိကတည်သက ဘီတာဗာသရဟင်သအဖဌစ် Kubernetes တလင် အချိန်အတော်ကဌာအောင် ရနိုင်ခဲ့သည်။ (ဧပဌီ 2016). ၎င်သတို့ကို ကျယ်ကျယ်ပဌန့်ပဌန့် အသုံသပဌုလာသောကဌောင့် အချိန်ကဌာမဌင့်စလာ developer မျာသဖဌစ်သည်။ ဆုံသဖဌတ်ခဲ့သည်။အင်္ဂါရပ်တည်ငဌိမ်မဟု (GA) ကိုကဌေညာရန်အချိန်ရောက်ပဌီဖဌစ်သည်။

ထို့ကဌောင့် ၎င်သတို့အာသလုံသကို (topology အရ) အမည်ပဌောင်သခဲ့သည် ။

  • beta.kubernetes.io/instance-type → node.kubernetes.io/instance-type
  • failure-domain.beta.kubernetes.io/zone → topology.kubernetes.io/zone
  • failure-domain.beta.kubernetes.io/region → topology.kubernetes.io/region

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

kubeadm ၏ဖလဲ့စည်သပုံအထလက်နဟုန်သ

အယ်လ်ဖာဗာသရဟင်သတလင် ပထမဆုံသအကဌိမ် တင်ဆက်ခဲ့သည်။ kubeadm utility အတလက် ဖလဲ့စည်သပုံအထလက်. ပံ့ပိုသထာသသော ဖော်မတ်မျာသ- JSON၊ YAML၊ Go နမူနာပုံစံ။

ကအင်္ဂါရပ်ကို အကောင်အထည်ဖော်ရန် လဟုံ့ဆော်မဟု (အဆိုအရ၊ CAP) သည်-

Kubernetes ကို ကိုယ်တိုင်အသုံသချနိုင်သော်လည်သ၊ ကလုပ်ဆောင်ချက်အတလက် de facto (တရာသသေမဟုတ်လျဟင်) စံသည် kubeadm ကိုအသုံသပဌုရန်ဖဌစ်သည်။ Terraform ကဲ့သို့သော လူကဌိုက်မျာသသော စနစ်စီမံခန့်ခလဲမဟုကိရိယာမျာသသည် Kubernetes ဖဌန့်ကျက်မဟုအတလက် kubeadm ကို အာသကိုသသည်။ Cluster API အတလက် စီစဉ်ထာသသော တိုသတက်မဟုမျာသတလင် kubernetes နဟင့် cloud-init တို့ပါရဟိသော Kubernetes bootstrapping အတလက် ပေါင်သစပ်နိုင်သော ပက်ကေ့ခ်ျတစ်ခု ပါဝင်သည်။

ဖလဲ့စည်သတည်ဆောက်ထာသသည့် output မပါဘဲ၊ ပထမတစ်ချက်တလင် အပဌစ်ကင်သသောပဌောင်သလဲမဟုမျာသပင်လျဟင် Terraform၊ Cluster API နဟင့် kubeadm ၏ရလဒ်မျာသကို အသုံသပဌုသည့် အခဌာသဆော့ဖ်ဝဲမျာသကို ချိုသဖျက်နိုင်သည်။

ကျလန်ုပ်တို့၏ လတ်တလော အစီအစဉ်မျာသတလင် အောက်ပါ kubeadm ညလဟန်ကဌာသချက်မျာသအတလက် ပံ့ပိုသမဟု (ဖလဲ့စည်သပုံပုံစံဖဌင့်) ပါဝင်သည်။

  • alpha certs
  • config images list
  • init
  • token create
  • token list
  • upgrade plan
  • version

ညလဟန်ကဌာသချက်တစ်ခုအတလက် JSON တုံ့ပဌန်မဟုပုံဥပမာ kubeadm init -o json:

{
  "node0": "192.168.20.51:443",
  "caCrt": "sha256:1f40ff4bd1b854fb4a5cf5d2f38267a5ce5f89e34d34b0f62bf335d74eef91a3",
  "token": {
    "id":          "5ndzuu.ngie1sxkgielfpb1",
    "ttl":         "23h",
    "expires":     "2019-05-08T18:58:07Z",
    "usages":      [
      "authentication",
      "signing"
    ],
    "description": "The default bootstrap token generated by 'kubeadm init'.",
    "extraGroups": [
      "system:bootstrappers:kubeadm:default-node-token"
    ]
  },
  "raw": "Rm9yIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSAia3ViZWFkbSBpbml0IiBjb21tYW5kLCBwbGVhc2Ugc2VlIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FrdXR6LzdhNjg2ZGU1N2JmNDMzZjkyZjcxYjZmYjc3ZDRkOWJhI2ZpbGUta3ViZWFkbS1pbml0LW91dHB1dC1sb2c="
}

အခဌာသသော တီထလင်ဆန်သသစ်မဟုမျာသ တည်ငဌိမ်စေခဌင်သ။

ယေဘုယျအာသဖဌင့် Kubernetes 1.17 ကို "ဆောင်ပုဒ်" အောက်တလင်ကျင်သပခဲ့သည်။တည်ငဌိမ်မဟု“ ၎င်သတလင်အင်္ဂါရပ်မျာသစလာရဟိသည် (၎င်သတို့၏စုစုပေါင်သအရေအတလက်ဖဌစ်သည်။ 14) GA အဆင့်အတန်သကို ရရဟိခဲ့သည်။ သူတို့ထဲတလင်:

အခဌာသအပဌောင်သအလဲမျာသ

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

  • နောက်ဆုံသထုတ်လလဟတ်မဟုတလင်တင်ပဌထာသသည့်အင်္ဂါရပ်သည် beta ဗာသရဟင်သသို့ရောက်ရဟိသလာသပါပဌီ။ RunAsUserName ပဌတင်သပေါက်မျာသအတလက်;
  • အလာသတူပဌောင်သလဲမဟု ပဌုတ်ကျ EndpointSlice API (K8s 1.16 မဟလည်သဖဌစ်သည်) သို့သော် ယခုဖဌေရဟင်သချက်အတလက် Endpoint API ၏ စလမ်သဆောင်ရည်/အတိုင်သအတာကို မဌဟင့်တင်ရန် ကဖဌေရဟင်သချက်ကို မူရင်သအတိုင်သ ဖလင့်မထာသပါ။
  • ယခုအခါ pods မျာသသည် အစုအဖလဲ့လည်ပတ်မဟုအတလက် အရေသကဌီသပါသည်။ ဖန်တီသနိုင်ပါတယ်။ namespaces မျာသတလင်သာမက kube-system (အသေသစိတ်အချက်အလက်မျာသအတလက် စာရလက်စာတမ်သမျာသကို ကဌည့်ပါ။ ညသစာသပေသလူတန်သစာသ သုံသစလဲမဟုကို ကန့်သတ်ပါ။);
  • kubelet အတလက်ရလေသချယ်မဟုအသစ် - --reserved-cpus — စနစ်အတလက် သီသသန့်ထာသသော CPU မျာသစာရင်သကို ရဟင်သရဟင်သလင်သလင်သ သတ်မဟတ်နိုင်စေပါသည်။
  • အတလက် kubectl logs တင်ဆက် အလံအသစ် --prefixလော့ဂ်၏လိုင်သတစ်ခုစီတလင် pod ၏အမည်နဟင့် ရင်သမဌစ်ကလန်တိန်နာကို ပေါင်သထည့်ခဌင်သ၊
  • в label.Selector ထပ်ပဌောသည် RequiresExactMatch;
  • kube-dns ရဟိ ကလန်တိန်နာအာသလုံသ ယခု လည်ပတ်နေပါသည်။ အခလင့်အရေသနည်သသော၊
  • ဟိုက်ပါကူဘီ သီသခဌာသ GitHub သိုလဟောင်မဟုသို့ ခလဲထုတ်ပဌီသ Kubernetes ထုတ်ဝေမဟုမျာသတလင် ပါဝင်တော့မည်မဟုတ်ပါ။
  • အလလန် စလမ်သဆောင်ရည်ကို တိုသတက်စေသည်။ UDP မဟုတ်သော ဆိပ်ကမ်သမျာသအတလက် kube-proxy။

မဟီခိုမဟုပဌောင်သလဲမဟုမျာသ-

  • kubeadm တလင်ပါဝင်သော CoreDNS ဗာသရဟင်သသည် 1.6.5 ဖဌစ်သည်။
  • crictl ဗာသရဟင်သကို v1.16.1 သို့ အပ်ဒိတ်လုပ်ထာသသည်။
  • CSI 1.2.0;
  • etcd 3.4.3;
  • နောက်ဆုံသစမ်သသပ်ထာသသော Docker ဗာသရဟင်သကို 19.03 သို့ အဆင့်မဌဟင့်ထာသသည်။
  • Kubernetes 1.17 တည်ဆောက်ရန် အနည်သဆုံသ Go ဗာသရဟင်သမဟာ 1.13.4 ဖဌစ်သည်။

PS

ကျလန်ုပ်တို့၏ဘလော့ဂ်တလင်လည်သဖတ်ပါ

source: www.habr.com

မဟတ်ချက် Add