рдиреМ Kubernetes рдкреНрд░рджрд░реНрд╢рди рд╕реБрдЭрд╛рд╡рд╣рд░реВ

рдиреМ Kubernetes рдкреНрд░рджрд░реНрд╢рди рд╕реБрдЭрд╛рд╡рд╣рд░реВ

рдирдорд╕реНрддреЗ рд╕рдмреИ! рдореЗрд░реЛ рдирд╛рдо Oleg Sidorenkov рд╣реЛ, рдо DomClick рдорд╛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдЯреЛрд▓реАрдХреЛ рдкреНрд░рдореБрдЦрдХреЛ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдЫреБред рд╣рд╛рдореАрд▓реЗ рдЙрддреНрдкрд╛рджрдирдорд╛ рдХреБрдмрд┐рдХрд▓рд╛рдИ рддреАрди рд╡рд░реНрд╖рднрдиреНрджрд╛ рдмрдвреА рд╕рдордпрджреЗрдЦрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ рдЖрдПрдХрд╛ рдЫреМрдВ, рд░ рдпрд╕ рд╕рдордпрдорд╛ рд╣рд╛рдореАрд▓реЗ рдпрд╕рд╕рдБрдЧ рдзреЗрд░реИ рдлрд░рдХ рд░реЛрдЪрдХ рдХреНрд╖рдгрд╣рд░реВ рдЕрдиреБрднрд╡ рдЧрд░реЗрдХрд╛ рдЫреМрдВред рдЖрдЬ рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдмрддрд╛рдЙрдиреЗрдЫреБ рдХрд┐ рдХрд╕рд░реА, рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдгрдХреЛ рд╕рд╛рде, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд▓рд╛рдЧрд┐ рднреЗрдирд┐рд▓рд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдмрд╛рдЯ рдЕрдЭ рдмрдвреА рдкреНрд░рджрд░реНрд╢рди рдирд┐рдЪреЛрдб рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрдпрд╛рд░ рд╕реНрдерд┐рд░ рдЬрд╛рдиреБрд╣реЛрд╕реН!

рддрдкрд╛рдИрдВ рд╕рдмреИрд▓рд╛рдИ рд░рд╛рдореНрд░рд░реА рдерд╛рд╣рд╛ рдЫ рдХрд┐ Kubernetes рдХрдиреНрдЯреЗрдирд░ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкреНрд░рдгрд╛рд▓реА рд╣реЛ; рд░рд╛рдореНрд░реЛ, рд╡рд╛ 5 рдмрд╛рдЗрдирд░реАрд╣рд░реВ рдЬрд╕рд▓реЗ рд╕рд░реНрднрд░ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рддрдкрд╛рдИрдВрдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕рд╣рд░реВрдХреЛ рдЬреАрд╡рди рдЪрдХреНрд░ рдкреНрд░рдмрдиреНрдз рдЧрд░реЗрд░ рдЬрд╛рджреБрдИ рдХрд╛рдо рдЧрд░реНрджрдЫред рдердк рд░реВрдкрдорд╛, рдпреЛ рдПрдХрджрдо рд▓рдЪрд┐рд▓реЛ рдЙрдкрдХрд░рдг рд╣реЛ рдЬреБрди рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдзрд┐рдХрддрдо рдЕрдиреБрдХреВрд▓рдирдХреЛ рд▓рд╛рдЧрд┐ рд▓реЗрдЧреЛ рдЬрд╕реНрддреИ рдЬрдореНрдорд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рд░ рд╕рдмреИ рдХреБрд░рд╛ рдареАрдХ рдЫ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ: рд╕рд░реНрднрд░рд╣рд░реВрд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рджрд╛рдЙрд░рд╛рд▓рд╛рдИ рдлрд╛рдпрд░рдмрдХреНрд╕рдорд╛ рдлрд╛рд▓реНрдиреБрд╣реЛрд╕реН, рд░ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдХреБрдиреИ рджреБрдГрдЦ рдерд╛рд╣рд╛ рдЫреИрдиред рддрд░ рдпрджрд┐ рддрдкрд╛рдИрдВ рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рд╕реЛрдЪреНрдиреБрд╣реБрдиреЗрдЫ: "рдо рдХрд╕рд░реА рдЖрдЧреЛ рдмрд╛рд▓реЗрд░ рдЬрдВрдЧрд▓рд▓рд╛рдИ рдмрдЪрд╛рдЙрди рд╕рдХреНрдЫреБ?" рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗ рд░ рд▓рд╛рдЧрдд рдШрдЯрд╛рдЙрдиреЗ рдЙрдкрд╛рдпрд╣рд░реВ рдХрд╕рд░реА рдЦреЛрдЬреНрдиреЗред

1. рдЯреЛрд▓реА рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрд░реЛрддрд╣рд░реВ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдиреМ Kubernetes рдкреНрд░рджрд░реНрд╢рди рд╕реБрдЭрд╛рд╡рд╣рд░реВ

рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп, рддрд░ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд╡рд┐рдзрд┐рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рдЕрдиреБрд░реЛрдз/рд╕реАрдорд╛рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп рд╣реЛред рдирд╛рдорд╕реНрдерд╛рдирд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рд╡рд┐рдХрд╛рд╕ рдЯреЛрд▓реАрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВред рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рдЕрдШрд┐, рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп, рдореЗрдореЛрд░реА, рд░ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рднрдгреНрдбрд╛рд░рдгрдХреЛ рдЦрдкрддрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдорд╛рдирд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

resources:
   requests:
     memory: 2Gi
     cpu: 250m
   limits:
     memory: 4Gi
     cpu: 500m

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

рд╕рд╛рдереИ, рдорджреНрджрдд рд╕рдВрдЧ limitranges рд╕реБрд░реБрдорд╛, рддрдкрд╛рдЗрдБ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрд░реЛрдд рдорд╛рдирд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ - рдиреНрдпреВрдирддрдо, рдЕрдзрд┐рдХрддрдо рд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд:

тЮЬ  ~ kubectl describe limitranges --namespace ops
Name:       limit-range
Namespace:  ops
Type        Resource           Min   Max   Default Request  Default Limit  Max Limit/Request Ratio
----        --------           ---   ---   ---------------  -------------  -----------------------
Container   cpu                50m   10    100m             100m           2
Container   ephemeral-storage  12Mi  8Gi   128Mi            4Gi            -
Container   memory             64Mi  40Gi  128Mi            128Mi          2

рдирд╛рдорд╕реНрдерд╛рди рд╕реНрд░реЛрддрд╣рд░реВ рд╕реАрдорд┐рдд рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН рддрд╛рдХрд┐ рдПрдЙрдЯрд╛ рдЯреЛрд▓реАрд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдХрд╛ рд╕рдмреИ рд╕реНрд░реЛрддрд╣рд░реВ рд▓рд┐рди рд╕рдХреНрджреИрди:

тЮЬ  ~ kubectl describe resourcequotas --namespace ops
Name:                   resource-quota
Namespace:              ops
Resource                Used          Hard
--------                ----          ----
limits.cpu              77250m        80
limits.memory           124814367488  150Gi
pods                    31            45
requests.cpu            53850m        80
requests.memory         75613234944   150Gi
services                26            50
services.loadbalancers  0             0
services.nodeports      0             0

рд╡рд░реНрдгрдирдмрд╛рдЯ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ resourcequotas, рдпрджрд┐ ops рдЯреЛрд▓реАрд▓реЗ рдЕрд░реНрдХреЛ 10 cpu рдЦрдкрдд рдЧрд░реНрдиреЗ рдкреЛрдбрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫ рднрдиреЗ, рдЕрдиреБрд╕реВрдЪрдХрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫреИрди рд░ рддреНрд░реБрдЯрд┐ рдлреНрдпрд╛рдБрдХреНрдиреЗрдЫ:

Error creating: pods "nginx-proxy-9967d8d78-nh4fs" is forbidden: exceeded quota: resource-quota, requested: limits.cpu=5,requests.cpu=5, used: limits.cpu=77250m,requests.cpu=53850m, limited: limits.cpu=10,requests.cpu=10

рдпрд╕реНрддреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди, рддрдкрд╛рдИрдВ рдПрдХ рдЙрдкрдХрд░рдг рд▓реЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЬрд╕реНрддреИ рдпреЛ, рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд░ рдЖрджреЗрд╢ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд░рд╛рдЬреНрдп рдкреНрд░рддрд┐рдмрджреНрдз рдЧрд░реНрди рд╕рдХреНрд╖рдоред

2. рдЗрд╖реНрдЯрддрдо рдлрд╛рдЗрд▓ рднрдгреНрдбрд╛рд░рдг рдЫрдиреМрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдиреМ Kubernetes рдкреНрд░рджрд░реНрд╢рди рд╕реБрдЭрд╛рд╡рд╣рд░реВ

рдпрд╣рд╛рдБ рдо рдирд┐рд░рдиреНрддрд░ рднреЛрд▓реНрдпреБрдо рд░ Kubernetes рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдиреЛрдбрд╣рд░реВрдХреЛ рдбрд┐рд╕реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдордХреЛ рд╡рд┐рд╖рдпрдорд╛ рдЫреБрдиреБрд╣реЛрд╕реНред рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдХрд╕реИрд▓реЗ рдЙрддреНрдкрд╛рджрдирдорд╛ HDD рдорд╛ "рдХреНрдпреВрдм" рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрди, рддрд░ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдирд┐рдпрдорд┐рдд SSD рдЕрдм рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдБрджреИрдиред рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рд╕рдорд╕реНрдпрд╛рдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдпреМрдВ рдЬрд╣рд╛рдБ рд▓рдЧрд╣рд░реВрд▓реЗ I/O рдЕрдкрд░реЗрд╕рдирд╣рд░реВрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдбрд┐рд╕реНрдХрд▓рд╛рдИ рдорд╛рд░реНрджреИ рдерд┐рдпреЛ, рд░ рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдЫреИрдирдиреН:

  • рдЙрдЪреНрдЪ-рд╕рдореНрдкрд╛рджрди SSDs рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╡рд╛ NVMe рдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЖрдлреНрдиреИ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ)ред

  • рд▓рдЧрд┐рдЩ рд╕реНрддрд░ рдШрдЯрд╛рдЙрдиреБрд╣реЛрд╕реНред

  • рдбрд┐рд╕реНрдХрд▓рд╛рдИ рдмрд▓рд╛рддреНрдХрд╛рд░ рдЧрд░реНрдиреЗ рдкреЛрдбрд╣рд░реВрдХреЛ "рд╕реНрдорд╛рд░реНрдЯ" рд╕рдиреНрддреБрд▓рди рдЧрд░реНрдиреБрд╣реЛрд╕реН (podAntiAffinity).

рдорд╛рдерд┐рдХреЛ рд╕реНрдХреНрд░рд┐рдирд▓реЗ nginx-ingress-controller рдЕрдиреНрддрд░реНрдЧрдд рдбрд┐рд╕реНрдХрдорд╛ рдХреЗ рд╣реБрдиреНрдЫ рджреЗрдЦрд╛рдЙрдБрдЫ рдЬрдм access_logs рд▓рдЧрд┐рдЩ рд╕рдХреНрд╖рдо рд╣реБрдиреНрдЫ (~ 12 рд╣рдЬрд╛рд░ рд▓рдЧ/рд╕реЗрдХреЗрдиреНрдб)ред рдпреЛ рдЕрд╡рд╕реНрдерд╛, рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдпрд╕ рдиреЛрдбрдорд╛ рд╕рдмреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рдЧрд┐рд░рд╛рд╡рдЯ рд╣реБрди рд╕рдХреНрдЫред

PV рдХреЛ рд▓рд╛рдЧрд┐, рдЕрдлрд╕реЛрд╕, рдореИрд▓реЗ рд╕рдмреИ рдкреНрд░рдпрд╛рд╕ рдЧрд░реЗрдХреЛ рдЫреИрди рдкреНрд░рдЬрд╛рддрд┐ рдирд┐рд░рдиреНрддрд░ рднреЛрд▓реНрдпреБрдорд╣рд░реВред рддрдкрд╛рдИрд▓рд╛рдИ рдЙрдкрдпреБрдХреНрдд рд╣реБрдиреЗ рдЙрддреНрддрдо рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдкрдорд╛, рдпреЛ рд╣рд╛рдореНрд░реЛ рджреЗрд╢рдорд╛ рднрдПрдХреЛ рдЫ рдХрд┐ рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рд╕рд╛рдиреЛ рднрд╛рдЧрд▓рд╛рдИ RWX рднреЛрд▓реНрдпреБрдо рдЪрд╛рд╣рд┐рдиреНрдЫ, рд░ рд▓рд╛рдореЛ рд╕рдордп рдкрд╣рд┐рд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдпрд╕ рдХрд╛рд░реНрдпрдХреЛ рд▓рд╛рдЧрд┐ NFS рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдерд╛рд▓реЗред рд╕рд╕реНрддреЛ рд░ рдкрд░реНрдпрд╛рдкреНрдд... рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдЙрд╕рд▓реЗ рд░ рдореИрд▓реЗ рдмрдХрд╡рд╛рд╕ рдЦрд╛рдП - рддрдкрд╛рдИрд▓рд╛рдИ рдЖрд╢реАрд░реНрд╡рд╛рдж рджрд┐рдиреБрд╣реЛрд╕реН, рддрд░ рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЯреНрдпреБрди рдЧрд░реНрди рд╕рд┐рдХреЗрдХрд╛ рдЫреМрдВ, рд░ рдореЗрд░реЛ рдЯрд╛рдЙрдХреЛ рдЕрдм рджреБрдЦреНрджреИрдиред рд░ рдпрджрд┐ рд╕рдореНрднрд╡ рдЫ рднрдиреЗ, S3 рд╡рд╕реНрддреБ рднрдгреНрдбрд╛рд░рдгрдорд╛ рд╕рд╛рд░реНрдиреБрд╣реЛрд╕реНред

3. рдЕрдиреБрдХреВрд▓рд┐рдд рдЫрд╡рд┐рд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдиреМ Kubernetes рдкреНрд░рджрд░реНрд╢рди рд╕реБрдЭрд╛рд╡рд╣рд░реВ

рдХрдиреНрдЯреЗрдирд░-рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ рдЧрд░рд┐рдПрдХрд╛ рдЫрд╡рд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдЙрддреНрддрдо рд╣реБрдиреНрдЫ рддрд╛рдХрд┐ Kubernetes рд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЫрд┐рдЯреЛ рд▓реНрдпрд╛рдЙрди рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЕрдЭ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд░реВрдкрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд╕рдХреЛрд╕реНред 

рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреНрдб рднрдиреЗрдХреЛ рддрд╕реНрдмрд┐рд░рд╣рд░реВ:

  • рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдорд╛рд╡реЗрд╢ рд╡рд╛ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рджрд░реНрд╢рди;

  • рдЖрдХрд╛рд░рдорд╛ рд╕рд╛рдиреЛ, рдХрд┐рдирдХрд┐ рдареВрд▓рд╛ рддрд╕реНрдмрд┐рд░рд╣рд░реВ рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдирд░рд╛рдореНрд░реЛ рд░реВрдкрдорд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реБрдиреНрдЫрдиреН;

  • рд╕реНрд╡рд╛рд╕реНрдереНрдп рд░ рддрдпрд╛рд░реАрдХреЛ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБрд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ Kubernetes рд▓рд╛рдИ рдбрд╛рдЙрдирдЯрд╛рдЗрдордХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдХрд╛рд░рдмрд╛рд╣реА рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ;

  • рдХрдиреНрдЯреЗрдирд░-рдЕрдиреБрдХреВрд▓ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдорд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЬрд╕реНрддреИ рдЕрд▓реНрдкрд╛рдЗрди рд╡рд╛ CoreOS), рдЬреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рд░реЛрдзреА рдЫрдиреН;

  • рдмрд╣реБ-рдЪрд░рдг рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН рддрд╛рдХрд┐ рддрдкрд╛рдЗрдБ рдХреЗрд╡рд▓ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рд╕рд╛рдердорд╛ рд╕реНрд░реЛрддрд╣рд░реВ рд╣реЛрдЗрдиред

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

  1. рд╕рдореНрдкреВрд░реНрдг рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рд▓реЛрдб рдХрдо рднрдпреЛред

  2. рдХрдиреНрдЯреЗрдирд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдШрдЯрд╛рдЙрдБрджреИред

  3. рддрдкрд╛рдИрдВрдХреЛ рд╕рдореНрдкреВрд░реНрдг рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдХреЛ рд╕рд╛рдиреЛ рдЖрдХрд╛рд░ред

4. DNS рдХреНрдпрд╛рд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдиреМ Kubernetes рдкреНрд░рджрд░реНрд╢рди рд╕реБрдЭрд╛рд╡рд╣рд░реВ

рдпрджрд┐ рд╣рд╛рдореА рдЙрдЪреНрдЪ рднрд╛рд░рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдЫреМрдВ рднрдиреЗ, рдХреНрд▓рд╕реНрдЯрд░рдХреЛ DNS рдкреНрд░рдгрд╛рд▓реА рдЯреНрдпреБрди рдирдЧрд░реА рдЬреАрд╡рди рдПрдХрджрдореИ рдЦрд░рд╛рдм рдЫред рдПрдХ рдкрдЯрдХ, Kubernetes рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдЙрдиреАрд╣рд░реВрдХреЛ kube-dns рд╕рдорд╛рдзрд╛рдирд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реЗред рдпреЛ рдпрд╣рд╛рдБ рдкрдирд┐ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рддрд░ рдпреЛ рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛ рдЯреНрдпреБрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдПрди рд░ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдЙрддреНрдкрд╛рджрди рдЧрд░реЗрди, рдпрджреНрдпрдкрд┐ рдпреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдп рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред рддреНрдпрд╕рдкрдЫрд┐ coredns рджреЗрдЦрд╛ рдкрд░реНрдпреЛ, рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдпреМрдВ рд░ рдХреБрдиреИ рджреБрдГрдЦ рдерд┐рдПрди; рдпреЛ рдкрдЫрд┐ K8s рдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд DNS рд╕реЗрд╡рд╛ рднрдпреЛред рдХреЗрд╣рд┐ рдмрд┐рдиреНрджреБрдорд╛, рд╣рд╛рдореА DNS рдкреНрд░рдгрд╛рд▓реАрдорд╛ 40 рд╣рдЬрд╛рд░ рдЖрд░рдкреАрдПрд╕ рдмрдвреНрдпреМрдВ, рд░ рдпреЛ рд╕рдорд╛рдзрд╛рди рдкрдирд┐ рдЕрдкрд░реНрдпрд╛рдкреНрдд рднрдпреЛред рддрд░, рднрд╛рдЧреНрдпрд▓реЗ, Nodelocaldns рдмрд╛рд╣рд┐рд░ рдЖрдпреЛ, рдЙрд░реНрдл тАЛтАЛрдиреЛрдб рд╕реНрдерд╛рдиреАрдп рдХреНрдпрд╛рд╕, рдЙрд░реНрдл NodeLocal DNSCache.

рд╣рд╛рдореА рдпреЛ рдХрд┐рди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ? рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдорд╛ рдПрдЙрдЯрд╛ рдмрдЧ рдЫ рдЬреБрди UDP рдорд╛ рдХрдиреНрдЯреНрд░реНрдпрд╛рдХ NAT рдорд╛рд░реНрдлрдд рдзреЗрд░реИ рдХрд▓рд╣рд░реВ рдЧрд░реНрджрд╛, рдХрдиреНрдЯреНрд░реНрдпрд╛рдХ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рджреМрдб рдЕрд╡рд╕реНрдерд╛ рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫ, рд░ NAT рдорд╛рд░реНрдлрдд рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рдХреЗрд╣реА рдЕрдВрд╢ рд╣рд░рд╛рдЙрдБрдЫ (рд╕реЗрд╡рд╛ рдорд╛рд░реНрдлрдд рдкреНрд░рддреНрдпреЗрдХ рдпрд╛рддреНрд░рд╛ NAT рд╣реЛ)ред Nodelocaldns рд▓реЗ NAT рдмрд╛рдЯ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрд░ рд░ TCP рд▓рд╛рдИ рдЕрдкрд╕реНрдЯреНрд░рд┐рдо DNS рдорд╛ рдЬрдбрд╛рди рдЕрдкрдЧреНрд░реЗрдб рдЧрд░реЗрд░, рд╕рд╛рдереИ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдЕрдкрд╕реНрдЯреНрд░реАрдо DNS рдкреНрд░рд╢реНрдирд╣рд░реВ (рдЫреЛрдЯреЛ 5-рд╕реЗрдХреЗрдиреНрдб рдирдХрд╛рд░рд╛рддреНрдордХ рдХреНрдпрд╛рд╕ рд╕рд╣рд┐рдд) рдХреНрдпрд╛рд╕ рдЧрд░реЗрд░ рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджрдЫред

5. рдкреЛрдбрд╣рд░реВ рддреЗрд░реНрд╕реЛ рд░ рдард╛рдбреЛ рд░реВрдкрдорд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕реНрдХреЗрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдиреМ Kubernetes рдкреНрд░рджрд░реНрд╢рди рд╕реБрдЭрд╛рд╡рд╣рд░реВ

рдХреЗ рддрдкрд╛рдИрдВ рд╡рд┐рд╢реНрд╡рд╕реНрддрддрд╛рдХрд╛ рд╕рд╛рде рднрдиреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рддрдкрд╛рдИрдВрдХрд╛ рд╕рдмреИ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕рд╣рд░реВ рд▓реЛрдбрдорд╛ рджреБрдИ рджреЗрдЦрд┐ рддреАрди рдЧреБрдгрд╛ рд╡реГрджреНрдзрд┐рдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рдЫрдиреН? рддрдкрд╛рдИрдВрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рд╕реНрд░реЛрддрд╣рд░реВ рдХрд╕рд░реА рдареАрдХрд╕рдБрдЧ рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реНрдиреЗ? рдХрд╛рд░реНрдпрднрд╛рд░ рднрдиреНрджрд╛ рдмрд╛рд╣рд┐рд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдХреЗрд╣реА рдкреЛрдбрд╣рд░реВ рд░рд╛рдЦреНрдиреБ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реБрди рд╕рдХреНрдЫ, рддрд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкрдЫрд╛рдбрд┐ рдкрдЫрд╛рдбрд┐ рд░рд╛рдЦреНрджрд╛ рд╕реЗрд╡рд╛рдорд╛ рдЯреНрд░рд╛рдлрд┐рдХрдорд╛ рдЕрдЪрд╛рдирдХ рд╡реГрджреНрдзрд┐рдмрд╛рдЯ рдбрд╛рдЙрдирдЯрд╛рдЗрдордХреЛ рдЬреЛрдЦрд┐рдо рдЪрд▓реНрдЫред рд╕реЗрд╡рд╛рд╣рд░реВ рдЬрд╕реНрддреИ рддреЗрд░реНрд╕реЛ рдкреЛрдб рдЕрдЯреЛрд╕реНрдХреЗрд▓рд░ ╨╕ рдард╛рдбреЛ рдкреЛрдб рдЕрдЯреЛрд╕реНрдХреЗрд▓рд░.

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

рдиреМ Kubernetes рдкреНрд░рджрд░реНрд╢рди рд╕реБрдЭрд╛рд╡рд╣рд░реВhttps://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231 рдмрд╛рдЯ рд▓рд┐рдЗрдПрдХреЛ рдЫрд╡рд┐

Kubernetes рдорд╛ рдЕрдиреБрд╕реВрдЪрдХ рд╕рдзреИрдВ рдЕрдиреБрд░реЛрдз рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫред рдЬреБрдирд╕реБрдХреИ рдорд╛рди рддрдкрд╛рдИрд▓реЗ рддреНрдпрд╣рд╛рдБ рд░рд╛рдЦреНрдиреБрд╣реБрдиреНрдЫ, рдЕрдиреБрд╕реВрдЪрдХрд▓реЗ рдпрд╕рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдЙрдкрдпреБрдХреНрдд рдиреЛрдб рдЦреЛрдЬреНрдиреЗрдЫред рдХреНрдпреВрдмрд▓реЗрдЯрд▓реЗ рдкреЛрдбрд▓рд╛рдИ рдХрд╣рд┐рд▓реЗ рдереНрд░реЛрдЯрд▓ рдЧрд░реНрдиреЗ рд╡рд╛ рдорд╛рд░реНрдиреЗ рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реАрдорд╛ рдорд╛рдирд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреНрдЫред рд░ рдПрдХ рдорд╛рддреНрд░ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдЕрдиреБрд░реЛрдз рдорд╛рди рд╣реЛ, VPA рдпрд╕рдХреЛ рд╕рд╛рде рдХрд╛рдо рдЧрд░реНрдиреЗрдЫред рдЬрдм рддрдкрд╛рдЗрдБ рдард╛рдбреЛ рд░реВрдкрдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдорд╛рдкрди рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рддрдкрд╛рдЗрдБ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдХреЗ рд╣реБрдиреБрдкрд░реНрдЫ рднрдиреЗрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреБрд╣реБрдиреНрдЫред рддреНрдпрд╕рдкрдЫрд┐ рд╕реАрдорд╛рдорд╛ рдХреЗ рд╣реБрдиреЗ рд╣реЛ ? рдпреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдкрдирд┐ рд╕рдорд╛рдиреБрдкрд╛рддрд┐рдХ рдорд╛рдкрди рдЧрд░рд┐рдиреЗрдЫред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрд╣рд╛рдБ рд╕рд╛рдорд╛рдиреНрдп рдкреЛрдб рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдЫрдиреН:

resources:
   requests:
     memory: 250Mi
     cpu: 200m
   limits:
     memory: 500Mi
     cpu: 350m

рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЗрдиреНрдЬрд┐рдирд▓реЗ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдЫ рдХрд┐ рддрдкрд╛рдИрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓рд╛рдИ 300m CPU рд░ 500Mi рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдЪрд▓реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫ:

resources:
   requests:
     memory: 500Mi
     cpu: 300m
   limits:
     memory: 1000Mi
     cpu: 525m

рдорд╛рдерд┐ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдП рдЕрдиреБрд╕рд╛рд░, рдпреЛ рдореНрдпрд╛рдирд┐рдлреЗрд╕реНрдЯрдорд╛ рдЕрдиреБрд░реЛрдз/рд╕реАрдорд╛ рдЕрдиреБрдкрд╛рддрдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдиреБрдкрд╛рддрд┐рдХ рдорд╛рдкрди рд╣реЛ:

  • CPU: 200m тЖТ 300m: рдЕрдиреБрдкрд╛рдд 1:1.75;

  • рдореЗрдореЛрд░реА: 250Mi тЖТ 500Mi: рдЕрдиреБрдкрд╛рдд 1:2ред

рдпрд╕рдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ HPA, рддреНрдпрд╕рдкрдЫрд┐ рд╕рдЮреНрдЪрд╛рд▓рди рдХреЛ рд╕рдВрдпрдиреНрддреНрд░ рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рдЫред CPU рд░ рдореЗрдореЛрд░реА рдЬрд╕реНрддрд╛ рдореЗрдЯреНрд░рд┐рдХрд╣рд░реВ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН, рд░ рдпрджрд┐ рд╕рдмреИ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВрдХреЛ рдФрд╕рдд рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдирд╛рдШреЗрдХреЛ рдЫ рднрдиреЗ, рдореВрд▓реНрдп рдереНрд░реЗрд╕рд╣реЛрд▓реНрдбрднрдиреНрджрд╛ рддрд▓ рдирдЖрдПрд╕рдореНрдо рд╡рд╛ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВрдХреЛ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдирдкреБрдЧреНрджрд╛рд╕рдореНрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓рд╛рдИ +1 рдЙрдк рджреНрд╡рд╛рд░рд╛ рдорд╛рдкрди рдЧрд░рд┐рдиреНрдЫред

рдиреМ Kubernetes рдкреНрд░рджрд░реНрд╢рди рд╕реБрдЭрд╛рд╡рд╣рд░реВhttps://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231 рдмрд╛рдЯ рд▓рд┐рдЗрдПрдХреЛ рдЫрд╡рд┐

рд╕рд╛рдорд╛рдиреНрдп рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЬрд╕реНрддреИ CPU рд░ рдореЗрдореЛрд░реАрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рддрдкрд╛рдИрдВрд▓реЗ Prometheus рдмрд╛рдЯ рдЖрдлреНрдиреЛ рдЕрдиреБрдХреВрд▓рди рдореЗрдЯреНрд░рд┐рдХреНрд╕рдорд╛ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдбрд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕реЛрдЪреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рддрдкрд╛рдЗрдБрдХреЛ рдЖрд╡реЗрджрди рдХрд╣рд┐рд▓реЗ рдорд╛рдкрди рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╣реА рд╕рдВрдХреЗрдд рд╣реЛ рднрдиреЗред рдПрдХрдкрдЯрдХ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рддреЛрдХрд┐рдПрдХреЛ рдореЗрдЯреНрд░рд┐рдХ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдбрднрдиреНрджрд╛ рддрд▓ рд╕реНрдерд┐рд░ рднрдПрдкрдЫрд┐, HPA рд▓реЗ рдкреЛрдбрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВрдХреЛ рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛рдорд╛ рд╡рд╛ рд▓реЛрдбрд▓реЗ рддреЛрдХрд┐рдПрдХреЛ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдкреВрд░рд╛ рдирдЧрд░реЗрд╕рдореНрдо рдорд╛рдкрди рдЧрд░реНрди рдерд╛рд▓реНрдЫред

6. рдиреЛрдб рдПрдлрд┐рдирд┐рдЯреА рд░ рдкреЛрдб рдПрдлрд┐рдирд┐рдЯреА рдмрд╛рд░реЗ рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН

рдиреМ Kubernetes рдкреНрд░рджрд░реНрд╢рди рд╕реБрдЭрд╛рд╡рд╣рд░реВ

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

рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдиреЛрдбрд╣рд░реВ рдЫрдиреН рдЬреБрди рдХрдореНрдкреНрдпреБрдЯ-рдЧрд╣рди рдЕрдкрд░реЗрд╕рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдЫрдиреН рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдЕрдзрд┐рдХрддрдо рджрдХреНрд╖рддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓рд╛рдИ рд╕рдореНрдмрдиреНрдзрд┐рдд рдиреЛрдбрд╣рд░реВрдорд╛ рдмрд╛рдБрдзреНрдиреБ рд░рд╛рдореНрд░реЛ рд╣реБрдиреНрдЫред рдпреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА nodeSelector рдиреЛрдб рд▓реЗрдмрд▓ рд╕рдВрдЧред

рдорд╛рдиреМрдВ рддрдкрд╛рдИрдВрд╕рдБрдЧ рджреБрдИрд╡рдЯрд╛ рдиреЛрдбрд╣рд░реВ рдЫрдиреН: рдПрдЙрдЯрд╛рд╕рдБрдЧ CPUType=HIGHFREQ рд░ рджреНрд░реБрдд рдХреЛрд░рд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛, рдЕрд░реНрдХреЛрд╕рдБрдЧ MemoryType=HIGHMEMORY рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рд░ рдЫрд┐рдЯреЛ рдкреНрд░рджрд░реНрд╢рдиред рдиреЛрдбрдорд╛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рдЕрд╕рд╛рдЗрди рдЧрд░реНрдиреБ рд╕рдмреИрднрдиреНрджрд╛ рд╕рдЬрд┐рд▓реЛ рддрд░рд┐рдХрд╛ рд╣реЛ HIGHFREQрдЦрдгреНрдбрдорд╛ рдердкреЗрд░ spec рдпрд╕ рдкреНрд░рдХрд╛рд░ рдЪрдпрдирдХрд░реНрддрд╛:

тАж
nodeSelector:
	CPUType: HIGHFREQ

рдпреЛ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдЕрдзрд┐рдХ рдорд╣рдБрдЧреЛ рд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░рд┐рдХрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд╣реЛ nodeAffinity рдХреНрд╖реЗрддреНрд░ рдорд╛ affinity редред specред рддреНрдпрд╣рд╛рдБ рджреБрдИ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреН:

  • requiredDuringSchedulingIgnoredDuringExecution: рд╣рд╛рд░реНрдб рд╕реЗрдЯрд┐рдЩ (рдЕрдиреБрд╕реВрдЪрдХрд▓реЗ рдкреЛрдбрд╣рд░реВ рд╡рд┐рд╢реЗрд╖ рдиреЛрдбрд╣рд░реВрдорд╛ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫ (рд░ рдХрддреИ рдкрдирд┐));

  • preferredDuringSchedulingIgnoredDuringExecution: рд╕рдлреНрдЯ рд╕реЗрдЯрд┐рдЩ (рдЕрдиреБрд╕реВрдЪрдХрд▓реЗ рдирд┐рд╢реНрдЪрд┐рдд рдиреЛрдбрд╣рд░реВрдорд╛ рддреИрдирд╛рддреА рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫ, рд░ рдпрджрд┐ рддреНрдпреЛ рдЕрд╕рдлрд▓ рднрдпреЛ рднрдиреЗ, рдпрд╕рд▓реЗ рдЕрд░реНрдХреЛ рдЙрдкрд▓рдмреНрдз рдиреЛрдбрдорд╛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫ)ред

рддрдкрд╛рдИрдВрд▓реЗ рдиреЛрдб рд▓реЗрдмрд▓рд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕реНрддреИ In, NotIn, Exists, DoesNotExist, Gt рд╡рд╛ Ltред рдпрджреНрдпрдкрд┐, рдпрд╛рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рд▓реЗрдмрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдореЛ рд╕реВрдЪреАрдорд╛ рдЬрдЯрд┐рд▓ рд╡рд┐рдзрд┐рд╣рд░реВрд▓реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╕реНрдерд┐рддрд┐рд╣рд░реВрдорд╛ рдирд┐рд░реНрдгрдп рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛рд▓рд╛рдИ рдврд┐рд▓реЛ рдЧрд░реНрдиреЗрдЫред рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рдпрд╕рд▓рд╛рдИ рд╕рд░рд▓ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред

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

╨Т podAffinity рдХреНрд╖реЗрддреНрд░рд╣рд░реБ affinity редред spec рдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдЬрд╕реНрддреИ рд╕рдорд╛рди рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдЙрдкрд▓рдмреНрдз рдЫрдиреН nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution ╨╕ preferredDuringSchedulingIgnoredDuringExecutionред рдлрд░рдХ рдпрддрд┐ рдорд╛рддреНрд░реИ рд╣реЛ matchExpressions рдкреЛрдбрд╣рд░реВрд▓рд╛рдИ рдиреЛрдбрдорд╛ рдмрд╛рдБрдзреНрдиреЗрдЫ рдЬреБрди рдкрд╣рд┐рд▓реЗ рдиреИ рддреНрдпреЛ рд▓реЗрдмрд▓рдХреЛ рд╕рд╛рде рдкреЛрдб рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫред

Kubernetes рдкрдирд┐ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ podAntiAffinity, рдЬрд╕рд▓реЗ, рдпрд╕рдХреЛ рд╡рд┐рдкрд░рд┐рдд, рдкреЛрдбрд▓рд╛рдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЛрдбрд╣рд░реВрд╕рдБрдЧ рдиреЛрдбрдорд╛ рдмрд╛рдБрдзреНрджреИрдиред

рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдХреЛ рдмрд╛рд░реЗрдорд╛ nodeAffinity рдПрдЙрдЯреИ рд╕рд▓реНрд▓рд╛рд╣ рджрд┐рди рд╕рдХрд┐рдиреНрдЫ: рдирд┐рдпрдорд╣рд░реВ рд╕рд░рд▓ рд░ рддрд╛рд░реНрдХрд┐рдХ рд░рд╛рдЦреНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдирд┐рдпрдорд╣рд░реВрдХреЛ рдЬрдЯрд┐рд▓ рд╕реЗрдЯрдХреЛ рд╕рд╛рде рдкреЛрдб рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдУрднрд░рд▓реЛрдб рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред рдХреНрд▓рд╕реНрдЯрд░рдХрд╛ рд╕рд░реНрддрд╣рд░реВрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдБрджреИрди, рд╢реЗрдбреНрдпреБрд▓рд░рдорд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рднрд╛рд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рд░ рд╕рдордЧреНрд░ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдШрдЯрд╛рдЙрдиреЗ рдирд┐рдпрдо рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдпреЛ рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдЫред

7. рджрд╛рдЧ рд░ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛

рдЕрдиреБрд╕реВрдЪрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдЕрд░реНрдХреЛ рддрд░рд┐рдХрд╛ рдЫред рдпрджрд┐ рддрдкрд╛рдИрдВрд╕рдБрдЧ рд╕рдпреМрдВ рдиреЛрдбрд╣рд░реВ рд░ рд╣рдЬрд╛рд░реМрдВ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕рд╣рд░реВ рднрдПрдХреЛ рдареВрд▓реЛ рдХреНрд▓рд╕реНрдЯрд░ рдЫ рднрдиреЗ, рдирд┐рд╢реНрдЪрд┐рдд рдиреЛрдбрд╣рд░реВрдорд╛ рдХреЗрд╣реА рдкреЛрдбрд╣рд░реВрд▓рд╛рдИ рд╣реЛрд╕реНрдЯ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рди рдзреЗрд░реИ рдЧрд╛рд╣реНрд░реЛ рд╣реБрдиреНрдЫред

рджрд╛рдЧрдХреЛ рд╕рдВрдпрдиреНрддреНрд░-рдкреНрд░рддрд┐рдмрдиреНрдзрд┐рдд рдирд┐рдпрдорд╣рд░реВ-рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдорджреНрджрдд рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдХреЗрд╣рд┐ рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реБ рдорд╛ рддрдкрд╛рдИрд▓реЗ рдХреЗрд╣рд┐ рдиреЛрдбрд╣рд░реБ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкреЛрдбрд╣рд░реБ рд▓рд╛рдИ рдирд┐рд╖реЗрдз рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЛрдбрдорд╛ рджрд╛рдЧ рд▓рд╛рдЧреВ рдЧрд░реНрди рддрдкрд╛рдИрдВрд▓реЗ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ taint kubectl рдорд╛ред рдХреБрдЮреНрдЬреА рд░ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рддреНрдпрд╕рдкрдЫрд┐ рдЬрд╕реНрддреИ рджрд╛рдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН NoSchedule рд╡рд╛ NoExecute:

$ kubectl taint nodes node10 node-role.kubernetes.io/ingress=true:NoSchedule

рдпреЛ рдкрдирд┐ рдзреНрдпрд╛рди рджрд┐рди рд▓рд╛рдпрдХ рдЫ рдХрд┐ рджрд╛рдЧ рд╕рдВрдпрдиреНрддреНрд░рд▓реЗ рддреАрди рдореБрдЦреНрдп рдкреНрд░рднрд╛рд╡рд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ: NoSchedule, NoExecute ╨╕ PreferNoSchedule.

  • NoSchedule рдпрд╕рдХреЛ рдорддрд▓рдм рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рдкреЛрдб рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдорд╛ рдХреБрдиреИ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реБрдиреЗрдЫреИрди tolerations, рдпреЛ рдиреЛрдбрдорд╛ рддреИрдирд╛рдд рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрди (рдпрд╕ рдЙрджрд╛рд╣рд░рдгрдорд╛ node10).

  • PreferNoSchedule - рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг NoScheduleред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдЕрдиреБрд╕реВрдЪрдХрд▓реЗ рдорд┐рд▓реНрджреЛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирднрдПрдХреЛ рдкреЛрдбрд╣рд░реВ рдЖрд╡рдВрдЯрд┐рдд рдирдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫ tolerations рдкреНрд░рддрд┐ рдиреЛрдб, рддрд░ рдпреЛ рдХрдбрд╛ рд╕реАрдорд╛ рд╣реЛрдЗрдиред рдпрджрд┐ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдХреБрдиреИ рд╕реНрд░реЛрддрд╣рд░реВ рдЫреИрдирдиреН рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдкреЛрдбрд╣рд░реВ рдпреЛ рдиреЛрдбрдорд╛ рддреИрдирд╛рдд рдЧрд░реНрди рд╕реБрд░реБ рд╣реБрдиреЗрдЫред

  • NoExecute - рдпреЛ рдкреНрд░рднрд╛рд╡рд▓реЗ рдкреЛрдбрд╣рд░реВрдХреЛ рддрддреНрдХрд╛рд▓ рдирд┐рдХрд╛рд╕реАрд▓рд╛рдИ рдЯреНрд░рд┐рдЧрд░ рдЧрд░реНрджрдЫ рдЬреБрдирд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЫреИрди tolerations.

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

рдпрд╣рд╛рдБ рдкреЛрдб рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

spec:
   tolerations:
     - key: "node-role.kubernetes.io/ingress"
        operator: "Equal"
        value: "true"
        effect: "NoSchedule"

рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛрдЗрди рдХрд┐ рдЕрд░реНрдХреЛ рд░рд┐рдбрд┐рдкреНрд▓реЛрдп рдпреЛ рд╡рд┐рд╢реЗрд╖ рдиреЛрдбрдорд╛ рдкрд░реНрдиреЗрдЫ, рдпреЛ рдиреЛрдб рдПрдлрд┐рдирд┐рдЯреА рдореЗрдХрд╛рдирд┐рдЬрдо рд╣реЛрдЗрди рд░ nodeSelectorред рддрд░ рдзреЗрд░реИ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реЗрд░, рддрдкрд╛рдИрдВ рдзреЗрд░реИ рд▓рдЪрд┐рд▓реЛ рдЕрдиреБрд╕реВрдЪрдХ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

8. рдкреЛрдб рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН

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

Kubernetes Pod рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд░ Preemption рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╡рд┐рднрд┐рдиреНрди рддрд░рд┐рдХрд╛рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рд╕реЗрдЯрд┐рдЩрдорд╛ рдзреЗрд░реИ рднрд╛рдЧрд╣рд░реВ рд╣реБрдиреНрдЫрдиреН: рд╡рд╕реНрддреБ PriorityClass рд░ рдХреНрд╖реЗрддреНрд░ рд╡рд┐рд╡рд░рдг priorityClassName рдкреЛрдб рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдорд╛ред рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реЗрд░реМрдВ:

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority
value: 99999
globalDefault: false
description: "This priority class should be used for very important pods only"

рд╣рд╛рдореА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВ PriorityClass, рдпрд╕рд▓рд╛рдИ рдирд╛рдо, рд╡рд░реНрдгрди рд░ рдореВрд▓реНрдп рджрд┐рдиреБрд╣реЛрд╕реНред рдЙрдЪреНрдЪ value, рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ред рдорд╛рди рдХреБрдиреИ рдкрдирд┐ 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ 1 рднрдиреНрджрд╛ рдХрдо рд╡рд╛ рдмрд░рд╛рдмрд░ рд╣реБрди рд╕рдХреНрдЫред рдЙрдЪреНрдЪ рдорд╛рдирд╣рд░реВ рдорд┐рд╢рди-рдХреНрд░рд┐рдЯрд┐рдХрд▓ рдкреНрд░рдгрд╛рд▓реА рдкреЛрдбрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдЖрд░рдХреНрд╖рд┐рдд рдЫрдиреН рдЬреБрди рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдкреНрд░реАрдореНрдкреНрдЯ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред рд╡рд┐рд╕реНрдерд╛рдкрди рддрдм рдорд╛рддреНрд░ рд╣реБрдиреНрдЫ рдЬрдм рдЙрдЪреНрдЪ-рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдХреЛ рдкреЛрдбрдорд╛ рдШреБрдореНрдиреЗ рдард╛рдЙрдБ рдЫреИрди, рддреНрдпрд╕рдкрдЫрд┐ рдирд┐рд╢реНрдЪрд┐рдд рдиреЛрдбрдмрд╛рдЯ рдХреЗрд╣реА рдкреЛрдбрд╣рд░реВ рдЦрд╛рд▓реА рдЧрд░рд┐рдиреЗрдЫред рдпрджрд┐ рдпреЛ рд╕рдВрдпрдиреНрддреНрд░ рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдХрдареЛрд░ рдЫ рднрдиреЗ, рддрдкрд╛рдИрдВ рд╡рд┐рдХрд▓реНрдк рдердкреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ preemptionPolicy: Never, рд░ рддреНрдпрд╕рдкрдЫрд┐ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рд╣реБрдиреЗрдЫреИрди, рдкреЛрдб рд▓рд╛рдордорд╛ рдкрд╣рд┐рд▓реЗ рдЙрднрд┐рдиреЗрдЫ рд░ рдЕрдиреБрд╕реВрдЪрдХрд▓рд╛рдИ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдГрд╢реБрд▓реНрдХ рд╕реНрд░реЛрддрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдкрд░реНрдЦрдиреЗрдЫред

рдЕрд░реНрдХреЛ, рд╣рд╛рдореА рдПрдЙрдЯрд╛ рдкреЛрдб рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВ рдЬрд╕рдорд╛ рд╣рд╛рдореА рдирд╛рдо рд╕рдВрдХреЗрдд рдЧрд░реНрдЫреМрдВ priorityClassName:

apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
 spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP
  priorityClassName: high-priority
          

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

рддрд╕рд░реНрде, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ nginx-ingress-controller, coredns, рдЖрджрд┐ рдЬрд╕реНрддрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реЗрд╡рд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рджрдХреНрд╖рддрд╛ рдмрдврд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

9. ETCD рдХреНрд▓рд╕реНрдЯрд░ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдиреМ Kubernetes рдкреНрд░рджрд░реНрд╢рди рд╕реБрдЭрд╛рд╡рд╣рд░реВ

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

рдиреМ Kubernetes рдкреНрд░рджрд░реНрд╢рди рд╕реБрдЭрд╛рд╡рд╣рд░реВ

рдзреНрдпрд╛рди рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕рджрд╕реНрдпрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рдмрдврд╛рдЙрдБрджрд╛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирдХреЛ рдЦрд░реНрдЪрдорд╛ рдЧрд▓реНрддреА рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдмрдврд╛рдЙрди рд╕рдХреНрдЫ, рд╕рдмреИ рдХреБрд░рд╛ рдордзреНрдпрд╕реНрдерддрд╛рдорд╛ рд╣реБрдиреБрдкрд░реНрдЫред

рдпрджрд┐ рд╣рд╛рдореА рд╕реЗрд╡рд╛ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реНрдЫреМрдВ рднрдиреЗ, рддреНрдпрд╣рд╛рдБ рдХреЗрд╣реА рд╕рд┐рдлрд╛рд░рд┐рд╕рд╣рд░реВ рдЫрдиреН:

  1. рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╕рд╛рдЗрдЬрдорд╛ рдЖрдзрд╛рд░рд┐рдд рд░рд╛рдореНрд░реЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЫ (рддрдкрд╛рдИрд▓реЗ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдпрд╣рд╛рдБ).

  2. рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ DCs рдХреЛ рдПрдХ рдЬреЛрдбреА рд╡рд╛ рддрдкрд╛рдИрдВрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рд░ рдбрд┐рд╕реНрдХрд╣рд░реВ рдмреАрдЪрдорд╛ рдХреНрд▓рд╕реНрдЯрд░ рдлреИрд▓рд╛рдЙрдиреБрднрдПрдХреЛ рдЫ рднрдиреЗ рдХреЗрд╣реА рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЯреНрд╡реАрдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рддрдкрд╛рдИрдВрд▓реЗ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╣рд╛рдБ).

рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛

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

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