Шарҳ. тарҷума.: Муҳандиси пешбари Заландо Ҳеннинг Ҷейкобс борҳо мушкилотро дар байни корбарони Kubernetes дар фаҳмидани ҳадафи зинда (ва омодагӣ) ва истифодаи дурусти онҳо мушоҳида кардааст. Аз ин рӯ, ӯ фикрҳои худро дар ин ёддошт ҷамъоварӣ кард, ки дар ниҳоят як қисми ҳуҷҷатҳои K8s мегардад.
Санҷиши саломатӣ, ки дар Кубернетес маълум аст санҷишҳои зинда (яъне, айнан, "санҷиши қобилиятнокӣ" - тақрибан тарҷума.), метавонад хеле хатарнок бошад. Ман тавсия медиҳам, ки агар имконпазир бошад, аз онҳо канорагирӣ кунед: истисноҳо танҳо вақте ки онҳо воқеан заруранд ва шумо аз хусусиятҳо ва оқибатҳои истифодаи онҳо комилан огоҳед. Ин нашрия дар бораи санҷишҳои зиндагонӣ ва омодагӣ сӯҳбат мекунад ва инчунин дар кадом ҳолатҳо ба шумо хабар медиҳад аст ва шумо набояд онҳоро истифода баред.
Ҳамкасби ман Сандор ба наздикӣ дар Твиттер хатогиҳои маъмултаринеро, ки ӯ дучор мешавад, мубодила кард, аз ҷумла хатогиҳои марбут ба истифодаи санҷишҳои омодагӣ/зиндагӣ:
Нодуруст танзим карда шудааст livenessProbe
метавонад ҳолатҳои сарбории баландро бадтар кунад (қатъ шудани тӯби барфӣ + вақти эҳтимолии тӯлонии контейнер/барнома) ва ба дигар оқибатҳои манфие, аз қабили коҳиши вобастагӣ оварда расонад. (ниг
Паёми умумӣ "Сандкунакҳои зиндаро истифода набаред" дар ин ҳолат он қадар кӯмак намекунад, пас биёед бубинем, ки санҷишҳои омодагӣ ва зиндагонӣ барои чӣ мебошанд.
Эзоҳ: Аксари санҷишҳои дар поён овардашуда дар ибтидо ба ҳуҷҷатҳои дохилии таҳиягари Заландо дохил карда шудаанд.
Санҷиши омодагӣ ва зиндагонӣ
Кубернетес ду механизми муҳимро пешниҳод мекунад, ки ном дорад
Kubernetes истифода мебарад санҷишҳои омодагӣто фахмад, ки кай контейнер барои кабули трафик тайёр аст. Подшоҳ барои истифода омода ҳисобида мешавад, агар ҳама зарфҳои он омода бошанд. Яке аз истифодаи ин механизм назорат кардани он аст, ки кадом подкҳо ҳамчун пуштибон барои хидматҳои Kubernetes (ва махсусан Ingress) истифода мешаванд.
Санҷишҳои зинда ба Кубернетес фаҳмед, ки вақти аз нав оғоз кардани контейнер расидааст. Масалан, чунин чек ба шумо имкон медиҳад, ки ҳангоми дар як ҷо часпида мондани барнома аз бунбаст ҷилавгирӣ кунед. Бозоғоз кардани контейнер дар ин ҳолат, сарфи назар аз хатогиҳо, барномаро аз замин хориҷ мекунад, аммо он инчунин метавонад ба нокомиҳои каскадӣ оварда расонад (нигаред ба поён).
Агар шумо кӯшиш кунед, ки навсозии барномаеро ҷойгир кунед, ки аз санҷиши зиндагӣ/тайёрӣ ноком мешавад, коркарди он қатъ карда мешавад, зеро Kubernetes ҳолати интизориро интизор аст. Ready
аз хамаи гулхо.
Мисол
Ин аст мисоли санҷиши омодагӣ, ки роҳро тафтиш мекунад /health
тавассути HTTP бо танзимоти пешфарз (фосила: 10 сония, Вақти итмом: 1 сония, остонаи муваффақият: 1, ҳадди нокомӣ: 3):
# часть общего описания deployment'а/стека
podTemplate:
spec:
containers:
- name: my-container
# ...
readinessProbe:
httpGet:
path: /health
port: 8080
тавсияњои
- Барои микросервисҳо бо нуқтаи ниҳоии HTTP (REST ва ғайра) ҳамеша санҷиши омодагӣ муайян мекунад, ки тафтиш мекунад, ки оё барнома (под) барои қабули трафик омода аст.
- Боварӣ ҳосил кунед, ки санҷиши омодагӣ мавҷудияти порти воқеии веб-серверро фаро мегирад:
- истифодаи портҳо барои мақсадҳои маъмурӣ, ки "админ" ё "идоракунӣ" ном доранд (масалан, 9090), барои
readinessProbe
, боварӣ ҳосил кунед, ки нуқтаи ниҳоӣ танҳо OK бармегардонад, агар порти асосии HTTP (ба монанди 8080) барои қабули трафик омода бошад*;* Ман ҳадди аққал як парвандаро дар Заландо медонам, ки дар он ҷо ин тавр нашуд, яъне.
readinessProbe
Ман бандари "идоракуниро" тафтиш кардам, аммо худи сервер аз сабаби мушкилоти боркунии кэш ба кор шурӯъ накард. - пайваст кардани санҷиши омодагӣ ба бандари алоҳида метавонад ба он оварда расонад, ки изофабори порти асосӣ дар санҷиши саломатӣ инъикос наёбад (яъне ҳавзи ришта дар сервер пур аст, аммо санҷиши саломатӣ ҳоло ҳам нишон медиҳад, ки ҳама чиз хуб аст ).
- истифодаи портҳо барои мақсадҳои маъмурӣ, ки "админ" ё "идоракунӣ" ном доранд (масалан, 9090), барои
- Боварӣ ҳосил кунед, ки Санҷиши омодагӣ ба оғозсозӣ/муҳоҷирати пойгоҳи додаҳо имкон медиҳад;
- Роҳи осонтарини ноил шудан ба ин тамос бо сервери HTTP танҳо пас аз ба итмом расидани оғозёбӣ мебошад (масалан, интиқоли пойгоҳи додаҳо аз
Роҳи парвоз ва ғайра.); яъне ба ҷои тағир додани ҳолати санҷиши саломатӣ, танҳо то анҷоми интиқоли пойгоҳи додаҳо сервери вебро оғоз накунед*.* Шумо инчунин метавонед интиқоли пойгоҳи додаҳоро аз контейнерҳои ибтидоӣ берун аз подкаст иҷро кунед. Ман то ҳол як мухлиси барномаҳои мустақил ҳастам, яъне онҳое, ки дар онҳо контейнери барнома медонад, ки чӣ гуна пойгоҳи додаҳоро бидуни ҳамоҳангсозии беруна ба ҳолати дилхоҳ меорад.
- Роҳи осонтарини ноил шудан ба ин тамос бо сервери HTTP танҳо пас аз ба итмом расидани оғозёбӣ мебошад (масалан, интиқоли пойгоҳи додаҳо аз
- Истифода кунед
httpGet
барои санҷиши омодагӣ тавассути нуқтаҳои муқаррарии санҷиши саломатӣ (масалан,/health
). - Параметрҳои санҷиши пешфарзро фаҳмед (
interval: 10s
,timeout: 1s
,successThreshold: 1
,failureThreshold: 3
):- имконоти пешфарз маънои онро дорад, ки pod мешавад тайёр нест пас аз тақрибан 30 сония (3 санҷиши солимфикрии ноком).
- Барои "администратор" ё "идоракунӣ" порти алоҳидаеро истифода баред, агар стеки технологӣ (масалан, Java/Spring) ба он иҷозат диҳад, то идоракунии саломатӣ ва ченакҳоро аз трафики муқаррарӣ ҷудо кунад:
- аммо дар бораи банди 2 фаромӯш накунед.
- Агар лозим бошад, санҷиши омодагӣ метавонад барои гарм кардан/бор кардани кэш ва баргардонидани рамзи ҳолати 503 то гарм шудани контейнер истифода шавад:
- Ман инчунин тавсия медиҳам, ки чеки навро хонед
startupProbe
,дар версияи 1.16 пайдо шуд (мо дар ин бора ба забони русй навиштемдар ин ҷо - тахминан. тарҷума.).
- Ман инчунин тавсия медиҳам, ки чеки навро хонед
Умедворам
- Ба вобастагии беруна такя накунед (ба монанди анборҳои маълумот) ҳангоми гузаронидани санҷишҳои омодагӣ/зиндагӣ - ин метавонад ба нокомиҳои пай дар пай оварда расонад:
- Ҳамчун мисол, биёед хидмати давлатии REST-ро бо 10 подкаст вобаста ба як пойгоҳи додаҳои Postgres гирем: вақте ки чек аз пайвасти корӣ ба DB вобаста аст, ҳама 10 подкҳо метавонанд ноком шаванд, агар дар шабака/тарафи DB таъхир вуҷуд дошта бошад - одатан он ҳама бадтар аз он ки метавонист анҷом ёфт;
- Лутфан таваҷҷӯҳ намоед, ки Spring Data пайвасти пойгоҳи додаҳоро бо нобаёнӣ тафтиш мекунад*;
* Ин рафтори пешфарзии Spring Data Redis аст (ҳадди ақал ин бори охирон буд, ки ман тафтиш кардам), ки боиси нокомии "фалокатбор" гардид: вақте ки Редис дар муддати кӯтоҳ дастнорас буд, ҳама подкҳо "фалокат" шуданд.
- Ба ин маъно "берунӣ" инчунин метавонад маънои дигар қадҳои ҳамон як барномаро дошта бошад, яъне дар идеалӣ чек набояд аз ҳолати дигар қуттиҳои ҳамон кластер вобаста бошад, то садамаҳои каскадиро пешгирӣ кунад:
- натиҷаҳо метавонанд барои замимаҳои дорои ҳолати тақсимшуда фарқ кунанд (масалан, кэшкунии дохили хотира дар подкастҳо).
- Санҷиши зиндаро истифода набаред барои pods (истисно ҳолатҳое мебошанд, ки онҳо воқеан заруранд ва шумо аз хусусиятҳо ва оқибатҳои истифодаи онҳо комилан огоҳед):
- Санҷиши зинда метавонад барои барқарор кардани контейнерҳои овезон кӯмак кунад, аммо азбаски шумо назорати пурраи барномаатонро доред, чизҳои ба мисли равандҳои овезон ва бунбастҳо набояд рӯй диҳанд: беҳтарин алтернатива дидаву дониста вайрон кардани барнома ва баргардонидани он ба ҳолати пештараи устувор аст;
- санҷиши нокомии зинда боиси аз нав оғоз шудани контейнер мегардад ва ба ин васила оқибатҳои хатогиҳои марбут ба боркуниро шадидтар мекунад: аз нав ба кор андохтани контейнер ба бекористӣ оварда мерасонад (ҳадди ақал дар давоми оғози барнома, масалан 30 сонияи тоқ), боиси хатогиҳои нав мегардад. , зиёд кардани бори дигар контейнерҳо ва зиёд кардани эҳтимолияти аз кор баромадани онҳо ва ғайра;
- Санҷиши зиндагонӣ дар якҷоягӣ бо вобастагии беруна як комбинатсияи бадтаринест, ки ба нокомиҳои пай дар пай таҳдид мекунад: таъхири каме дар паҳлӯи пойгоҳи додаҳо боиси аз нав оғоз шудани ҳама контейнерҳои шумо мегардад!
- Параметрҳои санҷиши зиндагонӣ ва омодагӣ бояд гуногун бошад:
- шумо метавонед санҷиши зиндаро бо ҳамон санҷиши саломатӣ истифода баред, аммо ҳадди посухи баландтар (
failureThreshold
), масалан, мақом таъин кунед тайёр нест пас аз 3 кӯшиш ва ҳисоб кунед, ки санҷиши зинда пас аз 10 кӯшиш ноком шудааст;
- шумо метавонед санҷиши зиндаро бо ҳамон санҷиши саломатӣ истифода баред, аммо ҳадди посухи баландтар (
- Санҷишҳои exec -ро истифода набаред, зеро онҳо бо мушкилоти маълуме алоқаманданд, ки боиси пайдоиши равандҳои зомби мешаванд:
- тафсилот: нигаред
муаррифии мутахассисони Datadog .
- тафсилот: нигаред
Натиҷа
- Санҷиши омодагиро истифода баред, то муайян кунед, ки кай поддон барои қабули трафик омода аст.
- Санҷишҳои зиндаро танҳо вақте истифода баред, ки онҳо воқеан лозиманд.
- Истифодаи нодурусти санҷишҳои омодагӣ/зиндагӣ метавонад ба кам шудани дастрасӣ ва нокомиҳои пай дар пай оварда расонад.
Маводҳои иловагӣ дар мавзӯъ
-
Ҳуҷҷатҳои Kubernetes: Санҷиши зиндагонӣ ва омодагиро танзим кунед ; -
Санҷиши зиндагонӣ ва омодагии Кубернетес аз нав дида баромада шуд: Чӣ тавр аз тирандозӣ дар пои дигар худдорӣ кардан мумкин аст ; -
Қатъи NRE Labs пас аз марг (ӯ инчунин дар бораи livenessProbe сухан меронад).
Навсозии № 1 аз 2019-09-29
Навсозии № 2 аз 2019-09-29
PS аз тарҷумон
Инчунин дар блоги мо хонед:
- «
Кубернетес: Под ҳаёти »; - «
7 таҷрибаи беҳтарини истифодаи контейнерҳо тибқи Google »; - «
7 Принсипҳои тарҳрезии барномаҳои дар асоси контейнер ".
Манбаъ: will.com