рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХрдВрдЯреЗрдирд░реНрд╕рд╕рд╛рдареА рд╕рд░реНрд╡реЛрддреНрддрдо рдкрджреНрдзрддреА: рдЖрд░реЛрдЧреНрдп рддрдкрд╛рд╕рдгреА

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХрдВрдЯреЗрдирд░реНрд╕рд╕рд╛рдареА рд╕рд░реНрд╡реЛрддреНрддрдо рдкрджреНрдзрддреА: рдЖрд░реЛрдЧреНрдп рддрдкрд╛рд╕рдгреА

TL; рдбреЙ

  • рдХрдВрдЯреЗрдирд░ рдЖрдгрд┐ рдорд╛рдпрдХреНрд░реЛ рд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕рдЪреА рдЙрдЪреНрдЪ рдирд┐рд░реАрдХреНрд╖рдгрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд▓реЙрдЧ рдЖрдгрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкреБрд░реЗрд╕реЗ рдирд╛рд╣реАрдд.
  • рдЬрд▓рдж рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддреАрд╕рд╛рдареА рдЖрдгрд┐ рд╡рд╛рдвреАрд╡ рд▓рд╡рдЪрд┐рдХрддреЗрд╕рд╛рдареА, рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдиреЗ рдЙрдЪреНрдЪ рдирд┐рд░реАрдХреНрд╖рдгрдХреНрд╖рдорддрд╛ рддрддреНрддреНрд╡ (HOP) рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.
  • рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрддрд░рд╛рд╡рд░, NOP рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ: рдпреЛрдЧреНрдп рд▓реЙрдЧрд┐рдВрдЧ, рдХреНрд▓реЛрдЬ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ, рд╕реЕрдирд┐рдЯреА рдЪреЗрдХ рдЖрдгрд┐ рдкрд░рдлреЙрд░реНрдордиреНрд╕/рдЯреНрд░рд╛рдиреНрдЭрд┐рд╢рди рдЯреНрд░реЗрд╕рд┐рдВрдЧ.
  • NOR рдЪреЗ рдШрдЯрдХ рдореНрд╣рдгреВрди рдЪреЗрдХ рд╡рд╛рдкрд░рд╛ рддрдпрд╛рд░реАрдкреНрд░реЛрдм ╨╕ livenessProbe рдХреБрдмрд░реНрдиреЗрдЯреНрд╕.

рдЖрд░реЛрдЧреНрдп рддрдкрд╛рд╕рдгреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдореНрд╣рдгрдЬреЗ рдХрд╛рдп?

рдорд┐рд╢рди-рдЧрдВрднреАрд░ рдЖрдгрд┐ рдЕрддреНрдпрдВрдд рдЙрдкрд▓рдмреНрдз рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреА рд░рдЪрдирд╛ рдХрд░рддрд╛рдирд╛, рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддреЗрд╕рд╛рд░рдЦреНрдпрд╛ рдкреИрд▓реВрдмрджреНрджрд▓ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреЗ рдЦреВрдк рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ. рдПрдЦрд╛рджреЗ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдлреЙрд▓реНрдЯ рдЯреЙрд▓рд░рдВрдЯ рдорд╛рдирд▓реЗ рдЬрд╛рддреЗ рдЬрд░ рддреЗ рдЕрдкрдпрд╢рд╛рддреВрди рд▓рд╡рдХрд░ рдмрд░реЗ рдЭрд╛рд▓реЗ. рдард░рд╛рд╡рд┐рдХ рдХреНрд▓рд╛рдЙрдб рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╡рд╛рдкрд░рддреЗ - рдЬрд┐рдереЗ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рд╡реЗрдЧрд│реНрдпрд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдареЗрд╡рд▓рд╛ рдЬрд╛рддреЛ. рдЖрдгрд┐ рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдХреНрд▓рд╕реНрдЯрд░ рдбрд┐рдЭрд╛рдИрди рдХрд░рддрд╛ рддреЗрд╡реНрд╣рд╛ k8s рд╡рд░реАрд▓ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд╣реА рдкреЕрдЯрд░реНрди рдлреЙрд▓реЛ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреНрдпрд╛рдкреИрдХреА рдЖрд░реЛрдЧреНрдп рддрдкрд╛рд╕рдгреА рд╕рд╛рдЪрд╛ рдЖрд╣реЗ. рдЕрдиреБрдкреНрд░рдпреЛрдЧ k8s рд▓рд╛ рддреЗ рдирд┐рд░реЛрдЧреА рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рдХрд╕реЗ рд╕рдВрдкреНрд░реЗрд╖рдг рдХрд░рддреЗ рд╣реЗ рддреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ. рд╣реЗ рдХреЗрд╡рд│ рдкреЙрдб рдЪрд╛рд▓реВ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рдпрд╛рдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рдирд╛рд╣реА, рддрд░ рддреА рд╡рд┐рдирдВрддреА рдХрд╢реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рдЖрдгрд┐ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрддреЗ рдпрд╛рдмрджреНрджрд▓ рджреЗрдЦреАрд▓ рдЖрд╣реЗ. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдирд╛ рдкреЙрдбрдЪреНрдпрд╛ рдЖрд░реЛрдЧреНрдпрд╛рд╡рд┐рд╖рдпреА рдЬрд┐рддрдХреЗ рдЕрдзрд┐рдХ рдорд╛рд╣рд┐рддреА рдЕрд╕рддреЗ, рддрд┐рддрдХреЗрдЪ рддреЗ рдЯреНрд░реЕрдлрд┐рдХ рдорд╛рд░реНрдЧ рдЖрдгрд┐ рд▓реЛрдб рдмреЕрд▓реЗрдВрд╕рд┐рдВрдЧрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рд╣реБрд╢рд╛рд░ рдирд┐рд░реНрдгрдп рдШреЗрддрд╛рдд. рдЕрд╢рд╛рдкреНрд░рдХрд╛рд░реЗ, рдЙрдЪреНрдЪ рдирд┐рд░реАрдХреНрд╖рдгрдХреНрд╖рдорддрд╛ рддрддреНрддреНрд╡ рдЕрд░реНрдЬрд╛рд▓рд╛ рд╡реЗрд│реЗрд╡рд░ рд╡рд┐рдирдВрддреАрд▓рд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.

рдЙрдЪреНрдЪ рдирд┐рд░реАрдХреНрд╖рдгрдХреНрд╖рдорддрд╛ рддрддреНрддреНрд╡ (HOP)

рдЙрдЪреНрдЪ рдирд┐рд░реАрдХреНрд╖рдгрдХреНрд╖рдорддреЗрдЪреЗ рддрддреНрддреНрд╡ рд╣реЗ рддреНрдпрд╛рдкреИрдХреА рдПрдХ рдЖрд╣реЗ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбрд┐рдЭрд╛рдЗрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрддреНрддреНрд╡реЗ. рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рдордзреНрдпреЗ, рд╕реЗрд╡рд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рдирдВрддреАрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╢реА рдХреЗрд▓реА рдЬрд╛рддреЗ рдпрд╛рдЪреА рдХрд╛рд│рдЬреА рдШреЗрдд рдирд╛рд╣реА (рдЖрдгрд┐ рдпреЛрдЧреНрдпрдЪ), рдкрд░рдВрддреБ рддреНрдпрд╛рдВрдирд╛ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рд╕реЗрд╡рд╛рдВрдХрдбреВрди рдкреНрд░рддрд┐рд╕рд╛рдж рдХрд╕рд╛ рдорд┐рд│рддреЛ рд╣реЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдПрдХ рдХрдВрдЯреЗрдирд░ рджреБрд╕рд░реНтАНрдпрд╛рд▓рд╛ HTTP рд╡рд┐рдирдВрддреА рдкрд╛рдард╡рддреЛ, рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрд╡рд░реВрдкрд╛рдд рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдЪреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЛ - рдЗрддрдХреЗрдЪ. PythonJS рд╡рд┐рдирдВрддреАрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЗрдЦреАрд▓ рдХрд░реВ рд╢рдХрддреЗ рдЖрдгрд┐ Python Flask рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдК рд╢рдХрддреЗ. рдХрдВрдЯреЗрдирд░ рдПрдХрдореЗрдХрд╛рдВрдирд╛ рд▓рдкрд╡рд┐рд▓реЗрд▓реНрдпрд╛ рд╕рд╛рдордЧреНрд░реАрд╕рд╣ рдмреНрд▓реЕрдХ рдмреЙрдХреНрд╕рд╕рд╛рд░рдЦреЗ рдЕрд╕рддрд╛рдд. рддрдерд╛рдкрд┐, NOP рддрддреНрддреНрд╡рд╛рдиреБрд╕рд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡реЗрд▓рд╛ рдПрдХрд╛рдзрд┐рдХ API рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдЙрдШрдб рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗ рддреЗ рдХрд┐рддреА рдирд┐рд░реЛрдЧреА рдЖрд╣реЗ, рддрд╕реЗрдЪ рддреНрдпрд╛рдЪреА рддрдпрд╛рд░реА рдЖрдгрд┐ рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рд╕реНрдерд┐рддреА рджрд░реНрд╢рд╡рддреЗ. рд░рд╛рдЙрдЯрд┐рдВрдЧ рдЖрдгрд┐ рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд┐рдВрдЧрд╕рд╛рдареА рдкреБрдвреАрд▓ рдЪрд░рдгрд╛рдВрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдпрд╛ рдирд┐рд░реНрджреЗрд╢рдХрд╛рдВрдЪреА рд╡рд┐рдирдВрддреА рдХрд░рддрд╛рдд.

рдЙрддреНрддрдо рдкреНрд░рдХрд╛рд░реЗ рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рдХреНрд▓рд╛рдЙрдб рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрдБрдбрд░реНрдб I/O рдкреНрд░рд╡рд╛рд╣ STDERR рдЖрдгрд┐ STDOUT рд╡рд╛рдкрд░реВрди рддреНрдпрд╛рдЪреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓реЙрдЧ рдХрд░рддреЗ. рдкреБрдвреЗ рдПрдХ рд╕рд╣рд╛рдпреНрдпрдХ рд╕реЗрд╡рд╛ рдпреЗрддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рдлрд╛рдЗрд▓рдмреАрдЯ, рд▓реЙрдЧрд╕реНрдЯреЕрд╢ рдХрд┐рдВрд╡рд╛ рдлреНрд▓реБрдПрдВрдб, рдХреЗрдВрджреНрд░реАрдХреГрдд рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕) рдЖрдгрд┐ рд▓реЙрдЧ рдХрд▓реЗрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдо (ELK рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╕реВрдЯ) рдордзреНрдпреЗ рд▓реЙрдЧ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ. рдЦрд╛рд▓реАрд▓ рдЖрдХреГрддреА рд╣реЗрд▓реНрде рдЯреЗрд╕реНрдЯ рдкреЕрдЯрд░реНрди рдЖрдгрд┐ рдЙрдЪреНрдЪ рдирд┐рд░реАрдХреНрд╖рдгрдХреНрд╖рдорддреЗрдЪреНрдпрд╛ рддрддреНрддреНрд╡рд╛рдиреБрд╕рд╛рд░ рдХреНрд▓рд╛рдЙрдб рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реЗ рджрд╛рдЦрд╡рддреЗ.

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХрдВрдЯреЗрдирд░реНрд╕рд╕рд╛рдареА рд╕рд░реНрд╡реЛрддреНрддрдо рдкрджреНрдзрддреА: рдЖрд░реЛрдЧреНрдп рддрдкрд╛рд╕рдгреА

Kubernetes рдордзреНрдпреЗ рдЖрд░реЛрдЧреНрдп рддрдкрд╛рд╕рдгреА рдирдореБрдирд╛ рдХрд╕рд╛ рд▓рд╛рдЧреВ рдХрд░рд╛рд╡рд╛?

рдмреЙрдХреНрд╕рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░, k8s рдПрдХрд╛ рдирд┐рдпрдВрддреНрд░рдХрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдкреЙрдбреНрд╕рдЪреНрдпрд╛ рд╕реНрдерд┐рддреАрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ (рддреИрдирд╛рдд, рдкреНрд░рддрд┐рдХреГрддреА рд╕реЗрдЯ, рдбреЗрдордирд╕реЗрдЯ, рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╕реЗрдЯ рдЗ., рдЗ.). рдкреЙрдб рдХрд╛рд╣реА рдХрд╛рд░рдгрд╛рд╕реНрддрд╡ рдЦрд╛рд▓реА рдкрдбрд▓реНрдпрд╛рдЪреЗ рдЖрдврд│реВрди рдЖрд▓реНрдпрд╛рд╡рд░, рдХрдВрдЯреНрд░реЛрд▓рд░ рддреЗ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдХрд┐рдВрд╡рд╛ рджреБрд╕рд░реНтАНрдпрд╛ рдиреЛрдбрд╡рд░ рд╣рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ. рддрдерд╛рдкрд┐, рдПрдХ рдкреЙрдб рддрдХреНрд░рд╛рд░ рдХрд░реВ рд╢рдХрддреЛ рдХреА рддреЗ рдЪрд╛рд▓реВ рдЖрд╣реЗ, рдкрд░рдВрддреБ рддреЗ рд╕реНрд╡рддрдГ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА. рдЪрд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдК: рддреБрдордЪрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ Apache рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рддреЛ, рддреБрдореНрд╣реА рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рдЕрдиреЗрдХ рдкреЙрдбреНрд╕рд╡рд░ рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ. рд▓рд╛рдпрдмреНрд░рд░реА рдЪреБрдХреАрдЪреНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реНрдпрд╛рдореБрд│реЗ, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреНрдпрд╛ рд╕рд░реНрд╡ рд╡рд┐рдирдВрддреНрдпрд╛ рдХреЛрдб 500 (рдЕрдВрддрд░реНрдЧрдд рд╕рд░реНрд╡реНрд╣рд░ рддреНрд░реБрдЯреА) рд╕рд╣ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрддрд╛рдд. рдбрд┐рд▓рд┐рд╡реНрд╣рд░реА рддрдкрд╛рд╕рддрд╛рдирд╛, рдкреЙрдбреНрд╕рдЪреА рд╕реНрдерд┐рддреА рддрдкрд╛рд╕рдгреЗ рдпрд╢рд╕реНрд╡реА рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ, рдкрд░рдВрддреБ рдЧреНрд░рд╛рд╣рдХ рд╡реЗрдЧрд│реНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛рдд. рдЖрдореНрд╣реА рдпрд╛ рдЕрд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рд╕реНрдерд┐рддреАрдЪреЗ рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рд╡рд░реНрдгрди рдХрд░реВ:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХрдВрдЯреЗрдирд░реНрд╕рд╕рд╛рдареА рд╕рд░реНрд╡реЛрддреНрддрдо рдкрджреНрдзрддреА: рдЖрд░реЛрдЧреНрдп рддрдкрд╛рд╕рдгреА

рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд, k8s рдХрд░рддреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддрдкрд╛рд╕рдгреА. рдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдкрдбрддрд╛рд│рдгреАрдордзреНрдпреЗ, рдХреБрдмреЗрд▓реЗрдЯ рдХрдВрдЯреЗрдирд░рдордзреАрд▓ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреА рд╕реНрдерд┐рддреА рд╕рддрдд рддрдкрд╛рд╕рддреЗ. рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдерд╛рдВрдмрд▓реА рдЖрд╣реЗ рд╣реЗ рд╕рдордЬрд▓реНрдпрд╛рдирдВрддрд░ рддреЛ рдкреБрдиреНрд╣рд╛ рд╕реБрд░реВ рдХрд░реЗрд▓. рдЬрд░ рдлрдХреНрдд рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░реВрди рддреНрд░реБрдЯреАрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЖрдгрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдгрддреНрдпрд╛рд╣реА рддреНрд░реБрдЯреАрд╡рд░ рдмрдВрдж рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓рд╛ рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ NOP рдЖрдгрд┐ рдЖрд░реЛрдЧреНрдп рдЪрд╛рдЪрдгреА рдкреЕрдЯрд░реНрдирдЪреЗ рдкрд╛рд▓рди рдХрд░рдгреНрдпрд╛рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрд░реЛрдЧреНрдп рддрдкрд╛рд╕рдгреА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдлрдХреНрдд рдЦреЗрджрд╛рдЪреА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░реВрди рд╕рд░реНрд╡ рддреНрд░реБрдЯреА рджреВрд░ рд╣реЛрдд рдирд╛рд╣реАрдд. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, k8s рдкреЙрдбрдордзреАрд▓ рд╕рдорд╕реНрдпрд╛ рдУрд│рдЦрдгреНрдпрд╛рд╕рд╛рдареА 2 рд╕рдЦреЛрд▓ рдорд╛рд░реНрдЧ рдСрдлрд░ рдХрд░рддреЗ: livenessProbe ╨╕ рддрдпрд╛рд░реАрдкреНрд░реЛрдм.

LivenessProbe

рджрд░рдореНрдпрд╛рди livenessProbe рдХреБрдмреЗрд▓реЗрдЯ 3 рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рддрдкрд╛рд╕рдгреНрдпрд╛ рдХрд░рддреЗ: рдкреЙрдб рдЪрд╛рд▓реВ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рдХреЗрд╡рд│ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдд рдирд╛рд╣реА, рддрд░ рддреЗ рд╡рд┐рдирдВрддреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдкреБрд░реЗрд╕рд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рджреЗрдЦреАрд▓ рдард░рд╡рддреЗ:

  • рдкреЙрдбрд╡рд░ HTTP рд╡рд┐рдирдВрддреА рд╕реЗрдЯ рдХрд░рд╛. рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдордзреНрдпреЗ 200 рддреЗ 399 рдЪреНрдпрд╛ рд╢реНрд░реЗрдгреАрдордзреНрдпреЗ HTTP рдкреНрд░рддрд┐рд╕рд╛рдж рдХреЛрдб рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, 5xx рдЖрдгрд┐ 4xx рдХреЛрдб рд╣реЗ рд╕рдВрдХреЗрдд рджреЗрддрд╛рдд рдХреА рдкреЙрдбрдордзреНрдпреЗ рд╕рдорд╕реНрдпрд╛ рдпреЗрдд рдЖрд╣реЗрдд, рддрд░реАрд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд╛рд▓реВ рдЖрд╣реЗ.
  • рдиреЙрди-HTTP рд╕реЗрд╡рд╛рдВрд╕рд╣ рдкреЙрдбреНрд╕рдЪреА рдЪрд╛рдЪрдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдореЗрд▓ рд╕рд░реНрд╡реНрд╣рд░), рддреБрдореНрд╣рд╛рд▓рд╛ TCP рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
  • рдкреЙрдбрд╕рд╛рдареА (рдЕрдВрддрд░реНрдЧрдд) рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЖрджреЗрд╢ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рд╛. рдХрдорд╛рдВрдб рдХрдореНрдкреНрд▓реАрд╢рди рдХреЛрдб 0 рдЕрд╕рд▓реНрдпрд╛рд╕ рдЪреЗрдХ рдпрд╢рд╕реНрд╡реА рдорд╛рдирд▓рд╛ рдЬрд╛рддреЛ.

рд╣реЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдпрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг. рдкреБрдвреАрд▓ рдкреЙрдб рдбреЗрдлрд┐рдирд┐рд╢рдирдордзреНрдпреЗ NodeJS рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд╣реЗ рдЬреЗ HTTP рд╡рд┐рдирдВрддреНрдпрд╛рдВрд╡рд░ 500 рдПрд░рд░ рдЯрд╛рдХрддреЗ. рдЕрд╢реА рдПрд░рд░ рдорд┐рд│рд╛рд▓реНрдпрд╛рд╡рд░ рдХрдВрдЯреЗрдирд░ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдЭрд╛рд▓рд╛ рдЖрд╣реЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА livenessProbe рдкреЕрд░рд╛рдореАрдЯрд░ рд╡рд╛рдкрд░рддреЛ:

apiVersion: v1
kind: Pod
metadata:
 name: node500
spec:
 containers:
   - image: magalix/node500
     name: node500
     ports:
       - containerPort: 3000
         protocol: TCP
     livenessProbe:
       httpGet:
         path: /
         port: 3000
       initialDelaySeconds: 5

рд╣реЗ рдЗрддрд░ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреЙрдб рд╡реНрдпрд╛рдЦреНрдпреЗрдкреЗрдХреНрд╖рд╛ рд╡реЗрдЧрд│реЗ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрдд рдЖрд╣реЛрдд .spec.containers.livenessProbe. рдкреЕрд░рд╛рдореАрдЯрд░ httpGet HTTP GET рд╡рд┐рдирдВрддреА рдЬреНрдпрд╛ рдорд╛рд░реНрдЧрд╛рд╡рд░ рдкрд╛рдард╡рд▓реА рдЬрд╛рддреЗ рддреЛ рдорд╛рд░реНрдЧ рд╕реНрд╡реАрдХрд╛рд░рддреЛ (рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд рд╣реЗ рдЖрд╣реЗ /, рдкрд░рдВрддреБ рд▓рдврд╛рдК рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА рдЕрд╕реВ рд╢рдХрддреЗ /api/v1/status). рджреБрд╕рд░рд╛ livenessProbe рдкреЕрд░рд╛рдореАрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░рддреЛ initialDelaySeconds, рдЬреЗ рдкрдбрддрд╛рд│рдгреА рдСрдкрд░реЗрд╢рдирд▓рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдХрдВрджрд╛рдВрдЪреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд┐рд░реНрджреЗрд╢ рджреЗрддреЗ. рд╡рд┐рд▓рдВрдм рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдХрд╛рд░рдг рдХрдВрдЯреЗрдирд░рд▓рд╛ рд╕реБрд░реВ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рд╡реЗрд│ рд▓рд╛рдЧрддреЛ рдЖрдгрд┐ рдЬреЗрд╡реНрд╣рд╛ рддреЗ рдкреБрдиреНрд╣рд╛ рд╕реБрд░реВ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рддреЗрд╡реНрд╣рд╛ рддреЗ рдХрд╛рд╣реА рдХрд╛рд│рд╛рд╕рд╛рдареА рдЕрдиреБрдкрд▓рдмреНрдз рдЕрд╕реЗрд▓.

рд╣реА рд╕реЗрдЯрд┐рдВрдЧ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд╛рдкрд░рд╛:

kubectl apply -f pod.yaml

рдХрд╛рд╣реА рд╕реЗрдХрдВрджрд╛рдВрдирдВрддрд░, рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдЖрджреЗрд╢ рд╡рд╛рдкрд░реВрди рдкреЙрдбрдордзреАрд▓ рд╕рд╛рдордЧреНрд░реА рддрдкрд╛рд╕реВ рд╢рдХрддрд╛:

kubectl describe pods node500

рдЖрдЙрдЯрдкреБрдЯрдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА, рд╢реЛрдзрд╛ рддреЗрдЪ рдЖрд╣реЗ.

рддреБрдореНрд╣реА рдмрдШреВ рд╢рдХрддрд╛, livenessProbe рдиреЗ HTTP GET рд╡рд┐рдирдВрддреА рд╕реБрд░реВ рдХреЗрд▓реА, рдХрдВрдЯреЗрдирд░рдиреЗ рдПрд░рд░ 500 рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реА (рдЬреЗ рддреЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗрд▓реЗ рд╣реЛрддреЗ), рдЖрдгрд┐ рдХреБрдмреЗрд▓реЗрдЯрдиреЗ рддреЗ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗрд▓реЗ.

NideJS рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╕реЗ рдкреНрд░реЛрдЧреНрд░реЕрдо рдХреЗрд▓реЗ рд╣реЛрддреЗ рдпрд╛рдмрджреНрджрд▓ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрд╢реНрдЪрд░реНрдп рд╡рд╛рдЯрдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдпреЗрдереЗ рд╡рд╛рдкрд░рд▓реЗрд▓реА app.js рдЖрдгрд┐ Dockerfile рдЖрд╣реЗ:

app.js

var http = require('http');

var server = http.createServer(function(req, res) {
    res.writeHead(500, { "Content-type": "text/plain" });
    res.end("We have run into an errorn");
});

server.listen(3000, function() {
    console.log('Server is running at 3000')
})

рдбреЙрдХрд░рдлрд╛рдЗрд▓

FROM node
COPY app.js /
EXPOSE 3000
ENTRYPOINT [ "node","/app.js" ]

рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ: livenessProbe рдХрдВрдЯреЗрдирд░ рдЕрдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реНрдпрд╛рд╕рдЪ рддреЛ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░реЗрд▓. рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗрд▓реНрдпрд╛рдиреЗ рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓реВ рд╣реЛрдгреНрдпрд╛рдкрд╛рд╕реВрди рд░реЛрдЦрдд рдЕрд╕рд▓реЗрд▓реА рддреНрд░реБрдЯреА рд╕реБрдзрд╛рд░рд▓реА рдирд╛рд╣реА, рддрд░ рдХреБрдмреЗрд▓реЗрдЯ рд╕рдорд╕реНрдпрд╛ рджреБрд░реБрд╕реНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд░рд╡рд╛рдИ рдХрд░реВ рд╢рдХрдгрд╛рд░ рдирд╛рд╣реА.

рддрдпрд╛рд░реАрдкреНрд░реЛрдм

ReadinessProbe рд╕рдорд╕реНрдпрд╛рдирд┐рд╡рд╛рд░рдг рдХреНрд░рд┐рдпрд╛ рд╡рдЧрд│рддрд╛ livenessProbes (GET рд╡рд┐рдирдВрддреНрдпрд╛, TCP рдХрдореНрдпреБрдирд┐рдХреЗрд╢рдиреНрд╕ рдЖрдгрд┐ рдХрдорд╛рдВрдб рдПрдХреНрдЭрд┐рдХреНрдпреВрд╢рди) рдкреНрд░рдорд╛рдгреЗрдЪ рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдЬреНрдпрд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдмрд┐рдШрд╛рдб рдЖрдврд│рд▓рд╛ рддреЛ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗрд▓рд╛ рдЬрд╛рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рд░рд╣рджрд╛рд░реАрдкрд╛рд╕реВрди рд╡реЗрдЧрд│рд╛ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдХрд▓реНрдкрдирд╛ рдХрд░рд╛ рдХреА рдХрдВрдЯреЗрдирд░рдкреИрдХреА рдПрдХ рдЦреВрдк рдЧрдгрдирд╛ рдХрд░рдд рдЖрд╣реЗ рдХрд┐рдВрд╡рд╛ рдЬрд╛рд╕реНрдд рднрд╛рд░рд╛рдЦрд╛рд▓реА рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдЪреА рд╡реЗрд│ рд╡рд╛рдврддреЗ. livenessProbe рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдкреНрд░рддрд┐рд╕рд╛рдж рдЙрдкрд▓рдмреНрдзрддрд╛ рддрдкрд╛рд╕рдгреА рдЯреНрд░рд┐рдЧрд░ рдХреЗрд▓реА рдЬрд╛рддреЗ (timeoutSeconds check parameter рджреНрд╡рд╛рд░реЗ), рдЬреНрдпрд╛рдирдВрддрд░ kubelet рдХрдВрдЯреЗрдирд░ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рддреЗ. рд╕реБрд░реВ рдХреЗрд▓реНрдпрд╛рд╡рд░, рдХрдВрдЯреЗрдирд░ рд╕рдВрд╕рд╛рдзрди-рдХреЗрдВрджреНрд░рд┐рдд рдХрд╛рд░реНрдпреЗ рдХрд░рдгреНрдпрд╛рд╕ рд╕реБрд░рд╡рд╛рдд рдХрд░рддреЛ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рд╣реЛрддреЛ. рдЬреНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдирд╛ рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдЪреА рдЧрддреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдЧрдВрднреАрд░ рдЕрд╕реВ рд╢рдХрддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдХрд╛рд░ рд░рд╕реНрддреНрдпрд╛рд╡рд░ рдЕрд╕рддрд╛рдирд╛ рд╕рд░реНрд╡реНрд╣рд░рдХрдбреВрди рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдд рдЖрд╣реЗ, рдкреНрд░рддрд┐рд╕рд╛рджрд╛рд╕ рдЙрд╢реАрд░ рдЭрд╛рд▓рд╛ рдЖрд╣реЗ - рдЖрдгрд┐ рдХрд╛рд░ рдЕрдкрдШрд╛рддрд╛рдд рдкрдбрддреЗ.

рдЪрд▓рд╛ рдПрдХ рд░реЗрдбрд┐рдиреЗрд╕рдкреНрд░реЛрдм рд╡реНрдпрд╛рдЦреНрдпрд╛ рд▓рд┐рд╣реВрдпрд╛ рдЬреА GET рд╡рд┐рдирдВрддреА рдкреНрд░рддрд┐рд╕рд╛рдж рд╡реЗрд│ рджреЛрди рд╕реЗрдХрдВрджрд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╕реЗрдЯ рдХрд░реЗрд▓ рдЖрдгрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ 5 рд╕реЗрдХрдВрджрд╛рдВрдирдВрддрд░ GET рд╡рд┐рдирдВрддреАрд▓рд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдИрд▓. pod.yaml рдлрд╛рдЗрд▓ рдпрд╛рд╕рд╛рд░рдЦреА рджрд┐рд╕рд▓реА рдкрд╛рд╣рд┐рдЬреЗ:

apiVersion: v1
kind: Pod
metadata:
 name: nodedelayed
spec:
 containers:
   - image: afakharany/node_delayed
     name: nodedelayed
     ports:
       - containerPort: 3000
         protocol: TCP
     readinessProbe:
       httpGet:
         path: /
         port: 3000
       timeoutSeconds: 2

рдЪрд▓рд╛ kubectl рд╕рд╣ рдкреЙрдб рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░реВ:

kubectl apply -f pod.yaml

рдЪрд▓рд╛ рдХрд╛рд╣реА рд╕реЗрдХрдВрдж рдерд╛рдВрдмреВрдпрд╛ рдЖрдгрд┐ рдордЧ рд░реЗрдбрд┐рдиреЗрд╕рдкреНрд░реЛрдмрдиреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХреЗрд▓реЗ рддреЗ рдкрд╛рд╣реВ:

kubectl describe pods nodedelayed

рдЖрдЙрдЯрдкреБрдЯрдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдХреА рдХрд╛рд╣реА рдШрдЯрдирд╛ рд╕рдорд╛рди рдЖрд╣реЗрдд рд╣реЗ рдПрдХ.

рддреБрдореНрд╣реА рдмрдШреВ рд╢рдХрддрд╛, рдЪреЗрдХ рд╡реЗрд│ 2 рд╕реЗрдХрдВрджрд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЭрд╛рд▓реНрдпрд╛рд╡рд░ kubectl рдиреЗ рдкреЙрдб рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗрд▓рд╛ рдирд╛рд╣реА. рддреНрдпрд╛рдРрд╡рдЬреА, рддреНрдпрд╛рдиреЗ рд╡рд┐рдирдВрддреА рд░рджреНрдж рдХреЗрд▓реА. рдпреЗрдгрд╛рд░реЗ рд╕рдВрдкреНрд░реЗрд╖рдг рдЗрддрд░, рдХрд╛рд░реНрдпрд░рдд рдкреЙрдбрд╡рд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.

рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдЖрддрд╛ рдкреЙрдб рдСрдлрд▓реЛрдб рдЭрд╛рд▓рд╛ рдЖрд╣реЗ, kubectl рддреНрдпрд╛рд╕ рдкреБрдиреНрд╣рд╛ рд╡рд┐рдирдВрддреА рдХрд░рддреЛ: GET рд╡рд┐рдирдВрддреНрдпрд╛рдВрдирд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рдпрд╛рдкреБрдвреЗ рдЙрд╢реАрд░ рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА.

рддреБрд▓рдиреЗрд╕рд╛рдареА, рдЦрд╛рд▓реА рд╕реБрдзрд╛рд░рд┐рдд app.js рдлрд╛рдЗрд▓ рдЖрд╣реЗ:

var http = require('http');

var server = http.createServer(function(req, res) {
   const sleep = (milliseconds) => {
       return new Promise(resolve => setTimeout(resolve, milliseconds))
   }
   sleep(5000).then(() => {
       res.writeHead(200, { "Content-type": "text/plain" });
       res.end("Hellon");
   })
});

server.listen(3000, function() {
   console.log('Server is running at 3000')
})

TL; рдбреЙ
рдХреНрд▓рд╛рдЙрдб рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреНрдпрд╛ рдЖрдЧрдордирд╛рдкреВрд░реНрд╡реА, рд▓реЙрдЧ рд╣реЗ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреЗ рдЖрд░реЛрдЧреНрдп рдирд┐рд░реАрдХреНрд╖рдг рдЖрдгрд┐ рддрдкрд╛рд╕рдгреНрдпрд╛рдЪреЗ рдкреНрд░рд╛рдердорд┐рдХ рдорд╛рдзреНрдпрдо рд╣реЛрддреЗ. рдорд╛рддреНрд░, рд╕реБрдзрд╛рд░рд╛рддреНрдордХ рдХрд╛рд░рд╡рд╛рдИ рдХрд░рдгреНрдпрд╛рдЪреЗ рдХреЛрдгрддреЗрд╣реА рд╕рд╛рдзрди рдирд╡реНрд╣рддреЗ. рд▓реЙрдЧ рдЖрдЬрд╣реА рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗрдд; рдЖрдгреАрдмрд╛рдгреАрдЪреНрдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдирд┐рд░реНрдгрдп рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рддреЗ рдЧреЛрд│рд╛ рдХрд░рдгреЗ рдЖрдгрд┐ рд▓реЙрдЧ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рдгрд╛рд▓реАрдХрдбреЗ рдкрд╛рдард╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. [рд╣реЗ рд╕рд░реНрд╡ рдореЛрдирд┐рдЯ рд╡рд╛рдкрд░реВрди рдХреНрд▓рд╛рдЙрдб рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╢рд┐рд╡рд╛рдп рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкрд░рдВрддреБ k8 рд╕рд╣ рддреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЭрд╛рд▓реЗ :) - рд╕рдВрдкрд╛рджрдХрд╛рдЪреА рдЯреАрдк. ]

рдЖрдЬ, рджреБрд░реБрд╕реНрддреНрдпрд╛ рдЬрд╡рд│рдЬрд╡рд│ рд░рд┐рдЕрд▓ рдЯрд╛рдИрдордордзреНрдпреЗ рдХрд░рд╛рд╡реНрдпрд╛ рд▓рд╛рдЧрддреАрд▓, рддреНрдпрд╛рдореБрд│реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдирд╛ рдпрд╛рдкреБрдвреЗ рдмреНрд▓реЕрдХ рдмреЙрдХреНрд╕ рдмрдирд╡рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА. рдирд╛рд╣реА, рддреНрдпрд╛рдВрдиреА рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рджрд╛рдЦрд╡рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд рдЬреЗ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдорд▓рд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреНрдпрд╛ рд╕реНрдерд┐рддреАрдмрджреНрджрд▓ рдкреНрд░рд╢реНрди рдЖрдгрд┐ рдореМрд▓реНрдпрд╡рд╛рди рдбреЗрдЯрд╛ рдЧреЛрд│рд╛ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддрд╛рдд рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдК рд╢рдХрддреАрд▓. рдпрд╛рд▓рд╛ рдкрд░рдлреЙрд░реНрдордиреНрд╕ рдЯреЗрд╕реНрдЯ рдбрд┐рдЭрд╛рдИрди рдкреЕрдЯрд░реНрди рдореНрд╣рдгрддрд╛рдд, рдЬреЛ рдЙрдЪреНрдЪ рдирд┐рд░реАрдХреНрд╖рдгрдХреНрд╖рдорддреЗрдЪреНрдпрд╛ рддрддреНрддреНрд╡рд╛рдЪреЗ (HOP) рдкрд╛рд▓рди рдХрд░рддреЛ.

Kubernetes рдмрд╛рдп рдбреАрдлреЙрд▓реНрдЯ 2 рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЖрд░реЛрдЧреНрдп рддрдкрд╛рд╕рдгреА рдСрдлрд░ рдХрд░рддреЗ: рд░реЗрдбрд┐рдиреЗрд╕рдкреНрд░реЛрдм рдЖрдгрд┐ рд▓рд┐рд╡реНрд╣рдиреЗрд╕рдкреНрд░реЛрдм. рджреЛрдШреЗрд╣реА рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░рдЪреЗ рдЪреЗрдХ рд╡рд╛рдкрд░рддрд╛рдд (HTTP GET рд╡рд┐рдирдВрддреНрдпрд╛, TCP рдХрдореНрдпреБрдирд┐рдХреЗрд╢рдиреНрд╕ рдЖрдгрд┐ рдХрдорд╛рдВрдб рдПрдХреНрдЭрд┐рдХреНрдпреВрд╢рди). рд╢реЗрдВрдЧрд╛рдордзреАрд▓ рд╕рдорд╕реНрдпрд╛рдВрдирд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рдореНрд╣рдгреВрди рддреЗ рдХреЛрдгрддреЗ рдирд┐рд░реНрдгрдп рдШреЗрддрд╛рдд рдпрд╛рд╡рд░реВрди рддреЗ рд╡реЗрдЧрд│реЗ рдЖрд╣реЗрдд. livenessProbe рд╣реА рддреНрд░реБрдЯреА рдкреБрдиреНрд╣рд╛ рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА рдпрд╛ рдЖрд╢реЗрдиреЗ рдХрдВрдЯреЗрдирд░ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рддреЗ рдЖрдгрд┐ рд╕рдорд╕реНрдпреЗрдЪреЗ рдХрд╛рд░рдг рд╕реБрдЯреЗрдкрд░реНрдпрдВрдд ReadinessProbe рдкреЙрдбрд▓рд╛ рдЗрдирдХрдорд┐рдВрдЧ рдЯреНрд░реЕрдлрд┐рдХрдкрд╛рд╕реВрди рд╡реЗрдЧрд│реЗ рдХрд░рддреЗ.

рдпреЛрдЧреНрдп рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд┐рдЭрд╛рдЗрдирдордзреНрдпреЗ рджреЛрдиреНрд╣реА рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рддрдкрд╛рд╕рдгреАрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЕрд╕рд╛рд╡рд╛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдиреА рдкреБрд░реЗрд╕рд╛ рдбреЗрдЯрд╛ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛рд╡реА, рд╡рд┐рд╢реЗрд╖рдд: рдЬреЗрд╡реНрд╣рд╛ рдЕрдкрд╡рд╛рдж рдЯрд╛рдХрд▓рд╛ рдЬрд╛рддреЛ. рд╣реЗ рдЖрд╡рд╢реНрдпрдХ рдПрдкреАрдЖрдп рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рджреЗрдЦреАрд▓ рджрд░реНрд╢рд╡рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдЬреЗ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рдкреНрд░реЛрдореЗрдерд┐рдпрд╕) рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЖрд░реЛрдЧреНрдп рдореЗрдЯреНрд░рд┐рдХреНрд╕.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛