10 рд╕рд╛рдорд╛рдиреНрдп рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЧрд▓рддрд┐рдпрд╛рдБ

рдЯрд┐рдкреНрдкрдгреАред рдЕрдиреБрд╡рд╛рджред: рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдПрдХ рдЫреЛрдЯреА рдЪреЗрдХ рдХрдВрдкрдиреА рдкрд┐рдкреЗрдЯреЗрд▓ рдХреЗ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИрдВред рд╡реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд [рдХрднреА-рдХрднреА рд╕рд╛рдорд╛рдиреНрдп, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА] рдмрд╣реБрдд рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдЧрд▓рдд рдзрд╛рд░рдгрд╛рдУрдВ рдХреА рдПрдХ рдЕрджреНрднреБрдд рд╕реВрдЪреА рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред

10 рд╕рд╛рдорд╛рдиреНрдп рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЧрд▓рддрд┐рдпрд╛рдБ

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рд╣рдордиреЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░ (рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рджреЛрдиреЛрдВ - GCP, AWS рдФрд░ Azure рдкрд░) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рд╕рдордп рдХреЗ рд╕рд╛рде, рд╣рдордиреЗ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рдХреБрдЫ рдЧрд▓рддрд┐рдпрд╛рдБ рд▓рдЧрд╛рддрд╛рд░ рджреЛрд╣рд░рд╛рдИ рдЬрд╛ рд░рд╣реА рдереАрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╢рд░реНрдо рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ: рд╣рдордиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрд╡рдпрдВ рд╣реА рдХрд┐рдпрд╛ рд╣реИ!

рд▓реЗрдЦ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рднреА рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

1. рд╕рдВрд╕рд╛рдзрди: рдЕрдиреБрд░реЛрдз рдФрд░ рд╕реАрдорд╛рдПрдБ

рдпрд╣ рдЖрдЗрдЯрдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдФрд░ рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓рд╛ рд╕реНрдерд╛рди рдкрд╛рдиреЗ рдХрд╛ рд╣рдХрджрд╛рд░ рд╣реИред

рд╕реАрдкреАрдпреВ рдЕрдиреБрд░реЛрдз рдЖрдорддреМрд░ рдкрд░ рдпрд╛ рддреЛ рдмрд┐рд▓реНрдХреБрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдЙрд╕рдХрд╛ рдореВрд▓реНрдп рдмрд╣реБрдд рдХрдо рд╣реИ (рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдкрд░ рдпрдерд╛рд╕рдВрднрд╡ рдЕрдзрд┐рдХ рдкреЙрдбреНрд╕ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдиреЛрдбреНрд╕ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдЪреНрдЪ рднрд╛рд░ рдХреЗ рд╕рдордп, рдиреЛрдб рдХреА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢рдХреНрддрд┐ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рдХреЗрд╡рд▓ рд╡рд╣реА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ "рдЕрдиреБрд░реЛрдз" рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред CPU рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ. рдЗрд╕рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рд▓рдВрдмрддрд╛, рдЯрд╛рдЗрдордЖрдЙрдЯ рдФрд░ рдЕрдиреНрдп рдЕрдкреНрд░рд┐рдп рдкрд░рд┐рдгрд╛рдо рдмрдврд╝ рдЬрд╛рддреЗ рд╣реИрдВред (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЕрдиреНрдп рд╣рд╛рд▓рд┐рдпрд╛ рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ: "рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕реАрдкреАрдпреВ рд╕реАрдорд╛ рдФрд░ рдЖрдХреНрд░рд╛рдордХ рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ"- рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред)

рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рдпрд╛рд╕ (рдЕрддреНрдпрдВрдд рдирд╣реАрдВ рдЕрдиреБрд╢рдВрд╕рд┐рдд):

resources: {}

рдЕрддреНрдпрдВрдд рдХрдо CPU рдЕрдиреБрд░реЛрдз (рдЕрддреНрдпрдВрдд рдирд╣реАрдВ рдЕрдиреБрд╢рдВрд╕рд┐рдд):

   resources:
      Requests:
        cpu: "1m"

рджреВрд╕рд░реА рдУрд░, рд╕реАрдкреАрдпреВ рд╕реАрдорд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдкреЙрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рдШрдбрд╝реА рдЪрдХреНрд░реЛрдВ рдХреЛ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдиреЛрдб рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рди рд╣реЛред рдлрд┐рд░, рдЗрд╕рд╕реЗ рджреЗрд░реА рдмрдврд╝ рд╕рдХрддреА рд╣реИред рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд▓реЗрдХрд░ рд╡рд┐рд╡рд╛рдж рдЬрд╛рд░реА рд╣реИ рд╕реАрдкреАрдпреВ рд╕реАрдПрдлрдПрд╕ рдХреЛрдЯрд╛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдФрд░ рд╕реАрдкреАрдпреВ рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реАрдорд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ, рд╕рд╛рде рд╣реА рд╕реАрдПрдлрдПрд╕ рдХреЛрдЯрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛... рдЕрдлрд╕реЛрд╕, рд╕реАрдкреАрдпреВ рд╕реАрдорд╛рдПрдБ рдЬрд┐рддрдиреА рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣рд▓ рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдкрд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдЕрддреНрдпрдзрд┐рдХ рдЪрдпрди (рдЕрддрд┐ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛) рд╕реНрдореГрддрд┐ рд╕рдорд╕реНрдпрд╛рдПрдВ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреА рд╣реИрдВред рд╕реАрдкреАрдпреВ рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рдШрдбрд╝реА рдЪрдХреНрд░ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрдмрдХрд┐ рдореЗрдореЛрд░реА рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рдкреЙрдб рдХреЛ рдЦрддреНрдо рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдЧреМрд░ рдХрд┐рдпрд╛ рд╣реИ OOMрдХрд┐рд▓? рд╣рд╛рдБ, рд╣рдо рдмрд┐рд▓реНрдХреБрд▓ рдЗрд╕реА рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдореЗрдореЛрд░реА рдХреЛ рдЕрдзрд┐рдХ рдЖрд╡рдВрдЯрд┐рдд рди рдХрд░реЗрдВ рдФрд░ рдореЗрдореЛрд░реА рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реАрдорд╛ рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдЧрд╛рд░рдВрдЯреАрдХреГрдд рдХреНрдпреВрдУрдПрд╕ (рд╕реЗрд╡рд╛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИ)ред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ рд╣реЗрдирд┐рдВрдЧ рдЬреИрдХрдмреНрд╕ рдкреНрд░рд╕реНрддреБрддрд┐рдпрд╛рдБ (рдЬрд╝рд╛рд▓реИрдВрдбреЛ рдореЗрдВ рд▓реАрдб рдЗрдВрдЬреАрдирд┐рдпрд░)ред

рдлрдЯрдиреЗ рдпреЛрдЧреНрдп (рдУрдУрдПрдордХрд┐рд▓реНрдб рд╣реЛрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛):

   resources:
      requests:
        memory: "128Mi"
        cpu: "500m"
      limits:
        memory: "256Mi"
        cpu: 2

рдЧрд╛рд░рдВрдЯреАрдХреГрдд:

   resources:
      requests:
        memory: "128Mi"
        cpu: 2
      limits:
        memory: "128Mi"
        cpu: 2

рд╕рдВрд╕рд╛рдзрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдорджрдж рдорд┐рд▓реЗрдЧреА?

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

kubectl top pods
kubectl top pods --containers
kubectl top nodes

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡реЗ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдкрд░рд┐рдорд╛рдг рдХреЗ рдХреНрд░рдо рдХрд╛ рдПрдХ рдореЛрдЯрд╛ рдЕрдВрджрд╛рдЬрд╝рд╛ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддрддрдГ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рд╕рдордп рдХреЗ рд╕рд╛рде рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ (рдЬреИрд╕реЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП: "рдкреАрдХ рд╕реАрдкреАрдпреВ рд▓реЛрдб рдХреНрдпрд╛ рдерд╛?", "рдХрд▓ рд╕реБрдмрд╣ рд▓реЛрдб рдХреНрдпрд╛ рдерд╛?", рдЖрджрд┐)ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдкреНрд░реЛрдорд┐рдереЗрдЙрд╕, DataDog рдФрд░ рдЕрдиреНрдп рдЙрдкрдХрд░рдг. рд╡реЗ рдмрд╕ рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рд╕реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдирд╕реЗ рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд▓реЙрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╡рд░реНрдЯрд┐рдХрд▓рдкреЙрдбрдСрдЯреЛрд╕реНрдХреЗрд▓рд░ рдпрд╣ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░реЛрд╕реЗрд╕ред рдпрд╣ рд╕реАрдкреАрдпреВ рдФрд░ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирдП рдЕрдиреБрд░реЛрдз рдФрд░ рд╕реАрдорд╛рдПрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдХрд╛ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреЛрдИ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╣рд░ рд╕рдордп рдЯреЗрдЯреНрд░рд┐рд╕ рдЦреЗрд▓рдиреЗ рдЬреИрд╕рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдо рдФрд╕рдд рдЦрдкрдд (рдЬреИрд╕реЗ ~10%) рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рд╢рдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рднреБрдЧрддрд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо AWS рдлрд╛рд░реНрдЧреЗрдЯ рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдХреНрдпреВрдмрд▓реЗрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред рд╡реЗ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд/рднреБрдЧрддрд╛рди-рдкреНрд░рддрд┐-рдЙрдкрдпреЛрдЧ рдмрд┐рд▓рд┐рдВрдЧ рдореЙрдбрд▓ рдкрд░ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рдЬреЛ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╕реНрддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

2. рдЬреАрд╡рдВрддрддрд╛ рдФрд░ рддрддреНрдкрд░рддрд╛ рдЬрд╛рдВрдЪ

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЬреАрд╡рдВрддрддрд╛ рдФрд░ рддрддреНрдкрд░рддрд╛ рдЬрд╛рдВрдЪ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред рдФрд░ рдХрднреА-рдХрднреА рд╡реЗ рдЙрдиреНрд╣реЗрдВ рдЪрд╛рд▓реВ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ...

рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдк рд╕реЗрд╡рд╛ рдкреБрдирдГ рдЖрд░рдВрдн рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдФрд░ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЛ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреЙрдб рдЯреНрд░реИрдлрд╝рд┐рдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ? рдпрд╛ рдпрд╣ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ?

рдпреЗ рдкрд░реАрдХреНрд╖рдг рдЕрдХреНрд╕рд░ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рднреНрд░рдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:

  • рдЬреАрд╡рдВрддрддрд╛ - "рдЙрддреНрддрд░рдЬреАрд╡рд┐рддрд╛" рдЬрд╛рдВрдЪ, рдЬреЛ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдкреЙрдб рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИ;
  • рддрддреНрдкрд░рддрд╛ - рддрддреНрдкрд░рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдпрджрд┐ рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗрд╡рд╛ рд╕реЗ рдкреЙрдб рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ (рдЗрд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) kubectl get endpoints) рдФрд░ рдЬрдм рддрдХ рдЕрдЧрд▓рд╛ рдЪреЗрдХ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛, рддрдм рддрдХ рдЙрд╕ рдкрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдирд╣реАрдВ рдЖрддрд╛ред

рдпреЗ рджреЛрдиреЛрдВ рдЬрд╛рдВрдЪреЗрдВ рдкреЙрдб рдХреЗ рдкреВрд░реЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛. рдмрд╣реБрдд рдЬрд░реБрд░реА рд╣реИред

рдПрдХ рдЖрдо рдЧрд╝рд▓рддрдлрд╝рд╣рдореА рдпрд╣ рд╣реИ рдХрд┐ рддрддреНрдкрд░рддрд╛ рдЬрд╛рдВрдЪ рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╣реА рдЪрд▓рд╛рдИ рдЬрд╛рддреА рд╣реИ рддрд╛рдХрд┐ рдмреИрд▓реЗрдВрд╕рд░ рдХреЛ рдкрддрд╛ рдЪрд▓ рд╕рдХреЗ рдХрд┐ рдкреЙрдб рддреИрдпрд╛рд░ рд╣реИ (Ready) рдФрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реИред

рджреВрд╕рд░рд╛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдкреЙрдб рдкрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдЕрддреНрдпрдзрд┐рдХ рд╣реИ рдФрд░ рдЗрд╕реЗ рдУрд╡рд░рд▓реЛрдб рдХрд░ рджреЗрддрд╛ рд╣реИ (рдпрд╛ рдкреЙрдб рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рддрддреНрдкрд░рддрд╛ рдХреА рдЬрд╛рдБрдЪ рд╕реЗ рдорджрдж рдорд┐рд▓рддреА рд╣реИ рдкреЙрдб рдкрд░ рднрд╛рд░ рдХрдо рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ "рдардВрдбрд╛" рдХрд░реЗрдВ. рднрд╡рд┐рд╖реНрдп рдореЗрдВ рддрддреНрдкрд░рддрд╛ рдЬрд╛рдВрдЪ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ рдкреЙрдб рдкрд░ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдмрдврд╝рд╛рдПрдВ. рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ (рдпрджрд┐ рддрддреНрдкрд░рддрд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ), рдЬреАрд╡рдВрддрддрд╛ рдкрд░реАрдХреНрд╖рдг рдХреА рд╡рд┐рдлрд▓рддрд╛ рдмрд╣реБрдд рдкреНрд░рддрд┐рдХреВрд▓ рд╣реЛрдЧреАред рдЬреЛ рдкреЙрдб рд╕реНрд╡рд╕реНрде рд╣реИ рдФрд░ рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХреНрдпреЛрдВ рд╢реБрд░реВ рдХрд░реЗрдВ?

рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдХреЛрдИ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдпрджрд┐ рд╕рдЬреАрд╡рддрд╛ рдЬрд╛рдБрдЪ рдкреНрд░рддрд┐рдпрд╛рдБ рддрддреНрдкрд░рддрд╛ рдЬрд╛рдБрдЪ, рддреЛ рдЖрдк рдмрдбрд╝реА рдореБрд╕реАрдмрдд рдореЗрдВ рд╣реИрдВред рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИ рдХреЗрд╡рд▓ рддрддреНрдкрд░рддрд╛ рдкрд░реАрдХреНрд╖рдгрдФрд░ рдЦрддрд░рдирд╛рдХ рд╕рдЬреАрд╡рддрд╛ рдПрдХ рддрд░рдл рдЫреЛрдбрд╝ рджреЛред

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

3. рдкреНрд░рддреНрдпреЗрдХ HTTP рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд▓реЛрдбрдмреИрд▓реЗрдВрд╕рд░

рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЖрдкрдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ HTTP рд╕реЗрд╡рд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред

рдпрджрд┐ рдЖрдк рд╕реЗрд╡рд╛ рдХреЛ рдЗрд╕ рд░реВрдк рдореЗрдВ рдЦреЛрд▓рддреЗ рд╣реИрдВ type: LoadBalancer, рдЗрд╕рдХрд╛ рдирд┐рдпрдВрддреНрд░рдХ (рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ) рдПрдХ рдмрд╛рд╣рд░реА рд▓реЛрдбрдмреИрд▓реЗрдВрд╕рд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ рдФрд░ рдмрд╛рддрдЪреАрдд рдХрд░реЗрдЧрд╛ (рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ L7 рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реЛ, рдмрд▓реНрдХрд┐ L4 рдкрд░ рднреА рдЪрд▓ рд░рд╣рд╛ рд╣реЛ), рдФрд░ рдпрд╣ рд▓рд╛рдЧрдд (рдмрд╛рд╣рд░реА рд╕реНрдереИрддрд┐рдХ IPv4 рдкрддрд╛, рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдмрд┐рд▓рд┐рдВрдЧ) рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ ) рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдРрд╕реЗ рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдгред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реБрдП рдПрдХ рдмрд╛рд╣рд░реА рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ type: NodePort. рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░, рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ nginx-рдкреНрд░рд╡реЗрд╢-рдирд┐рдпрдВрддреНрд░рдХ (рдпрд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ), рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реЛрдЧрд╛ рдиреЛрдбрдкреЛрд░реНрдЯ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдмрд╛рд╣рд░реА рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд░реВрдЯ рдХрд░реЗрдЧрд╛ рдкреНрд░рд╡реЗрд╢-рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕рдВрд╕рд╛рдзрдиред

рдЕрдиреНрдп рдЗрдВрдЯреНрд░рд╛-рдХреНрд▓рд╕реНрдЯрд░ (рд╕реВрдХреНрд╖реНрдо) рд╕реЗрд╡рд╛рдПрдБ рдЬреЛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреА рд╣реИрдВ, рдЬреИрд╕реА рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рд╕рдВрдЪрд╛рд░" рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдФрд░ DNS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реЗрд╡рд╛ рдЦреЛрдЬ рддрдВрддреНрд░ред рдмрд╕ рдЙрдирдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ DNS/IP рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рд╡рд┐рд▓рдВрдмрддрд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдХреА рд▓рд╛рдЧрдд рдмрдврд╝ рд╕рдХрддреА рд╣реИред

4. рдХрд┐рд╕реА рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗ рдмрд┐рдирд╛ рдЙрд╕реЗ рдСрдЯреЛрд╕реНрдХреЗрд▓ рдХрд░рдирд╛

рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдиреЛрдбреНрд╕ рдЬреЛрдбрд╝рддреЗ рдФрд░ рд╣рдЯрд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЙрди рдиреЛрдбреНрд╕ рдкрд░ рд╕реАрдкреАрдпреВ рдЙрдкрдпреЛрдЧ рдЬреИрд╕реЗ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреЙрдб рдпреЛрдЬрдирд╛ рдХреЛ рдХрдИ рдмрд╛рддреЛрдВ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдкреНрд░рддрд┐рдмрдВрдз, рдЬреИрд╕реЗ рдкреЙрдб/рдиреЛрдб рдПрдлрд╝рд┐рдирд┐рдЯреА, рджрд╛рдЧ рдФрд░ рд╕рд╣рдирд╢реАрд▓рддрд╛, рд╕рдВрд╕рд╛рдзрди рдЕрдиреБрд░реЛрдз, рдХреНрдпреВрдУрдПрд╕, рдЖрджрд┐ред рдмрд╛рд╣рд░реА рдСрдЯреЛрд╕реНрдХреЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬреЛ рдЗрди рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреЙрдб рдХреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕реАрдкреАрдпреВ рдкрд╛рд╡рд░ рдХрд╛ рдЕрдиреБрд░реЛрдз/рд╡рд┐рдШрдЯрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреЙрдб рдПрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдлрдВрд╕ рдЬрд╛рддрд╛ рд╣реИ Pending. рдмрд╛рд╣рд░реА рдСрдЯреЛрд╕реНрдХреЗрд▓рд░ рдФрд╕рдд рд╡рд░реНрддрдорд╛рди рд╕реАрдкреАрдпреВ рд▓реЛрдб рджреЗрдЦрддрд╛ рд╣реИ (рдЕрдиреБрд░реЛрдзрд┐рдд рдирд╣реАрдВ) рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛) - рджреВрд╕рд░рд╛ рдиреЛрдб рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛. рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдкреЙрдб рд╢реЗрдбреНрдпреВрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛.

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд░рд┐рд╡рд░реНрд╕ рд╕реНрдХреЗрд▓рд┐рдВрдЧ (рд╕реНрдХреЗрд▓-рдЗрди) - рдХрд┐рд╕реА рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рдиреЛрдб рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣рдореЗрд╢рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдЯреЗрдЯрдлреБрд▓ рдкреЙрдб рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ)ред рд▓рдЧрд╛рддрд╛рд░ рд╡реЙрд▓реНрдпреВрдо рдЖрдорддреМрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░ рдФрд░ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдХреЛрдИ рдмрд╛рд╣рд░реА рдСрдЯреЛрд╕реНрдХреЗрд▓рд░ рдЗрд╕ рдкреЙрдб рдХреЗ рд╕рд╛рде рдПрдХ рдиреЛрдб рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рдЗрд╕ рдкреЙрдб рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдиреЛрдб рдкрд░ рд╢реЗрдбреНрдпреВрд▓ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд▓рдЧрд╛рддрд╛рд░ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдерд┐рдд рд╣реИред рдкреЙрдб рд░рд╛рдЬреНрдп рдореЗрдВ рдЕрдЯрдХрд╛ рд░рд╣реЗрдЧрд╛ Pending.

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕рдореБрджрд╛рдп рдореЗрдВ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ рдХреНрд▓рд╕реНрдЯрд░-рдСрдЯреЛрд╕реНрдХреЗрд▓рд░. рдпрд╣ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдкреНрд░рдореБрдЦ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛рдУрдВ рд╕реЗ рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд╕рднреА рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЙрдкрд░реЛрдХреНрдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реНрдХреЗрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реАрдорд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рд╕реНрдХреЗрд▓-рдЗрди рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреИрд╕реЗ рдХреА рдмрдЪрдд рд╣реЛрддреА рд╣реИ (рдЬреЛ рдЕрдиреНрдпрдерд╛ рдЕрдкреНрд░рдпреБрдХреНрдд рдХреНрд╖рдорддрд╛ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред

5. IAM/RBAC рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛

рд▓рдЧрд╛рддрд╛рд░ рд░рд╣рд╕реНрдпреЛрдВ рдХреЗ рд╕рд╛рде IAM рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ рдорд╢реАрдиреЗрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ. рднреВрдорд┐рдХрд╛рдУрдВ рдФрд░ рд╕реЗрд╡рд╛ рдЦрд╛рддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд╕реНрдерд╛рдпреА рдкрд╣реБрдВрдЪ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ (рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ).

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

10 рд╕рд╛рдорд╛рдиреНрдп рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЧрд▓рддрд┐рдпрд╛рдБ

Kube2iam рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдПрдВ рдФрд░ рд╕реЗрд╡рд╛ рдЦрд╛рддреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ IAM рднреВрдорд┐рдХрд╛рдУрдВ рдкрд░ рдЬрд╛рдПрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдПрдХ рд╣реА рдирд╛рдо рдХрд╛ рдиреЛрдЯ рд╕реНрдЯреЗрдкрд╛рди рд╡реНрд░рд╛рдиреА):

apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/my-app-role
  name: my-serviceaccount
  namespace: default

рдПрдХ рдЯрд┐рдкреНрдкрдгреА. рдЙрддрдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдФрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рди рджреЗрдВ admin ╨╕ cluster-adminрдЕрдЧрд░ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ. рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рд╡рд┐рд╢реЗрд╖рдХрд░ рдЖрд░рдмреАрдПрд╕реА K8s рдореЗрдВ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

6. рдкреЙрдбреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдПрдВрдЯреА-рдПрдлрд╝рд┐рдирд┐рдЯреА рдкрд░ рднрд░реЛрд╕рд╛ рди рдХрд░реЗрдВ

рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдиреЛрдб рдкрд░ рдХреБрдЫ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреА рддреАрди рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ рд╣реИрдВред рдиреЛрдб рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА рд╕рднреА рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ рднреА рдЧрд┐рд░ рдЬрд╛рддреА рд╣реИрдВред рдЕрдкреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐, рд╣реИ рдирд╛? рд▓реЗрдХрд┐рди рд╕рднреА рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдБ рдПрдХ рд╣реА рдиреЛрдб рдкрд░ рдХреНрдпреЛрдВ рдереАрдВ? рдХреНрдпрд╛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЛ рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдзрддрд╛ (рдПрдЪрдП) рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?!

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

// ╨╛╨┐╤Г╤Й╨╡╨╜╨╛ ╨┤╨╗╤П ╨║╤А╨░╤В╨║╨╛╤Б╤В╨╕
      labels:
        app: zk
// ╨╛╨┐╤Г╤Й╨╡╨╜╨╛ ╨┤╨╗╤П ╨║╤А╨░╤В╨║╨╛╤Б╤В╨╕
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                    - zk
              topologyKey: "kubernetes.io/hostname"

рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдЕрдм рдкреЙрдбреНрд╕ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдиреЛрдбреНрд╕ рдкрд░ рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрд╣ рд╕реНрдерд┐рддрд┐ рдХреЗрд╡рд▓ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЬрд╛рдВрдЪреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдирд╣реАрдВ - рдЗрд╕рд▓рд┐рдП requiredDuringSchedulingIgnoredDuringExecution).

рдпрд╣рд╛рдВ рд╣рдо рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ podAntiAffinity рд╡рд┐рднрд┐рдиреНрди рдиреЛрдбреНрд╕ рдкрд░: topologyKey: "kubernetes.io/hostname", - рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВред рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд рдПрдЪрдП рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

7. рдкреЙрдбрдбрд┐рд╕рд░рдкреНрд╢рдирдмрдЬрдЯ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдирд╛

рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдЙрддреНрдкрд╛рджрди рднрд╛рд░ рд╣реИред рд╕рдордп-рд╕рдордп рдкрд░, рдиреЛрдбреНрд╕ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рд╕реНрд╡рдпрдВ рдЕрджреНрдпрддрди (рдпрд╛ рдбреАрдХрдореАрд╢рди) рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдкреЙрдбрдбрд┐рд╕реНрд░рдкреНрд╢рдирдмрдЬрдЯ (рдкреАрдбреАрдмреА) рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕реЗрд╡рд╛ рдЧрд╛рд░рдВрдЯреА рд╕рдордЭреМрддреЗ рдХреА рддрд░рд╣ рд╣реИред

рдкреАрдбреАрдмреА рдЖрдкрдХреЛ рдиреЛрдбреНрд╕ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛ рд░реБрдХрд╛рд╡рдЯреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: zk-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: zookeeper

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк, рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХреЛрдВ рд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ: "рдЕрд░реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЬрд╝реВрдХреАрдкрд░ рд╕реЗрд╡рд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рд╕реЗрд╡рд╛ рдХреА рдХрдо рд╕реЗ рдХрдо 2 рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ рд╣рдореЗрд╢рд╛ рдЙрдкрд▓рдмреНрдз рд░рд╣реЗрдВред"

рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдВ.

8. рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдг

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдирд╛рдорд╕реНрдерд╛рди (рдирд╛рдорд╕реНрдерд╛рди) рдордЬрдмреВрдд рдЗрдиреНрд╕реБрд▓реЗрд╢рди рдкреНрд░рджрд╛рди рди рдХрд░реЗрдВ.

рдПрдХ рдЖрдо рдЧрд╝рд▓рддрдлрд╝рд╣рдореА рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдЧреИрд░-рдЙрддреНрдкрд╛рдж рд▓реЛрдб рдХреЛ рдПрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдФрд░ рдПрдХ рдЙрддреНрдкрд╛рдж рд▓реЛрдб рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ... рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рдВрд╕рд╛рдзрди рдЕрдиреБрд░реЛрдзреЛрдВ/рд╕реАрдорд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдХреЛрдЯрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдХреЗ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреНрд▓рд╛рд╕ рд╕реЗрдЯ рдХрд░рдХреЗ рдЕрд▓рдЧрд╛рд╡ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдкреНрд▓реЗрди рдореЗрдВ рдХреБрдЫ "рднреМрддрд┐рдХ" рдЕрд▓рдЧрд╛рд╡ рд╕рдорд╛рдирддрд╛рдПрдВ, рд╕рд╣рд┐рд╖реНрдгреБрддрд╛, рджрд╛рдЧ (рдпрд╛ рдиреЛрдбрд╕реЗрд▓реЗрдХреНрдЯрд░реНрд╕) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдЕрд▓рдЧрд╛рд╡ рдХрд╛рдлреА рд╣реИ рдХрдард┐рди рдЕрдорд▓ рдореЗрдВ рд▓рд╛рдирд╛ред

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

9. рдмрд╛рд╣рд░реА рдпрд╛рддрд╛рдпрд╛рдд рдиреАрддрд┐: рдХреНрд▓рд╕реНрдЯрд░

рдЕрдХреНрд╕рд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдХрд╛ рд╕рд╛рд░рд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ NodePort рдЬреИрд╕реА рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреАрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ externalTrafficPolicy: Cluster. рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдиреЛрдбрдкреЛрд░реНрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдкрд░ рдЦреБрд▓рд╛ рд╣реИ, рдФрд░ рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рд╕реЗрд╡рд╛ (рдкреЙрдбреНрд╕ рдХрд╛ рд╕реЗрдЯ) рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

10 рд╕рд╛рдорд╛рдиреНрдп рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЧрд▓рддрд┐рдпрд╛рдБ

рд╕рд╛рде рд╣реА, рдЙрдкрд░реНрдпреБрдХреНрдд рдиреЛрдбрдкреЛрд░реНрдЯ рд╕реЗрд╡рд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреЙрдб рдЖрдорддреМрд░ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд░ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реИрдВ рдЗрди рдиреЛрдбреНрд╕ рдХрд╛ рд╕рдмрд╕реЗрдЯ. рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рдореИрдВ рдХрд┐рд╕реА рдРрд╕реЗ рдиреЛрдб рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреЙрдб рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рджреВрд╕рд░реЗ рдиреЛрдб рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░ рджреЗрдЧрд╛, рдПрдХ рд╣реЙрдк рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдмрдврд╝рддреА рд╡рд┐рд▓рдВрдмрддрд╛ (рдпрджрд┐ рдиреЛрдбреНрд╕ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ/рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░реЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рддреЛ рд╡рд┐рд▓рдВрдмрддрд╛ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ; рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рдХрд╛рд╕ рдпрд╛рддрд╛рдпрд╛рдд рд▓рд╛рдЧрдд рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреА)ред

рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдХрд┐рд╕реА рдирд┐рд╢реНрдЪрд┐рдд рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗрд╡рд╛ рдореЗрдВ рдПрдХ рдиреАрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ externalTrafficPolicy: Local, рддреЛ рдиреЛрдбрдкреЛрд░реНрдЯ рдХреЗрд╡рд▓ рдЙрди рдиреЛрдбреНрд╕ рдкрд░ рдЦреБрд▓рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рдкреЙрдбреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рдмрд╛рд╣рд░реА рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЬреЛ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ (рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ) рд╕рдорд╛рдкрдирдмрд┐рдВрджреБ (рдпрд╣ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ AWS рдИрдПрд▓рдмреА), рд╡рд╣ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдиреЛрдбреНрд╕ рдкрд░ рд╣реА рдЯреНрд░реИрдлрд╝рд┐рдХ рднреЗрдЬреЗрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рджреЗрд░реА, рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ, рдирд┐рдХрд╛рд╕ рдмрд┐рд▓реЛрдВ рдкрд░ рд▓рд╛рднрдХрд╛рд░реА рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛ (рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рднреА рдпрд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ)ред

рдЗрд╕ рдмрд╛рдд рдХреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЯреНрд░реИрдлрд╝рд┐рдХ рдпрд╛ nginx-рдкреНрд░рд╡реЗрд╢-рдирд┐рдпрдВрддреНрд░рдХ HTTP рдкреНрд░рд╡реЗрд╢ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд░реВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЛрдбрдкреЛрд░реНрдЯ рдПрдВрдбрдкреЙрдЗрдВрдЯ (рдпрд╛ рд▓реЛрдбрдмреИрд▓реЗрдВрд╕рд░, рдЬреЛ рдиреЛрдбрдкреЛрд░реНрдЯ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд░реВрдк рдореЗрдВ, рдФрд░ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдРрд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

╨Т рдпрд╣ рдкреНрд░рдХрд╛рд╢рди рдЖрдк externalTrafficPolicy, рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред

10. рд╕рдореВрд╣реЛрдВ рд╕реЗ рди рдмрдВрдзреЗ рд░рд╣реЗрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрддрд░ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рди рдХрд░реЗрдВ

рдкрд╣рд▓реЗ, рд╕рд░реНрд╡рд░ рдХреЛ рдЙрдЪрд┐рдд рдирд╛рдореЛрдВ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдерд╛ рдереА: рдПрдВрдЯреЛрди, HAL9000 рдФрд░ рдХреЛрд▓реЛрд╕рд╕... рдЖрдЬ рдЙрдиреНрд╣реЗрдВ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрджрдд рдмрдиреА рд░рд╣реА, рдФрд░ рдЕрдм рдЙрдЪрд┐рдд рдирд╛рдо рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВред

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

рдЧреБрдЪреНрдЫреЛрдВ рдХреЛ рдкрд╛рд▓рддреВ рдЬрд╛рдирд╡рд░реЛрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рдХреЛрдИ рдордЬрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрднреНрдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рд╕рдордп-рд╕рдордп рдкрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ рдЖрдкрджрд╛ рдмрд╣рд╛рд▓реА (рдпреЗ рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдЧрд╛ рдЕрд░рд╛рдЬрдХрддрд╛ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ - рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред). рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рдпрдВрддреНрд░рдг рдкрд░рдд рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рджрд┐рдХреНрдХрдд рдирд╣реАрдВ рд╣реЛрдЧреА (рд╡рд┐рдорд╛рди рдирд┐рдпрдВрддреНрд░рдг). рдЙрд╕реЗ рдЫреВрдиреЗ рд╕реЗ рдбрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИ. рдЗрддреНрдпрд╛рджрд┐ рдореГрдд? рджреЛрд╕реНрддреЛрдВ, рдЖрдк рд╕рдЪрдореБрдЪ рдореБрд╕реАрдмрдд рдореЗрдВ рд╣реИрдВ!

рджреВрд╕рд░реА рдУрд░, рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рдЪрдХреНрдХрд░ рдореЗрдВ рдирд╣реАрдВ рдкрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдордп рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рдг рдкрд░рдд рдзреАрдореА рд╣реЛ рд╕рдХрддреА рд╣реИ. рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЙрдирдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╣реЗрд▓реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХреЙрдиреНрдлрд┐рдЧрдореИрдкреНрд╕/рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдореЗрдВ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ - рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдЬрд╛рд░реЛрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЬрдорд╛ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ) рдирд┐рдпрдВрддреНрд░рдг рдкрд░рдд) рдпрд╛ рдХреНрдпреВрдм-рдПрдкреАрдЖрдИ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдирд┐рд░рдВрддрд░ рд╕рдВрдкрд╛рджрди рдХреЗ рд╕рд╛рде (рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рд╕реАрдЖрдИ/рд╕реАрдбреА рдХреЗ рд▓рд┐рдП, рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ, рдЗрд╡реЗрдВрдЯ рд▓реЙрдЧ, рдирд┐рдпрдВрддреНрд░рдХ, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдкреНрд░рдмрдВрдзрд┐рдд рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╕рд╛рде рдПрд╕рдПрд▓рдП/рдПрд╕рдПрд▓рдУ рд╕рдордЭреМрддреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдФрд░ рдЧрд╛рд░рдВрдЯреА рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред рд╡рд┐рдХреНрд░реЗрддрд╛ рдЧрд╛рд░рдВрдЯреА рджреЗ рд╕рдХрддрд╛ рд╣реИ рдирд┐рдпрдВрддреНрд░рдг рдкрд░рдд рдЙрдкрд▓рдмреНрдзрддрд╛ (рдпрд╛ рдЗрд╕рдХреЗ рдЙрдкрдШрдЯрдХ), рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рднреЗрдЬреЗ рдЧрдП рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ p99 рд╡рд┐рд▓рдВрдм рдирд╣реАрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдк рдкреНрд░рд╡реЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ kubectl get nodes, рдФрд░ рдХреЗрд╡рд▓ 10 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдФрд░ рдпрд╣ рд╕реЗрд╡рд╛ рдЕрдиреБрдмрдВрдз рдХреА рд╢рд░реНрддреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

11. рдмреЛрдирд╕: рдирд╡реАрдирддрдо рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд╣реИ. рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣рдо рдЗрд╕ рддрдХрдиреАрдХ рд╕реЗ рдХрдо рдкрд░рд┐рдЪрд┐рдд рд╣реБрдП рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдХрдбрд╝рд╡реЗ рдЕрдиреБрднрд╡ рд╕реЗ рд╕реАрдЦрдХрд░ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ :latest рдФрд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдкрд┐рди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рд╣реБрд░реНрд░реЗ!

рдИрд╕реАрдЖрд░ рдЫрд╡рд┐ рдЯреИрдЧ рдХреА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ; рд╣рдорд╛рд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЬрд╛рдПрдВред

рд╕рд╛рд░рд╛рдВрд╢

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

рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдЯреАрдореЛрдВ рдХреЗ рдЕрд╕рдлрд▓ рдЕрдиреБрднрд╡реЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд╣рд╛рдирд┐рдпреЛрдВ рдХрд╛ рдпрд╣ рд╕рдВрдЧреНрд░рд╣ рд╣реЗрдирд┐рдВрдЧ рдЬреИрдХрдмреНрд╕ рджреНрд╡рд╛рд░рд╛ред

рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рджреА рдЧрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡реЗ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рд╣рдорд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (@рдорд░реЗрдХрдмрд╛рд░реНрдЯрд┐рдХ, @MstrsObserver).

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдкреА.рдПрд╕

рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рднреА рдкрдврд╝реЗрдВ:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ