Kubernetes рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрддреНрддрдо рдЕрднреНрдпрд╛рд╕рд╣рд░реВ: рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪрд╣рд░реВ

Kubernetes рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрддреНрддрдо рдЕрднреНрдпрд╛рд╕рд╣рд░реВ: рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪрд╣рд░реВ

TL; рдб

  • рдХрдиреНрдЯреЗрдирд░ рд░ рдорд╛рдЗрдХреНрд░реЛ рд╕рд░реНрднрд┐рд╕реЗрд╕рд╣рд░реВрдХреЛ рдЙрдЪреНрдЪ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди, рд▓рдЧрд╣рд░реВ рд░ рдкреНрд░рд╛рдердорд┐рдХ рдореЗрдЯреНрд░рд┐рдХрд╣рд░реВ рдкрд░реНрдпрд╛рдкреНрдд рдЫреИрдирдиреНред
  • рдЫрд┐рдЯреЛ рд░рд┐рдХрднрд░реА рд░ рдмрдвреНрджреЛ рд▓рдЪрд┐рд▓реЛрдкрдирдХреЛ рд▓рд╛рдЧрд┐, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓реЗ рдЙрдЪреНрдЪ рдЕрд╡рд▓реЛрдХрди рд╕рд┐рджреНрдзрд╛рдиреНрдд (HOP) рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрдкрд░реНрдЫред
  • рдЖрд╡реЗрджрди рд╕реНрддрд░рдорд╛, NOP рд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдЫ: рдЙрдЪрд┐рдд рд▓рдЧрд┐рдЩ, рдирдЬрд┐рдХрдХреЛ рдирд┐рдЧрд░рд╛рдиреА, тАЛтАЛрд╕реЗрдирд┐рдЯреА рдЬрд╛рдБрдЪ, рд░ рдкреНрд░рджрд░реНрд╢рди/рд╕рдВрдХреНрд░рдордг рдЯреНрд░реЗрд╕рд┐рдЩред
  • NOR рдХреЛ рддрддреНрд╡рдХреЛ рд░реВрдкрдорд╛ рдЪреЗрдХрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН рддрдпрд╛рд░реА рдЬрд╛рдБрдЪ ╨╕ рдЬреАрд╡рдиреНрддрддрд╛ рдЬрд╛рдБрдЪ Kubernetesред

рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╣реЛ?

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

рдЙрдЪреНрдЪ рдЕрд╡рд▓реЛрдХрди рд╕рд┐рджреНрдзрд╛рдиреНрдд (HOP)

рдЙрдЪреНрдЪ рдЕрд╡рд▓реЛрдХрдирдХреЛ рд╕рд┐рджреНрдзрд╛рдиреНрдд рдПрдХ рд╣реЛ рдХрдиреНрдЯреЗрдирд░рд╛рдЗрдЬреНрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдбрд┐рдЬрд╛рдЗрди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕рд┐рджреНрдзрд╛рдиреНрддрд╣рд░реВред рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рдорд╛, рд╕реЗрд╡рд╛рд╣рд░реВрд▓реЗ рдЙрдиреАрд╣рд░реВрдХреЛ рдЕрдиреБрд░реЛрдз рдХрд╕рд░реА рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдиреНрдЫ (рд░ рд╕рд╣реА рд░реВрдкрдорд╛) рд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрджреИрдирдиреН, рддрд░ рдХреЗ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐ рдЙрдиреАрд╣рд░реВрд▓реЗ рдкреНрд░рд╛рдкреНрдд рд╕реЗрд╡рд╛рд╣рд░реВрдмрд╛рдЯ рдХрд╕рд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫрдиреНред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдПрдХ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдХрд░рдг рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА, рдПрдХ рдХрдиреНрдЯреЗрдирд░рд▓реЗ рдЕрд░реНрдХреЛ рдХреЛ рд▓рд╛рдЧреА HTTP рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрдБрдЫ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдврд╛рдБрдЪрд╛ рдорд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдкреЗрдХреНрд╖рд╛ - рдпреЛ рд╕рдмреИ рд╣реЛред PythonJS рд▓реЗ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рдкрдирд┐ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рд╕рдХреНрдЫ, рд░ рдкрд╛рдЗрдерди рдлреНрд▓рд╛рд╕реНрдХрд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рди рд╕рдХреНрдЫред рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдПрдХ рдЕрд░реНрдХрд╛рдорд╛ рд▓реБрдХреЗрдХрд╛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рд╕рд╣рд┐рдд рдХрд╛рд▓реЛ рдмрдХреНрд╕рд╣рд░реВ рдЬрд╕реНрддреИ рд╣реБрдиреНред рдпрджреНрдпрдкрд┐, NOP рд╕рд┐рджреНрдзрд╛рдиреНрддрд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛рд▓реЗ рдХрддрд┐ рд╕реНрд╡рд╕реНрде рдЫ рднрдиреНрдиреЗ рд╕рдВрдХреЗрдд рдЧрд░реНрдиреЗ рдзреЗрд░реИ API рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБрд╣рд░реВ рдкреНрд░рдХрдЯ рдЧрд░реНрджрдЫ, рд╕рд╛рдереИ рдпрд╕рдХреЛ рддрдпрд╛рд░реА рд░ рддреНрд░реБрдЯрд┐ рд╕рд╣рдирд╢реАрд▓рддрд╛ рд╕реНрдерд┐рддрд┐ред Kubernetes рд▓реЗ рд░реВрдЯрд┐рдЩ рд░ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд┐рдЩрдХрд╛ рд▓рд╛рдЧрд┐ рдЕрд░реНрдХреЛ рдЪрд░рдгрд╣рд░реВ рдорд╛рд░реНрдлрдд рд╕реЛрдЪреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдпреА рд╕реВрдЪрдХрд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрд░реЛрдз рдЧрд░реНрджрдЫред

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

Kubernetes рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрддреНрддрдо рдЕрднреНрдпрд╛рд╕рд╣рд░реВ: рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪрд╣рд░реВ

Kubernetes рдорд╛ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪ рдврд╛рдБрдЪрд╛ рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ?

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

Kubernetes рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрддреНрддрдо рдЕрднреНрдпрд╛рд╕рд╣рд░реВ: рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪрд╣рд░реВ

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

LivenessProbe

рдпрд╕ рд╕рдордпрдорд╛ рдЬреАрд╡рдиреНрддрддрд╛ рдЬрд╛рдБрдЪ kubelet рд▓реЗ 3 рдкреНрд░рдХрд╛рд░рдХрд╛ рдЬрд╛рдБрдЪрд╣рд░реВ рдЧрд░реНрджрдЫ: рдкреЛрдб рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рдорд╛рддреНрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджреИрди, рддрд░ рдпреЛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд░ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдкрдорд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рди рддрдпрд╛рд░ рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рдкрдирд┐ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджрдЫ:

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

рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред рдЕрд░реНрдХреЛ рдкреЛрдб рдкрд░рд┐рднрд╛рд╖рд╛рдорд╛ рдПрдХ 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 рдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрдкрд▓рдмреНрдзрддрд╛ рдЬрд╛рдБрдЪ рдЯреНрд░рд┐рдЧрд░ рд╣реБрдиреНрдЫ (рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдХреЗрдиреНрдб рдЬрд╛рдБрдЪ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдорд╛рд░реНрдлрдд), рдЬрд╕ рдкрдЫрд┐ рдХреБрдмреЗрд▓реЗрдЯрд▓реЗ рдХрдиреНрдЯреЗрдирд░ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрджрдЫред рдЬрдм рд╕реБрд░реБ рд╣реБрдиреНрдЫ, рдХрдиреНрдЯреЗрдирд░рд▓реЗ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрди рдерд╛рд▓реНрдЫ рд░ рдкреБрди: рд╕реБрд░реБ рд╣реБрдиреНрдЫред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЧрддрд┐ рдЪрд╛рд╣рд┐рдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╣реБрди рд╕рдХреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕рдбрдХрдорд╛ рдХрд╛рд░ рд╕рд░реНрднрд░рдмрд╛рдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрд┐рд░рд╣реЗрдХреЛ рдЫ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдврд┐рд▓реЛ рднрдПрдХреЛ рдЫ - рд░ рдХрд╛рд░ рджреБрд░реНрдШрдЯрдирд╛рдорд╛ рд╣реБрдиреНрдЫред

рдПрдЙрдЯрд╛ redinessProbe рдкрд░рд┐рднрд╛рд╖рд╛ рд▓реЗрдЦреМрдВ рдЬрд╕рд▓реЗ 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 рд▓реЗ рдпрд╕рд▓рд╛рдИ рдлреЗрд░рд┐ рдЕрдиреБрд░реЛрдз рдЧрд░реНрджрдЫ: 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; рдб
рдХреНрд▓рд╛рдЙрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рдЖрдЧрдорди рдЕрдШрд┐, рд▓рдЧрд╣рд░реВ рдЕрдиреБрдЧрдорди рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рдкреНрд░рд╛рдердорд┐рдХ рдорд╛рдзреНрдпрдо рдерд┐рдПред рддрд░, рд╕реБрдзрд╛рд░рд╛рддреНрдордХ рдХрджрдо рдЪрд╛рд▓реНрдиреЗ рдХреБрдиреИ рдЙрдкрд╛рдп рдерд┐рдПрди ред рд▓рдЧрд╣рд░реВ рдЖрдЬ рдкрдирд┐ рдЙрдкрдпреЛрдЧреА рдЫрдиреН; рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди рд░ рдЖрдкрддрдХрд╛рд▓реАрди рдЕрд╡рд╕реНрдерд╛рд╣рд░реВрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди рд░ рдирд┐рд░реНрдгрдпрд╣рд░реВ рдЧрд░реНрди рд▓рдЧ рд╕рдЩреНрдХрд▓рди рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдкрдард╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред [рдпреЛ рд╕рдмреИ рдореЛрдирд┐рдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХреНрд▓рд╛рдЙрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдмрд┐рдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрд░ k8s рдХреЛ рд╕рд╛рде рдпреЛ рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рднрдпреЛ :) - рд╕рдореНрдкрд╛рджрдХрдХреЛ рдиреЛрдЯред ]

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

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

рдЙрдЪрд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдбрд┐рдЬрд╛рдЗрдирдорд╛ рджреБрд╡реИ рдкреНрд░рдХрд╛рд░рдХрд╛ рдЬрд╛рдБрдЪрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреБрдкрд░реНрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рд╕рдЩреНрдХрд▓рди рдЧрд░реЗрдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрдкрд░реНрджрдЫ, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдЬрдм рдЕрдкрд╡рд╛рдж рдлреНрдпрд╛рдБрдХрд┐рдПрдХреЛ рдЫред рдпрд╕рд▓реЗ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╕реНрд╡рд╛рд╕реНрдереНрдп рдореЗрдЯреНрд░рд┐рдХреНрд╕рдХреЛ рд╕рд╛рде рдЕрдиреБрдЧрдорди рдкреНрд░рдгрд╛рд▓реА (рдкреНрд░реЛрдореЗрдерд┐рдпрд╕) рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗ рдЖрд╡рд╢реНрдпрдХ API рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБрд╣рд░реВ рдкрдирд┐ рджреЗрдЦрд╛рдЙрдиреБрдкрд░реНрджрдЫред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди