د کوبرنیټس کلستر ته وده ورکول پرته له ځنډ څخه

د کوبرنیټس کلستر ته وده ورکول پرته له ځنډ څخه

ستاسو د Kubernetes کلستر لپاره د اپ گریڈ پروسه

په ځینو وختونو کې، کله چې د Kubernetes کلستر کاروئ، د چلولو نوډونو تازه کولو ته اړتیا شتون لري. پدې کې کیدای شي د بسته بندي تازه معلومات، د کرنل تازه معلومات، یا د نوي مجازی ماشین عکسونو ځای پرځای کول شامل وي. د Kubernetes په اصطلاح کې دې ته ویل کیږي "داوطلبانه ګډوډي".

دا پوسټ د 4 پوسټ لړۍ برخه ده:

  1. دا پوسټ.
  2. د کبرنیټس کلستر کې د پوډونو سم بندول
  3. د پوډ ځنډول کله چې حذف شي
  4. د PodDisruptionBudgets په کارولو سره د Kubernetes کلستر بند وخت څخه څنګه مخنیوی وکړئ

(نږدې په نږدې راتلونکي کې په لړۍ کې د پاتې مقالو ژباړې تمه وکړئ)

پدې مقاله کې ، موږ به ټول هغه وسیلې تشریح کړو چې کوبرنیټس ستاسو په کلستر کې روان نوډونو لپاره د صفر کم وخت ترلاسه کولو لپاره چمتو کوي.

د ستونزې تعریف

موږ به په لومړي سر کې یو ساده چلند وکړو، ستونزې وپیژنو او د دې تګلارې احتمالي خطرونه و ارزوو، او د هرې ستونزې د حل کولو لپاره پوهه رامینځته کړو چې موږ د دورې په اوږدو کې ورسره مخ یو. پایله یو ترتیب دی چې زموږ د صفر ټیټ وخت هدف ترلاسه کولو لپاره د ژوند دورې هکونه ، د چمتووالي تحقیقات ، او د پوډ ګډوډي بودیجې کاروي.

زموږ د سفر پیل کولو لپاره، راځئ چې یو کنکریټ مثال واخلو. راځئ چې ووایو موږ د دوه نوډونو کوبرنیټس کلستر لرو ، په کوم کې چې یو غوښتنلیک د دوه پوډونو سره روان دی چې شاته موقعیت لري Service:

د کوبرنیټس کلستر ته وده ورکول پرته له ځنډ څخه

راځئ چې د نګینکس او خدماتو سره دوه پوډونو سره پیل وکړو چې زموږ په دوه کوبرنیټس کلستر نوډونو کې روان دي.

موږ غواړو زموږ په کلستر کې د دوه کارګر نوډونو کرنل نسخه تازه کړو. دا څنګه کوو؟ یو ساده حل به دا وي چې نوي نوډونه د نوي شوي ترتیب سره بوټ کړئ او بیا د نوي پیل کولو پرمهال زاړه نوډونه بند کړئ. پداسې حال کې چې دا به کار وکړي، د دې طریقې سره به یو څو ستونزې وي:

  • کله چې تاسو زاړه نوډونه بند کړئ، هغه پوډونه چې په دوی کې روان دي به هم بند شي. څه که چیرې پوزې د ښکلي بندولو لپاره پاکولو ته اړتیا ولري؟ د مجازی کولو سیسټم چې تاسو یې کاروئ ممکن د پاکولو پروسې بشپړیدو ته انتظار ونه کړي.
  • څه که تاسو په ورته وخت کې ټول نوډونه بند کړئ؟ تاسو به مناسب وخت ترلاسه کړئ پداسې حال کې چې پوډونه نوي نوډونو ته ځي.

موږ یوې لارې ته اړتیا لرو چې په زړه پورې توګه له زړو نوډونو څخه پوډونه مهاجرت کړو پداسې حال کې چې ډاډ ترلاسه کړو چې زموږ هیڅ کارګر پروسه نه روانه ده پداسې حال کې چې موږ نوډ کې بدلون راوړو. یا کله چې موږ د کلستر بشپړ بدیل ترسره کوو، لکه څنګه چې په مثال کې (دا، موږ د VM عکسونه ځای په ځای کوو)، موږ غواړو روان غوښتنلیکونه له زړو نوډونو څخه نوي ته انتقال کړو. په دواړو حالتونو کې، موږ غواړو د نوي پوډونو مخه ونیسو چې په زړو نوډونو کې ټاکل شوي، او بیا له دوی څخه ټول روان پوډونه له منځه یوسو. د دې اهدافو ترلاسه کولو لپاره موږ کولی شو کمانډ وکاروو kubectl drain.

د نوډ څخه ټول پوډونه بیا توزیع کول

د اوبو لګولو عملیات تاسو ته اجازه درکوي چې ټول پوډونه له نوډ څخه بیا توزیع کړئ. د اوبو لګولو په جریان کې، نوډ د غیر مهال ویش په توګه نښه شوی (بیرغ NoSchedule). دا د نوي پوډرو د څرګندیدو مخه نیسي. بیا ډرین د نوډ څخه د پوډونو ایستل پیل کوي ، هغه کانټینرونه بندوي چې اوس مهال په نوډ کې روان دي ، سیګنال لیږي TERM کانتینرونه په یوه پوزه کې.

که څه هم kubectl drain د پوډونو د ایستلو لپاره به ښه دنده ترسره کړي، دوه نور فکتورونه شتون لري چې کولی شي د اوبو ایستلو عملیات ناکام کړي:

  • ستاسو غوښتنلیک باید د سپارلو په وخت کې په زړه پورې توګه پای ته ورسوي TERM سیګنال کله چې پوډونه له مینځه وړل کیږي، Kubernetes یو سیګنال لیږي TERM کانټینرونه او د ټاکلي وخت لپاره د دوی د ودریدو لپاره انتظار کوي، وروسته له دې، که دوی ونه دریږي، دا په زور سره ختموي. په هر حالت کې، که ستاسو کانټینر سیګنال په سمه توګه ونه پیژني، تاسو کولی شئ په غلط ډول پوډونه ووژنئ که دوی اوس مهال روان وي (د مثال په توګه، د ډیټابیس لیږد روان دی).
  • تاسو ټول هغه پوډونه له لاسه ورکوئ چې ستاسو غوښتنلیک لري. دا ممکن شتون ونلري کله چې نوي کانټینرونه په نوي نوډونو کې پیل شي، یا که ستاسو پوډونه د کنټرولرونو پرته ځای په ځای شوي وي، دوی ممکن بیا پیل نشي.

د وخت څخه ډډه کول

د داوطلبانه ګډوډۍ څخه د ځنډ وخت کمولو لپاره، لکه په نوډ کې د ډرین عملیاتو څخه، کوبرنیټس لاندې د ناکامۍ اداره کولو اختیارونه وړاندې کوي:

په پاتې لړۍ کې، موږ به د دې Kubernetes ځانګړتیاوې وکاروو ترڅو د پوډ مهاجرت اغیز کم کړي. د دې لپاره چې د اصلي مفکورې تعقیب اسانه کړي، موږ به زموږ پورته مثال د لاندې سرچینو ترتیب سره وکاروو:

---
apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx-deployment
 labels:
   app: nginx
spec:
 replicas: 2
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     containers:
     - name: nginx
       image: nginx:1.15
       ports:
       - containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
 name: nginx-service
spec:
 selector:
   app: nginx
 ports:
 - protocol: TCP
   targetPort: 80
   port: 80

دا ترتیب یو کوچنی مثال دی Deployment، کوم چې په کلستر کې د نګینکس پوډونه اداره کوي. سربیره پردې، ترتیب د سرچینې تشریح کوي Service، کوم چې په کلستر کې د نګینکس پوډونو ته د لاسرسي لپاره کارول کیدی شي.

د دورې په جریان کې ، موږ به په تکراري ډول دا ترتیب پراخه کړو ترڅو په پای کې ټول هغه وړتیاوې شاملې کړي چې کوبرنیټس د وخت کمولو لپاره چمتو کوي.

د AWS او هاخوا څخه د صفر کم وخت لپاره د Kubernetes کلستر تازه معلوماتو بشپړ پلي شوي او ازمول شوي نسخې لپاره ، لیدنه وکړئ Gruntwork.io.

زموږ په بلاګ کې نورې مقالې هم ولولئ:

سرچینه: www.habr.com

Add a comment