ڪبرنيٽس ڪلستر کي مختلف ڊيٽا سينٽرن ۾ ڪيئن ڳنڍجي

ڪبرنيٽس ڪلستر کي مختلف ڊيٽا سينٽرن ۾ ڪيئن ڳنڍجي
اسان جي Kubernetes Quick Start سيريز ۾ ڀليڪار. هي هڪ باقاعده ڪالم آهي جنهن ۾ تمام دلچسپ سوالن سان گڏ اسان آن لائن ۽ اسان جي تربيتن ۾ حاصل ڪندا آهيون. Kubernetes ماهر جواب.

اڄ جو ماهر آهي دانيال پولينچڪ (دانييل پولينسڪ). ڊينيل هڪ استاد ۽ سافٽ ويئر ڊولپر طور ڪم ڪري ٿو سکيا 8s.

جيڪڏھن توھان چاھيو ٿا توھان جي سوال جو جواب ايندڙ پوسٽ ۾، اي ميل ذريعي اسان سان رابطو ڪريو يا Twitter: @learnk8s.

پوئين پوسٽون وڃايو؟ انھن کي ڳوليو هتي.

ڪبرنيٽس ڪلستر کي مختلف ڊيٽا سينٽرن ۾ ڪيئن ڳنڍجي؟

ذريعا: Kubefed v2 جلد اچي رهيو آهي، ۽ مان پڻ پڙهڻ جي صلاح ڏيان ٿو واپرائيندڙ и ملٽي-ڪلسٽر-شيڊيولر پروجيڪٽ.

گهڻو ڪري، انفراسٽرڪچر نقل ڪيو ويندو آهي ۽ مختلف علائقن ۾ ورهايو ويندو آهي، خاص طور تي ڪنٽرول ٿيل ماحول ۾.

جيڪڏهن هڪ علائقو دستياب ناهي، ٽريفڪ کي ٻئي ڏانهن منتقل ڪيو ويندو آهي رڪاوٽن کان بچڻ لاءِ.

ڪبرنيٽس سان، توهان هڪ جهڙي حڪمت عملي استعمال ڪري سگهو ٿا ۽ مختلف علائقن ۾ ڪم لوڊ ورهائي سگهو ٿا.

توهان وٽ هر ٽيم، علائقي، ماحول، يا انهن عناصر جو هڪ ميلاپ هڪ يا وڌيڪ ڪلستر هوندا.

توھان جا ڪلستر مختلف بادلن ۽ آن پريمسس ۾ ھوسٽ ڪري سگھجن ٿا.

پر توهان اهڙي جغرافيائي پکيڙ لاءِ انفراسٽرڪچر کي ڪيئن رٿيو ٿا؟
ڇا توهان کي هڪ نيٽ ورڪ تي ڪيترن ئي بادل ماحول لاء هڪ وڏو ڪلستر ٺاهڻ جي ضرورت آهي؟
يا ڪيترائي ننڍا ڪلستر آهن ۽ انهن کي ڪنٽرول ڪرڻ ۽ هم وقت سازي ڪرڻ جو رستو ڳوليو؟

ھڪڙي قيادت ڪلستر

ھڪڙي ھڪڙي نيٽ ورڪ تي ھڪڙو ڪلستر ٺاھيو ايترو آسان نه آھي.

تصور ڪريو ته توهان وٽ هڪ حادثو آهي، ڪلستر حصن جي وچ ۾ رابطي وڃائي وئي آهي.

جيڪڏهن توهان وٽ هڪ ماسٽر سرور آهي، وسيلن جو اڌ حصو نوان حڪم حاصل ڪرڻ جي قابل نه هوندا ڇو ته اهي ماسٽر سان رابطو ڪرڻ جي قابل نه هوندا.

۽ ساڳئي وقت توهان وٽ آهي پراڻي روٽنگ ٽيبل (kube-proxy نوان ڊائون لوڊ نٿا ڪري سگهن) ۽ ڪو به اضافي پوڊ (ڪيبلٽ اپڊيٽ جي درخواست نه ٿو ڪري سگهي).

معاملن کي وڌيڪ خراب ڪرڻ لاءِ، جيڪڏهن ڪبرنيٽس ڪو نوڊ نه ڏسندو آهي، اهو ان کي يتيم طور نشان لڳائيندو آهي ۽ غائب ٿيل پوڊز کي موجوده نوڊس ۾ ورهائيندو آهي.

نتيجي طور، توهان وٽ ٻه ڀيرا ڪيترائي پوڊ آهن.

جيڪڏهن توهان هر علائقي لاءِ هڪ ماسٽر سرور ٺاهيو ٿا، اتي اي ڊي ڊي ڊيٽابيس ۾ اتفاق راءِ واري الگورتھم سان مسئلا هوندا. (لڳ ڀڳ ايڊ. - حقيقت ۾، etcd ڊيٽابيس کي لازمي طور تي ماسٽر سرورز تي واقع هجڻ ضروري ناهي. اهو هڪ ئي علائقي ۾ سرور جي هڪ الڳ گروپ تي هلائي سگهجي ٿو. سچ، ساڳئي وقت ڪلستر جي ناڪامي جو هڪ نقطو حاصل ڪرڻ. پر جلدي.)

وغيره استعمال ڪري ٿو raft algorithmڊسڪ تي لکڻ کان اڳ قيمت جي ڳالهين لاء.
اهو آهي، اڪثريت جي اڪثريت تي اتفاق ٿيڻ گهرجي ان کان اڳ جو رياست وغيره ڏانهن لکيو وڃي.

جيڪڏهن etcd مثالن جي وچ ۾ ويڪرائي ڊرامائي طور تي وڌي ٿي، جيئن مختلف علائقن ۾ ٽن etcd مثالن جي صورت ۾ آهي، اهو هڪ ڊگهو وقت وٺندو آهي هڪ قدر ڳالهين ۽ ڊسڪ تي لکڻ لاء.
اهو ظاهر ٿئي ٿو Kubernetes ڪنٽرولرز ۾.

ڪنٽرولر مينيجر کي تبديلي جي باري ۾ سکڻ ۽ ڊيٽابيس تي جواب لکڻ لاء وڌيڪ وقت جي ضرورت آهي.

۽ ڇاڪاڻ ته اتي ھڪڙو ڪنٽرولر نه آھي، پر ڪيترائي، هڪ زنجير ردعمل نتيجو ۽ سڄو ڪلستر تمام سست ڪم ڪرڻ شروع ڪري ٿو.

etcd ايترو دير سان حساس آهي سرڪاري دستاويز باقاعده هارڊ ڊرائيو جي بدران SSDs استعمال ڪرڻ جي سفارش ڪري ٿو.

في الحال ڪو به سٺو مثال نه آهي هڪ وڏي نيٽ ورڪ لاء هڪ واحد ڪلستر لاء.

بنيادي طور تي، ڊولپر ڪميونٽي ۽ SIG-ڪلستر گروپ اهو معلوم ڪرڻ جي ڪوشش ڪري رهيا آهن ته ڪيئن ڪلستر کي ترتيب ڏيڻ جي ساڳيء طرح ڪبرنيٽس آرڪيسٽريٽس ڪنٽينرز.

آپشن 1: ڪلستر فيڊريشن ڪوبيفڊ سان

SIG-ڪلسٽر کان سرڪاري جواب - kubefed2، اصل ڪوبي فيڊريشن ڪلائنٽ ۽ آپريٽر جو هڪ نئون نسخو.

پهريون ڀيرو، اسان ڪلستر جي مجموعن کي منظم ڪرڻ جي ڪوشش ڪئي هڪ واحد شئي طور ڪبي فيڊريشن ٽول استعمال ڪندي.

شروعات سٺي هئي، پر آخر ۾ ڪبي فيڊريشن ڪڏهن به مقبول نه ٿي سگهي، ڇاڪاڻ ته اهو سڀني وسيلن سان سهڪار نه ڪيو.

اهو وفاق جي ترسيل ۽ خدمتن جي حمايت ڪئي، پر رياستي سيٽ نه، مثال طور.
انهي سان گڏ، فيڊريشن جي جوڙجڪ تشريح جي صورت ۾ منتقل ڪئي وئي ۽ لچڪدار نه هئي.

تصور ڪريو ته توهان صرف تشريح استعمال ڪندي فيڊريشن ۾ هر ڪلستر لاءِ ريپليڪا ورهاڱي کي ڪيئن بيان ڪري سگهو ٿا.

اهو هڪ مڪمل گندو هو.

SIG-cluster kubefed v1 کان پوءِ تمام گهڻو ڪم ڪيو ۽ فيصلو ڪيو ته مسئلي کي مختلف زاويه کان وٺي.

تشريح جي بدران، انهن هڪ ڪنٽرولر ڇڏڻ جو فيصلو ڪيو جيڪو ڪلستر تي نصب ٿيل آهي. اهو ڪسٽم ريسورس ڊيفينشنز (CRDs) استعمال ڪندي ترتيب ڏئي سگهجي ٿو.

هر وسيلن لاءِ جيڪو وفاق جو حصو هوندو، توهان وٽ ٽن حصن سان گڏ ڪسٽم CRD تعريف آهي:

  • هڪ وسيلن جي معياري وصف، مثال طور تعیناتي؛
  • سيڪشن placement, جتي توهان وضاحت ڪيو ته وسيلن کي وفاق ۾ ڪيئن ورهايو ويندو؛
  • سيڪشن override، جتي هڪ مخصوص وسيلن لاءِ توهان وزن ۽ پيٽرولن کي ترتيب ڏيڻ کان مٿانهون ڪري سگهو ٿا.

هتي هڪ گڏيل ترسيل جو هڪ مثال آهي جڳهه ۽ اوور رائڊ سيڪشن سان.

apiVersion: types.federation.k8s.io/v1alpha1
kind: FederatedDeployment
metadata:
  name: test-deployment
  namespace: test-namespace
spec:
  template:
    metadata:
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
            - image: nginx
              name: nginx
  placement:
    clusterNames:
      - cluster2
      - cluster1
  overrides:
    - clusterName: cluster2
      clusterOverrides:
        - path: spec.replicas
          value: 5

جئين توهان ڏسي سگهو ٿا، فراهمي ٻن ڪلسترن ۾ ورهايل آهي: cluster1 и cluster2.

پهريون ڪلستر ٽن نقلن کي فراهم ڪري ٿو، ۽ ٻيو 5 تي مقرر ڪيو ويو آهي.

جيڪڏهن توهان کي نقلن جي تعداد تي وڌيڪ ڪنٽرول جي ضرورت آهي، kubefed2 هڪ نئون ReplicaSchedulingPreference اعتراض مهيا ڪري ٿو جتي replicas کي وزن ڏئي سگهجي ٿو:

apiVersion: scheduling.federation.k8s.io/v1alpha1
kind: ReplicaSchedulingPreference
metadata:
  name: test-deployment
  namespace: test-ns
spec:
  targetKind: FederatedDeployment
  totalReplicas: 9
  clusters:
    A:
      weight: 1
    B:
      weight: 2

CRD جو ڍانچو ۽ API اڃا مڪمل طور تي تيار نه آهي، ۽ سرڪاري پروجيڪٽ جي مخزن ۾ فعال ڪم جاري آهي.

kubefed2 تي نظر رکو، پر ياد رکو ته اهو اڃا تائين پيداوار لاء مناسب ناهي.

kubefed2 بابت وڌيڪ ڄاڻو kubefed2 بابت سرڪاري مضمون ڪبرنيٽس بابت بلاگ ۾ ۽ ان ۾ kubefed منصوبي جي سرڪاري مخزن.

آپشن 2: Booking.com انداز ۾ ڪلستر گڏ ڪرڻ

Booking.com جي ڊولپرز kubefed v2 تي ڪم نه ڪيو، پر اهي Shipper سان گڏ آيا - ڪيترن ئي ڪلسترن تي پهچائڻ لاءِ هڪ آپريٽر، ڪيترن ئي علائقن ۽ ڪيترن ئي بادلن ۾.

واپرائيندڙ ڪجھه ملندڙ جلندڙ kubefed2.

ٻئي اوزار توهان کي توهان جي ملٽي ڪلسٽر جي ترتيب واري حڪمت عملي کي ترتيب ڏيڻ جي اجازت ڏين ٿا (ڪهڙا ڪلسٽر استعمال ڪيا ويا آهن ۽ انهن جا ڪيترا نقل آهن).

پر شپپر جو مقصد پهچائڻ دوران غلطين جي خطري کي گهٽائڻ آهي.

شپپر ۾، توھان وضاحت ڪري سگھو ٿا ھڪڙي مرحلن جو ھڪڙو سلسلو جيڪو بيان ڪري ٿو ريپليڪس جي تقسيم جي وچ ۾ پوئين ۽ موجوده تعیناتي ۽ ايندڙ ٽرئفڪ جي مقدار جي وچ ۾.

جڏهن توهان هڪ وسيلن کي ڪلستر ڏانهن ڌڪيو ٿا، شپپر ڪنٽرولر وڌ ۾ وڌ رول آئوٽ ڪري ٿو جيڪا تبديلي سڀني شامل ٿيل ڪلستر ۾.

پڻ، شپپر تمام محدود آهي.

مثال طور، هي هيلم چارٽس کي ان پٽ طور قبول ڪري ٿو ۽ وينلا وسيلن جي حمايت نه ڪندو آهي.
عام اصطلاحن ۾، Shipper هن طرح ڪم ڪري ٿو.

معياري ترسيل جي بدران، توهان کي هڪ ايپليڪيشن وسيلو ٺاهڻ جي ضرورت آهي جنهن ۾ هيلم چارٽ شامل آهي:

apiVersion: shipper.booking.com/v1alpha1
kind: Application
metadata:
  name: super-server
spec:
  revisionHistoryLimit: 3
  template:
    chart:
      name: nginx
      repoUrl: https://storage.googleapis.com/shipper-demo
      version: 0.0.1
    clusterRequirements:
      regions:
        - name: local
    strategy:
      steps:
        - capacity:
            contender: 1
            incumbent: 100
          name: staging
          traffic:
            contender: 0
            incumbent: 100
        - capacity:
            contender: 100
            incumbent: 0
          name: full on
          traffic:
            contender: 100
            incumbent: 0
    values:
      replicaCount: 3

Shipper ڪيترن ئي ڪلسترن کي منظم ڪرڻ لاء هڪ سٺو اختيار آهي، پر هيلم سان ان جو ويجهي تعلق صرف رستي ۾ اچي ٿو.

ڇا ٿيندو جيڪڏهن اسان سڀ هيلم کان تبديل ڪريون ترتيب ڏيڻ يا ڪپتان?

Shipper ۽ ان جي فلسفي بابت وڌيڪ ڄاڻو هي سرڪاري پريس رليز.

جيڪڏھن توھان چاھيو ٿا ته ڪوڊ ۾ ڳولھيو، سرڪاري پروجيڪٽ جي مخزن ڏانهن سر.

اختيار 3: "جادو" ڪلستر ضم ڪرڻ

Kubefed v2 ۽ Shipper ڪلسٽر فيڊريشن سان ڪم ڪن ٿا، ڪسٽم ريسورس جي تعريف ذريعي ڪلسٽرن کي نوان وسيلا مهيا ڪن ٿا.

پر ڇا جيڪڏھن توھان نٿا چاھيو ته ضم ڪرڻ لاءِ سڀئي ترسيلون ٻيهر لکڻ ، StatefulSets ، DaemonSets وغيره؟

YAML کي تبديل ڪرڻ کان سواءِ وفاق ۾ موجود ڪلسٽر کي ڪيئن شامل ڪجي؟

ملٽي ڪلسٽر شيڊيولر هڪ ايڊمرلٽي پروجيڪٽ آهي، جيڪو ڪلسٽرن تي ڪم لوڊ شيڊول ڪرڻ سان واسطو رکي ٿو.

پر ڪلسٽر سان لهه وچڙ ۾ اچڻ جي نئين طريقي سان اچڻ جي بدران ۽ وسيلن کي ڪسٽم تعريفن ۾ لپي، ملٽي-ڪلسٽر-شيڊيولر معياري ڪبرنيٽس لائف سائيڪل ۾ شامل ڪيو ويو آهي ۽ سڀني ڪالن کي روڪي ٿو جيڪو پوڊ ٺاهي ٿو.

هر ٺاهيل پوڊ کي فوري طور تي ڊمي سان تبديل ڪيو ويو آهي.

ملٽي-ڪلسٽر-شيڊيولر استعمال ڪري ٿو رسائي جي ترميم لاءِ ويب هِڪڪال کي روڪڻ ۽ بيڪار ڊمي پوڊ ٺاهڻ لاءِ.

اصل پوڊ هڪ ٻئي پلاننگ چڪر مان گذري ٿو، جتي سڄي فيڊريشن جي پولنگ کان پوءِ، مقرري جو فيصلو ڪيو ويندو آهي.

آخرڪار، پوڊ ٽارگيٽ ڪلستر تائين پهچايو ويو آهي.

نتيجي طور، توھان وٽ ھڪڙو اضافي پوڊ آھي جيڪو ڪجھھ نٿو ڪري، صرف جاء وٺندو آھي.

فائدو اهو آهي ته توهان کي سامان گڏ ڪرڻ لاءِ نوان وسيلا لکڻ جي ضرورت نه هئي.

هر وسيلو جيڪو هڪ پوڊ ٺاهي ٿو خودڪار طور تي ضم ٿيڻ لاء تيار آهي.

اهو دلچسپ آهي، ڇاڪاڻ ته اوچتو توهان وٽ سامان ورهايو ويو آهي ڪيترن ئي علائقن ۾، ۽ توهان کي نوٽيس به نه ڪيو. بهرحال، اهو ڪافي خطرناڪ آهي، ڇاڪاڻ ته هتي هر شيء جادو تي آهي.

پر جڏهن شيپر گهڻو ڪري ترسيل جي اثر کي گهٽائڻ جي ڪوشش ڪري رهيو آهي، ملٽي ڪلسٽر-شيڊيولر وڌيڪ عام ڪمن کي سنڀاليندو آهي ۽ شايد بيچ نوڪرين لاءِ بهتر موزون آهي.

اهو هڪ اعلي درجي جي ترسيل ميڪانيزم نه آهي.

ملٽي ڪلستر-شيڊيولر بابت وڌيڪ ڳولهي سگھجي ٿو سرڪاري مخزن جو صفحو.

جيڪڏھن توھان پڙھڻ چاھيو ٿا ملٽي ڪلسٽر شيڊيولر جي عمل ۾، ايڊمرلٽي آھي Argo سان دلچسپ استعمال ڪيس - ڪم فلوز، واقعا، سي آء ۽ سي ڊي ڪبرنيٽس.

ٻيا اوزار ۽ حل

ڪيترن ئي ڪلسترن کي ڳنڍڻ ۽ منظم ڪرڻ هڪ پيچيده ڪم آهي، ۽ ڪو عالمگير حل ناهي.

جيڪڏھن توھان چاھيو ٿا ته ھن موضوع کي وڌيڪ ڳولھيو، ھتي ڪجھ وسيلا آھن:

اهو سڀ ڪجهه اڄ لاءِ آهي

آخر تائين پڙهڻ لاءِ توهان جي مهرباني!

جيڪڏھن توھان ڄاڻو ٿا ته گھڻن ڪلسترن کي وڌيڪ موثر طريقي سان ڪيئن ڳنڍجي، اسان کي ٻڌايو.

اسان توهان جو طريقو لنڪس ۾ شامل ڪنداسين.

ڪرس نيسبٽ-سمٿ جي خاص مهرباني (ڪرس نيسبٽ-سمٿ) ۽ ونسنٽ ڊي سمي (ونسنٽ ڊي سمٽ) (معتبر انجنيئر ۾ swatmobile.io) مضمون پڙهڻ ۽ وفاق جي ڪم بابت مفيد معلومات شيئر ڪرڻ لاءِ.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو