Навсозии кластери Kubernetes бидуни бекорист

Навсозии кластери Kubernetes бидуни бекорист

Раванди навсозӣ барои кластери Kubernetes-и шумо

Дар баъзе мавридҳо, ҳангоми истифодаи кластери Kubernetes, зарурати навсозии гиреҳҳои иҷрошаванда вуҷуд дорад. Ин метавонад навсозиҳои бастаҳо, навсозиҳои ядро ​​ё ҷойгиркунии тасвирҳои нави мошини виртуалиро дар бар гирад. Дар истилоҳоти Кубернетес ин номида мешавад "Бехатарии ихтиёрӣ".

Ин паём як қисми силсилаи 4 паём аст:

  1. Ин пост.
  2. Хомӯши дурусти pods дар кластери Kubernetes
  3. Анҷоми таъхири як pod, вақте ки он нест карда мешавад
  4. Бо истифода аз PodDisruptionBudgets аз бекористии кластери Kubernetes чӣ гуна пешгирӣ кардан мумкин аст

(тақрибан. Тарҷумаи мақолаҳои боқимондаи силсиларо дар ояндаи наздик интизор шавед)

Дар ин мақола, мо ҳамаи асбобҳоеро тавсиф хоҳем кард, ки Kubernetes барои ноил шудан ба сифр вақти бекорӣ барои гиреҳҳои дар кластери шумо коркунанда таъмин мекунад.

Муайян кардани мушкилот

Мо дар аввал муносибати соддалавҳиро пеш мегирем, мушкилотро муайян мекунем ва хатарҳои эҳтимолии ин равишро арзёбӣ мекунем ва барои ҳалли ҳар як мушкилоте, ки дар тӯли давра дучор мешавем, дониш эҷод мекунем. Натиҷа конфигуратсияест, ки барои ноил шудан ба ҳадафи бефосилаи мо, қалмоқҳои давраи ҳаёт, санҷишҳои омодагӣ ва буҷаҳои вайронкунии Pod-ро истифода мебарад.

Барои оғози сафари худ, биёед як мисоли мушаххасро гирем. Фарз мекунем, ки мо як кластери Кубернетес аз ду гиреҳ дорем, ки дар он замима бо ду қуттии дар паси он ҷойгиршуда кор мекунад. Service:

Навсозии кластери Kubernetes бидуни бекорист

Биёед бо ду подка бо Nginx ва Service, ки дар ду гиреҳи кластерии Kubernetes кор мекунанд, оғоз кунем.

Мо мехоҳем версияи ядрои ду гиреҳи коргариро дар кластери худ навсозӣ кунем. Мо инро чӣ тавр мекунем? Як роҳи ҳалли оддӣ ин аст, ки гиреҳҳои навро бо конфигуратсияи навшуда бор кунед ва сипас ҳангоми оғоз кардани гиреҳҳои нав гиреҳҳои кӯҳнаро қатъ кунед. Гарчанде ки ин кор хоҳад кард, бо ин равиш якчанд мушкилот вуҷуд хоҳад дошт:

  • Вақте ки шумо гиреҳҳои кӯҳнаро хомӯш мекунед, подкҳои дар онҳо коркунанда низ хомӯш карда мешаванд. Чӣ бояд кард, агар қубурҳо барои хомӯш кардани зебо тоза карда шаванд? Системаи виртуализатсияе, ки шумо истифода мебаред, шояд интизор нашавад, ки раванди тозакунӣ анҷом ёбад.
  • Чӣ мешавад, агар шумо дар як вақт ҳамаи гиреҳҳоро хомӯш кунед? Ҳангоми гузаштан ба гиреҳҳои нав, шумо вақти кофӣ хоҳед гирифт.

Ба мо роҳе лозим аст, ки поддонҳоро аз гиреҳҳои кӯҳна ба таври зебо интиқол диҳем ва боварӣ ҳосил кунем, ки ҳеҷ яке аз равандҳои коргарии мо ҳангоми ворид кардани тағирот ба гиреҳ кор накунад. Ё вақте ки мо ивазкунии пурраи кластерро анҷом медиҳем, чунон ки дар мисол (яъне мо тасвирҳои VM-ро иваз мекунем), мо мехоҳем барномаҳои иҷрошавандаро аз гиреҳҳои кӯҳна ба гиреҳҳои нав интиқол диҳем. Дар ҳарду ҳолат, мо мехоҳем, ки ба нақша гирифтан дар гиреҳҳои кӯҳна паҳлӯҳои навро пешгирӣ кунем ва пас аз онҳо ҳама қубурҳои ҷорӣ хориҷ кунем. Барои ноил шудан ба ин ҳадафҳо мо метавонем фармонро истифода барем kubectl drain.

Аз нав тақсим кардани ҳамаи қуттиҳо аз гиреҳ

Амалиёти дренажӣ ба шумо имкон медиҳад, ки ҳамаи подкҳоро аз гиреҳ дубора тақсим кунед. Ҳангоми иҷрои дренаж гиреҳ ҳамчун нақшанашаванда қайд карда мешавад (парчам NoSchedule). Ин имкон намедиҳад, ки баргҳои нав пайдо шаванд. Пас аз он дренаж ба хориҷ кардани қубурҳо аз гиреҳ оғоз мекунад, бо фиристодани сигнал контейнерҳоеро, ки ҳоло дар гиреҳ кор мекунанд, мебандад. TERM контейнерҳо дар қуттӣ.

Гарчанде kubectl drain кори хуберо барои хориҷ кардани қубурҳо анҷом хоҳад дод, ду омили дигар вуҷуд доранд, ки метавонанд кори дренажиро ба нокомӣ расонанд:

  • Аризаи шумо бояд пас аз пешниҳоди шумо ба таври зебо қатъ карда шавад TERM сигнал. Вақте ки поддонҳо хориҷ карда мешаванд, Кубернетес сигнал мефиристад TERM контейнерҳоро мерезад ва мунтазири вақти муайяншуда истодани онҳо мебошад, ки баъд аз он, агар онҳо қатъ нашуда бошанд, онҳоро маҷбуран қатъ мекунад. Дар ҳар сурат, агар контейнери шумо сигналро дуруст қабул накунад, шумо ба ҳар ҳол метавонед подкҳоро нодуруст хомӯш кунед, агар онҳо айни замон кор кунанд (масалан, транзаксияи пойгоҳи додаҳо ҷараён дорад).
  • Шумо ҳамаи подкҳоро, ки барномаи шуморо дар бар мегиранд, гум мекунед. Он метавонад вақте дастрас набошад, ки контейнерҳои нав дар гиреҳҳои нав ба кор андохта шаванд ё агар подкҳои шумо бе контроллерҳо ҷойгир карда шаванд, онҳо тамоман бозоғоз намешаванд.

Пешгирӣ кардани вақти бекорӣ

Барои кам кардани вақти бекорӣ аз вайроншавии ихтиёрӣ, ба монанди амалиёти дренажӣ дар гиреҳ, Kubernetes имконоти зерини ҳалли хатогиҳоро пешниҳод мекунад:

Дар боқимондаи силсила, мо ин хусусиятҳои 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, ки pods nginx-ро дар кластер идора мекунад. Илова бар ин, конфигуратсия захираро тавсиф мекунад Service, ки метавонад барои дастрасӣ ба pods nginx дар кластер истифода шавад.

Дар тӯли давра, мо ин конфигуратсияро такроран васеъ хоҳем кард, то он дар ниҳоят тамоми қобилиятҳоеро дар бар гирад, ки Kubernetes барои кам кардани вақти бекорӣ таъмин мекунад.

Барои як версияи комилан амалӣ ва озмудашудаи навсозиҳои кластери Kubernetes барои бефосила дар AWS ва берун аз он, боздид кунед Gruntwork.io.

Инчунин мақолаҳои дигарро дар блоги мо хонед:

Манбаъ: will.com

Илова Эзоҳ