рдХреБрдмрд░реНрдиреЗрдЯреНрд╕: рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЗрддрдХреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдХрд╛ рдЖрд╣реЗ?

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

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕: рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЗрддрдХреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдХрд╛ рдЖрд╣реЗ?

рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдХреЛрдгрддреНрдпрд╛ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░рдЪреА рд╕рдВрд╕рд╛рдзрдиреЗ рдЕрд╕реНрддрд┐рддреНрддреНрд╡рд╛рдд рдЖрд╣реЗрдд рддреЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ - рд╣реЗ рдЕрд░реНрдерд╛рддрдЪ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡реЗрд│ рдЖрдгрд┐ рд░реЕрдо рдЖрд╣реЗ. k8s рдордзреНрдпреЗ рд╣реЗ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдХрд╛рд░ рдЦрд╛рд▓реАрд▓ рдПрдХрдХрд╛рдВрдордзреНрдпреЗ рдореЛрдЬрд▓реЗ рдЬрд╛рддрд╛рдд:

  • CPU - рдХреЛрд░ рдордзреНрдпреЗ
  • рд░реЕрдо - рдмрд╛рдЗрдЯреНрд╕рдордзреНрдпреЗ

рд╢рд┐рд╡рд╛рдп, рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕рд╛рдзрдирд╛рд╕рд╛рдареА рджреЛрди рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗрдЯ рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ - рд╡рд┐рдирдВрддреНрдпрд╛ ╨╕ рдорд░реНрдпрд╛рджрд╛. рд╡рд┐рдирдВрддреНрдпрд╛ - рдХрдВрдЯреЗрдирд░ (рдЖрдгрд┐ рд╕рдВрдкреВрд░реНрдг рдкреЙрдб) рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдиреЛрдбрдЪреНрдпрд╛ рд╡рд┐рдирд╛рдореВрд▓реНрдп рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪреНрдпрд╛ рдХрд┐рдорд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддреЗ, рддрд░ рдорд░реНрдпрд╛рджрд╛ рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕рд╛рдзрдирд╛рдВрд╡рд░ рдХрдареЛрд░ рдорд░реНрдпрд╛рджрд╛ рд╕реЗрдЯ рдХрд░рддреЗ.

рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ рдХреА рдореЕрдирд┐рдлреЗрд╕реНрдЯрд▓рд╛ рджреЛрдиреНрд╣реА рдкреНрд░рдХрд╛рд░ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╡рд░реНрддрди рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдЕрд╕реЗрд▓:

  • рдЬрд░ рдХреЗрд╡рд│ рд╕рдВрд╕рд╛рдзрдирд╛рдЪреНрдпрд╛ рдорд░реНрдпрд╛рджрд╛ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛ рдЕрд╕рддреАрд▓, рддрд░ рдпрд╛ рд╕рдВрд╕рд╛рдзрдирд╛рдЪреНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдорд░реНрдпрд╛рджреЗрдЪреНрдпрд╛ рдмрд░реЛрдмрд░реАрдЪреЗ рдореВрд▓реНрдп рдШреЗрддрд╛рдд (рддреБрдореНрд╣реА рд╡рд░реНрдгрди рд╕рдВрд╕реНрдерд╛рдВрдирд╛ рдХреЙрд▓ рдХрд░реВрди рд╣реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛). рддреНрдпрд╛. рдХрд┐рдВрдмрд╣реБрдирд╛, рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рддреЗрд╡рдвреНрдпрд╛рдЪ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдкреБрд░рддреЗ рдорд░реНрдпрд╛рджрд┐рдд рдЕрд╕реЗрд▓.
  • рдЬрд░ рд╕рдВрд╕рд╛рдзрдирд╛рд╕рд╛рдареА рдлрдХреНрдд рд╡рд┐рдирдВрддреНрдпрд╛ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛ рдЕрд╕рддреАрд▓, рддрд░ рдпрд╛ рд╕рдВрд╕рд╛рдзрдирд╛рд╡рд░ рдХреЛрдгрддреЗрд╣реА рд╡рд░рдЪреЗ рдирд┐рд░реНрдмрдВрдз рд╕реЗрдЯ рдХреЗрд▓реЗрд▓реЗ рдирд╛рд╣реАрдд - рдореНрд╣рдгрдЬреЗ рдХрдВрдЯреЗрдирд░ рдХреЗрд╡рд│ рдиреЛрдбрдЪреНрдпрд╛ рд╕рдВрд╕рд╛рдзрдирд╛рдВрджреНрд╡рд╛рд░реЗ рдорд░реНрдпрд╛рджрд┐рдд рдЖрд╣реЗ.

рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХреЗрд╡рд│ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░рдЪреНрдпрд╛ рд╕реНрддрд░рд╛рд╡рд░рдЪ рдирд╡реНрд╣реЗ рддрд░ рдЦрд╛рд▓реАрд▓ рдШрдЯрдХрд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдиреЗрдорд╕реНрдкреЗрд╕ рд╕реНрддрд░рд╛рд╡рд░ рджреЗрдЦреАрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ:

  • рдорд░реНрдпрд╛рджрд╛ рд╢реНрд░реЗрдгреА тАФ ns рдордзреАрд▓ рдХрдВрдЯреЗрдирд░/рдкреЙрдб рд╕реНрддрд░рд╛рд╡рд░реАрд▓ рдкреНрд░рддрд┐рдмрдВрдз рдзреЛрд░рдгрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░рддреЗ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░/рдкреЙрдбрд╡рд░реАрд▓ рдбрд┐рдлреЙрд▓реНрдЯ рдорд░реНрдпрд╛рджрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрд╕реЗрдЪ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдЪрд░рдмреАрдпреБрдХреНрдд рдХрдВрдЯреЗрдирд░/рд╢реЗрдВрдЧрд╛ (рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдЙрд▓рдЯ) рддрдпрд╛рд░ рд╣реЛрдгреНрдпрд╛рд╕ рдкреНрд░рддрд┐рдмрдВрдз рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреНрдпрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдорд░реНрдпрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдгрд┐ рдорд░реНрдпрд╛рджрд╛ рдЖрдгрд┐ рд╡рд┐рдирдВрддреНрдпрд╛рдВрдордзреАрд▓ рдореВрд▓реНрдпрд╛рдВрдордзреАрд▓ рд╕рдВрднрд╛рд╡реНрдп рдлрд░рдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рд╛
  • рд╕рдВрд╕рд╛рдзрди рдХреЛрдЯрд╛ тАФ ns рдордзреАрд▓ рд╕рд░реНрд╡ рдХрдВрдЯреЗрдирд░реНрд╕рд╕рд╛рдареА рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рдкреНрд░рддрд┐рдмрдВрдз рдзреЛрд░рдгрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░рд╛ рдЖрдгрд┐ рдирд┐рдпрдо рдореНрд╣рдгреВрди, рдкрд░реНрдпрд╛рд╡рд░рдгрд╛рдВрдордзреНрдпреЗ рд╕рдВрд╕рд╛рдзрдиреЗ рдорд░реНрдпрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ (рдЬреЗрд╡реНрд╣рд╛ рдиреЛрдб рд╕реНрддрд░рд╛рд╡рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛рдЯреЗрдХреЛрд░рдкрдгреЗ рд╕реАрдорд╛рдВрдХрд┐рдд рдХреЗрд▓реЗрд▓реЗ рдирд╕рддреЗ рддреЗрд╡реНрд╣рд╛ рдЙрдкрдпреБрдХреНрдд)

рдЦрд╛рд▓реАрд▓ рдореЕрдирд┐рдлреЗрд╕реНрдЯрдЪреА рдЙрджрд╛рд╣рд░рдгреЗ рдЖрд╣реЗрдд рдЬреА рд╕рдВрд╕рд╛рдзрди рдорд░реНрдпрд╛рджрд╛ рд╕реЗрдЯ рдХрд░рддрд╛рдд:

  • рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рд╕реНрддрд░рд╛рд╡рд░:

    containers:
    - name: app-nginx
      image: nginx
      resources:
        requests:
          memory: 1Gi
        limits:
          cpu: 200m

    рддреНрдпрд╛. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, nginx рд╕рд╣ рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдиреЛрдбрд╡рд░ рдХрд┐рдорд╛рди 1G рд╡рд┐рдирд╛рдореВрд▓реНрдп RAM рдЖрдгрд┐ 0.2 CPU рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реЗрд▓, рддрд░ рдЬрд╛рд╕реНрддреАрдд рдЬрд╛рд╕реНрдд рдХрдВрдЯреЗрдирд░ 0.2 CPU рдЖрдгрд┐ рдиреЛрдбрд╡рд░реАрд▓ рд╕рд░реНрд╡ рдЙрдкрд▓рдмреНрдз рд░реЕрдо рд╡рд╛рдкрд░реВ рд╢рдХрддреЛ.

  • рдкреВрд░реНрдгрд╛рдВрдХ рд╕реНрддрд░рд╛рд╡рд░ ns:

    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: nxs-test
    spec:
      hard:
        requests.cpu: 300m
        requests.memory: 1Gi
        limits.cpu: 700m
        limits.memory: 2Gi

    рддреНрдпрд╛. рдбреАрдлреЙрд▓реНрдЯ ns рдордзреАрд▓ рд╕рд░реНрд╡ рд╡рд┐рдирдВрддреА рдХрдВрдЯреЗрдирд░рдЪреА рдмреЗрд░реАрдЬ CPU рд╕рд╛рдареА 300m рдЖрдгрд┐ OP рд╕рд╛рдареА 1G рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЕрд╕реВ рд╢рдХрдд рдирд╛рд╣реА рдЖрдгрд┐ рд╕рд░реНрд╡ рдорд░реНрдпрд╛рджрд╛рдВрдЪреА рдмреЗрд░реАрдЬ CPU рд╕рд╛рдареА 700m рдЖрдгрд┐ OP рд╕рд╛рдареА 2G рдЖрд╣реЗ.

  • ns рдордзреАрд▓ рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рдбреАрдлреЙрд▓реНрдЯ рдорд░реНрдпрд╛рджрд╛:

    apiVersion: v1
    kind: LimitRange
    metadata:
      name: nxs-limit-per-container
    spec:
     limits:
       - type: Container
         defaultRequest:
           cpu: 100m
           memory: 1Gi
         default:
           cpu: 1
           memory: 2Gi
         min:
           cpu: 50m
           memory: 500Mi
         max:
           cpu: 2
           memory: 4Gi

    рддреНрдпрд╛. рд╕рд░реНрд╡ рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рдбрд┐рдлреЙрд▓реНрдЯ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ, рд╡рд┐рдирдВрддреА CPU рд╕рд╛рдареА 100m рдЖрдгрд┐ OP рд╕рд╛рдареА 1G рд╡рд░ рд╕реЗрдЯ рдХреЗрд▓реА рдЬрд╛рдИрд▓, рдорд░реНрдпрд╛рджрд╛ - 1 CPU рдЖрдгрд┐ 2G. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, CPU (50m < x < 2) рдЖрдгрд┐ RAM (500M < x < 4G) рд╕рд╛рдареА рд╡рд┐рдирдВрддреА/рдорд░реНрдпрд╛рджреЗрдордзреАрд▓ рд╕рдВрднрд╛рд╡реНрдп рдореВрд▓реНрдпрд╛рдВрд╡рд░ рдорд░реНрдпрд╛рджрд╛ рджреЗрдЦреАрд▓ рд╕реЗрдЯ рдХреЗрд▓реА рдЖрд╣реЗ.

  • рдкреЙрдб-рд╕реНрддрд░реАрдп рдирд┐рд░реНрдмрдВрдз рдПрдирдПрд╕:

    apiVersion: v1
    kind: LimitRange
    metadata:
     name: nxs-limit-pod
    spec:
     limits:
     - type: Pod
       max:
         cpu: 4
         memory: 1Gi

    рддреНрдпрд╛. рдбреАрдлреЙрд▓реНрдЯ рдПрдирдПрд╕рдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдбрд╕рд╛рдареА 4 vCPU рдЖрдгрд┐ 1G рдЪреА рдорд░реНрдпрд╛рджрд╛ рдЕрд╕реЗрд▓.

рдЖрддрд╛ рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдВрдЧреВ рдЗрдЪреНрдЫрд┐рддреЛ рдХреА рд╣реЗ рдирд┐рд░реНрдмрдВрдз рд╕реЗрдЯ рдХреЗрд▓реНрдпрд╛рдиреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдХреЛрдгрддреЗ рдлрд╛рдпрджреЗ рдорд┐рд│реВ рд╢рдХрддрд╛рдд.

рдиреЛрдбреНрд╕ рджрд░рдореНрдпрд╛рди рд▓реЛрдб рдмреЕрд▓реЗрдВрд╕рд┐рдВрдЧ рдпрдВрддреНрд░рдгрд╛

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

  1. рдлрд┐рд▓реНрдЯрд░
  2. рд░реЗрдВрдЬрд┐рдВрдЧ

рддреНрдпрд╛. рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдзреЛрд░рдгрд╛рдиреБрд╕рд╛рд░, рдиреЛрдбреНрд╕ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдирд┐рд╡рдбрд▓реЗ рдЬрд╛рддрд╛рдд рдЬреНрдпрд╛рд╡рд░ рд╕реЗрдЯрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдкреЙрдб рд▓реЙрдиреНрдЪ рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ predicates (рдкреЙрдб рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдиреЛрдбрдХрдбреЗ рдкреБрд░реЗрд╢реА рд╕рдВрд╕рд╛рдзрдиреЗ рдЖрд╣реЗрдд рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╣ - PodFitsResources), рдЖрдгрд┐ рдирдВрддрд░ рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдбрд╕рд╛рдареА, рддреНрдпрд╛рдиреБрд╕рд╛рд░ рдЕрдЧреНрд░рдХреНрд░рдо рдкреЙрдЗрдВрдЯреНрд╕ рджрд┐рд▓реЗ рдЬрд╛рддрд╛рдд (рдпрд╛рд╕рд╣, рдиреЛрдбрдордзреНрдпреЗ рдЬрд┐рддрдХреЗ рдЕрдзрд┐рдХ рд╡рд┐рдирд╛рдореВрд▓реНрдп рд╕рдВрд╕рд╛рдзрдиреЗ рдЕрд╕рддреАрд▓, рддрд┐рддрдХреЗ рдЕрдзрд┐рдХ рдЧреБрдг рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓ - LeastResourceAllocation/LeastRequestedPriority/BalancedResourceAllocation) рдЖрдгрд┐ рдкреЙрдб рдиреЛрдбрд╡рд░ рд╕рд░реНрд╡рд╛рдзрд┐рдХ рдЧреБрдгрд╛рдВрд╕рд╣ рд▓реЙрдиреНрдЪ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ (рдЬрд░ рдЕрдиреЗрдХ рдиреЛрдбреНрд╕ рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╣реА рдЕрдЯ рдкреВрд░реНрдг рдХрд░рдд рдЕрд╕рддреАрд▓, рддрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирд┐рд╡рдбрд▓рд╛ рдЖрд╣реЗ).

рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдХреА рд╢реЗрдбреНрдпреВрд▓рд░, рдиреЛрдбрдЪреНрдпрд╛ рдЙрдкрд▓рдмреНрдз рд╕реНрддреНрд░реЛрддрд╛рдВрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛рдирд╛, etcd рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рджреНрд╡рд╛рд░реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреЗрд▓реЗ рдЬрд╛рддреЗ - рдореНрд╣рдгрдЬреЗ. рдпрд╛ рдиреЛрдбрд╡рд░ рдЪрд╛рд▓рдгрд╛рд▒реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдбрдЪреНрдпрд╛ рд╡рд┐рдирдВрддреА рдХреЗрд▓реЗрд▓реНрдпрд╛/рдорд░реНрдпрд╛рджрд╛ рд╕рдВрд╕рд╛рдзрдирд╛рдЪреНрдпрд╛ рд░рдХрдореЗрд╕рд╛рдареА, рдкрд░рдВрддреБ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрд╕рд╛рдзрдирд╛рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рдирд╛рд╣реА. рдХрдорд╛рдВрдб рдЖрдЙрдЯрдкреБрдЯрд╡рд░реВрди рд╣реА рдорд╛рд╣рд┐рддреА рдорд┐рд│реВ рд╢рдХрддреЗ kubectl describe node $NODE, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:

# kubectl describe nodes nxs-k8s-s1
..
Non-terminated Pods:         (9 in total)
  Namespace                  Name                                         CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
  ---------                  ----                                         ------------  ----------  ---------------  -------------  ---
  ingress-nginx              nginx-ingress-controller-754b85bf44-qkt2t    0 (0%)        0 (0%)      0 (0%)           0 (0%)         233d
  kube-system                kube-flannel-26bl4                           150m (0%)     300m (1%)   64M (0%)         500M (1%)      233d
  kube-system                kube-proxy-exporter-cb629                    0 (0%)        0 (0%)      0 (0%)           0 (0%)         233d
  kube-system                kube-proxy-x9fsc                             0 (0%)        0 (0%)      0 (0%)           0 (0%)         233d
  kube-system                nginx-proxy-k8s-worker-s1                    25m (0%)      300m (1%)   32M (0%)         512M (1%)      233d
  nxs-monitoring             alertmanager-main-1                          100m (0%)     100m (0%)   425Mi (1%)       25Mi (0%)      233d
  nxs-logging                filebeat-lmsmp                               100m (0%)     0 (0%)      100Mi (0%)       200Mi (0%)     233d
  nxs-monitoring             node-exporter-v4gdq                          112m (0%)     122m (0%)   200Mi (0%)       220Mi (0%)     233d
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests           Limits
  --------           --------           ------
  cpu                487m (3%)          822m (5%)
  memory             15856217600 (2%)  749976320 (3%)
  ephemeral-storage  0 (0%)             0 (0%)

рдпреЗрдереЗ рдЖрдкрдг рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЛрдбрд╡рд░ рдЪрд╛рд▓рдгрд╛рд░реЗ рд╕рд░реНрд╡ рдкреЙрдб рддрд╕реЗрдЪ рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдбрдЪреА рд╡рд┐рдирдВрддреА рдХрд░рдгрд╛рд░реА рд╕рдВрд╕рд╛рдзрдиреЗ рдкрд╛рд╣рддреЛ. рдЖрдгрд┐ рдХреНрд░реЛрдирдЬреЙрдм-рдХреНрд░реЙрди-рдЗрд╡реНрд╣реЗрдВрдЯреНрд╕-1573793820-xt6q9 рдкреЙрдб рд▓рд╛рдБрдЪ рдЭрд╛рд▓реНрдпрд╛рд╡рд░ рд╢реЗрдбреНрдпреВрд▓рд░ рд▓реЙрдЧ рдХрд╕реЗ рджрд┐рд╕рддрд╛рдд рддреЗ рдпреЗрдереЗ рдЖрд╣реЗ (рдЬреНрдпрд╛рд╡реЗрд│реА рддреБрдореНрд╣реА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХрдорд╛рдВрдб рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ -v=10 рдордзреНрдпреЗ 10рд╡реА рд▓реЙрдЧрд┐рдВрдЧ рдкрд╛рддрд│реА рд╕реЗрдЯ рдХрд░рддрд╛ рддреЗрд╡реНрд╣рд╛ рд╣реА рдорд╛рд╣рд┐рддреА рд╢реЗрдбреНрдпреВрд▓рд░ рд▓реЙрдЧрдордзреНрдпреЗ рджрд┐рд╕реВрди рдпреЗрдИрд▓):

рд▓реЙрдЧ

I1115 07:57:21.637791       1 scheduling_queue.go:908] About to try and schedule pod nxs-stage/cronjob-cron-events-1573793820-xt6q9                                                                                                                                           
I1115 07:57:21.637804       1 scheduler.go:453] Attempting to schedule pod: nxs-stage/cronjob-cron-events-1573793820-xt6q9                                                                                                                                                    
I1115 07:57:21.638285       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s5 is allowed, Node is running only 16 out of 110 Pods.                                                                               
I1115 07:57:21.638300       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s6 is allowed, Node is running only 20 out of 110 Pods.                                                                               
I1115 07:57:21.638322       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s3 is allowed, Node is running only 20 out of 110 Pods.                                                                               
I1115 07:57:21.638322       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s4 is allowed, Node is running only 17 out of 110 Pods.                                                                               
I1115 07:57:21.638334       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s10 is allowed, Node is running only 16 out of 110 Pods.                                                                              
I1115 07:57:21.638365       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s12 is allowed, Node is running only 9 out of 110 Pods.                                                                               
I1115 07:57:21.638334       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s11 is allowed, Node is running only 11 out of 110 Pods.                                                                              
I1115 07:57:21.638385       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s1 is allowed, Node is running only 19 out of 110 Pods.                                                                               
I1115 07:57:21.638402       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s2 is allowed, Node is running only 21 out of 110 Pods.                                                                               
I1115 07:57:21.638383       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s9 is allowed, Node is running only 16 out of 110 Pods.                                                                               
I1115 07:57:21.638335       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s8 is allowed, Node is running only 18 out of 110 Pods.                                                                               
I1115 07:57:21.638408       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s13 is allowed, Node is running only 8 out of 110 Pods.                                                                               
I1115 07:57:21.638478       1 predicates.go:1369] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s10 is allowed, existing pods anti-affinity terms satisfied.                                                                         
I1115 07:57:21.638505       1 predicates.go:1369] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s8 is allowed, existing pods anti-affinity terms satisfied.                                                                          
I1115 07:57:21.638577       1 predicates.go:1369] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s9 is allowed, existing pods anti-affinity terms satisfied.                                                                          
I1115 07:57:21.638583       1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s7 is allowed, Node is running only 25 out of 110 Pods.                                                                               
I1115 07:57:21.638932       1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s10: BalancedResourceAllocation, capacity 39900 millicores 66620178432 memory bytes, total request 2343 millicores 9640186880 memory bytes, score 9        
I1115 07:57:21.638946       1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s10: LeastResourceAllocation, capacity 39900 millicores 66620178432 memory bytes, total request 2343 millicores 9640186880 memory bytes, score 8           
I1115 07:57:21.638961       1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s9: BalancedResourceAllocation, capacity 39900 millicores 66620170240 memory bytes, total request 4107 millicores 11307422720 memory bytes, score 9        
I1115 07:57:21.638971       1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s8: BalancedResourceAllocation, capacity 39900 millicores 66620178432 memory bytes, total request 5847 millicores 24333637120 memory bytes, score 7        
I1115 07:57:21.638975       1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s9: LeastResourceAllocation, capacity 39900 millicores 66620170240 memory bytes, total request 4107 millicores 11307422720 memory bytes, score 8           
I1115 07:57:21.638990       1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s8: LeastResourceAllocation, capacity 39900 millicores 66620178432 memory bytes, total request 5847 millicores 24333637120 memory bytes, score 7           
I1115 07:57:21.639022       1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s10: TaintTolerationPriority, Score: (10)                                                                                                        
I1115 07:57:21.639030       1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s8: TaintTolerationPriority, Score: (10)                                                                                                         
I1115 07:57:21.639034       1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s9: TaintTolerationPriority, Score: (10)                                                                                                         
I1115 07:57:21.639041       1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s10: NodeAffinityPriority, Score: (0)                                                                                                            
I1115 07:57:21.639053       1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s8: NodeAffinityPriority, Score: (0)                                                                                                             
I1115 07:57:21.639059       1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s9: NodeAffinityPriority, Score: (0)                                                                                                             
I1115 07:57:21.639061       1 interpod_affinity.go:237] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s10: InterPodAffinityPriority, Score: (0)                                                                                                                   
I1115 07:57:21.639063       1 selector_spreading.go:146] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s10: SelectorSpreadPriority, Score: (10)                                                                                                                   
I1115 07:57:21.639073       1 interpod_affinity.go:237] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s8: InterPodAffinityPriority, Score: (0)                                                                                                                    
I1115 07:57:21.639077       1 selector_spreading.go:146] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s8: SelectorSpreadPriority, Score: (10)                                                                                                                    
I1115 07:57:21.639085       1 interpod_affinity.go:237] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s9: InterPodAffinityPriority, Score: (0)                                                                                                                    
I1115 07:57:21.639088       1 selector_spreading.go:146] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s9: SelectorSpreadPriority, Score: (10)                                                                                                                    
I1115 07:57:21.639103       1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s10: SelectorSpreadPriority, Score: (10)                                                                                                         
I1115 07:57:21.639109       1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s8: SelectorSpreadPriority, Score: (10)                                                                                                          
I1115 07:57:21.639114       1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s9: SelectorSpreadPriority, Score: (10)                                                                                                          
I1115 07:57:21.639127       1 generic_scheduler.go:781] Host nxs-k8s-s10 => Score 100037                                                                                                                                                                            
I1115 07:57:21.639150       1 generic_scheduler.go:781] Host nxs-k8s-s8 => Score 100034                                                                                                                                                                             
I1115 07:57:21.639154       1 generic_scheduler.go:781] Host nxs-k8s-s9 => Score 100037                                                                                                                                                                             
I1115 07:57:21.639267       1 scheduler_binder.go:269] AssumePodVolumes for pod "nxs-stage/cronjob-cron-events-1573793820-xt6q9", node "nxs-k8s-s10"                                                                                                               
I1115 07:57:21.639286       1 scheduler_binder.go:279] AssumePodVolumes for pod "nxs-stage/cronjob-cron-events-1573793820-xt6q9", node "nxs-k8s-s10": all PVCs bound and nothing to do                                                                             
I1115 07:57:21.639333       1 factory.go:733] Attempting to bind cronjob-cron-events-1573793820-xt6q9 to nxs-k8s-s10

рдпреЗрдереЗ рдЖрдкрдг рдкрд╛рд╣рддреЛ рдХреА рд╢реЗрдбреНрдпреБрд▓рд░ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдлрд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рдЖрдгрд┐ 3 рдиреЛрдбреНрд╕рдЪреА рд╕реВрдЪреА рддрдпрд╛рд░ рдХрд░рддреЗ рдЬреНрдпрд╛рд╡рд░ рддреЗ рд▓реЙрдиреНрдЪ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ (nxs-k8s-s8, nxs-k8s-s9, nxs-k8s-s10). рдордЧ рддреЗ рд╕рд░реНрд╡рд╛рдд рдпреЛрдЧреНрдп рдиреЛрдб рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдбрд╕рд╛рдареА рдЕрдиреЗрдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЧреБрдгрд╛рдВрдЪреА рдЧрдгрдирд╛ рдХрд░рддреЗ (рд╕рдВрддреБрд▓рд┐рдд рд╕рдВрд╕рд╛рдзрди рдЖрд╡рдВрдЯрди, LeastResourceAllocation рд╕рд╣). рд╢реЗрд╡рдЯреА, рдкреЙрдб рд╕рд░реНрд╡рд╛рдзрд┐рдХ рдкреЙрдЗрдВрдЯреНрд╕рд╕рд╣ рдиреЛрдбрд╡рд░ рд╢реЗрдбреНрдпреВрд▓ рдХреЗрд▓реЗ рдЬрд╛рддреЗ (рдпреЗрдереЗ рджреЛрди рдиреЛрдбреНрд╕рдордзреНрдпреЗ рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╕рдорд╛рди рдмрд┐рдВрджреВ 100037 рдЕрд╕рддрд╛рдд, рдореНрд╣рдгреВрди рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдПрдХ рдирд┐рд╡рдбрд▓рд╛ рдЬрд╛рддреЛ - nxs-k8s-s10).

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

рдкреЙрдб рдЪреНрдпрд╛ рдмреЗрджрдЦрд▓

рддреБрдореНрд╣рд╛рд▓рд╛ рдорд╛рд╣рд┐рддреА рдЖрд╣реЗ рдХреА, рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдбрд▓рд╛ 3 QoS рд╡рд░реНрдЧрд╛рдВрдкреИрдХреА рдПрдХ рдирд┐рдпреБрдХреНрдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ:

  1. рд╣рдореА рдЬреЗрд╡реНрд╣рд╛ рдкреЙрдбрдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рдореЗрдорд░реА рдЖрдгрд┐ рд╕реАрдкреАрдпреВрд╕рд╛рдареА рд╡рд┐рдирдВрддреА рдЖрдгрд┐ рдорд░реНрдпрд╛рджрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реА рдЬрд╛рддреЗ рддреЗрд╡реНрд╣рд╛ рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рд╣реА рдореВрд▓реНрдпреЗ рдЬреБрд│рд▓реА рдкрд╛рд╣рд┐рдЬреЗрдд
  2. рдлреБрдЯрдгреНрдпрд╛рдпреЛрдЧреНрдп тАФ рдкреЙрдбрдордзреАрд▓ рдХрдореАрдд рдХрдореА рдПрдХрд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рд╡рд┐рдирдВрддреА рдЖрдгрд┐ рдорд░реНрдпрд╛рджрд╛ рдЕрд╕рддреЗ, рд╡рд┐рдирдВрддреА < рдорд░реНрдпрд╛рджрд╛
  3. рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдпрддреНрди - рдЬреЗрд╡реНрд╣рд╛ рдкреЙрдбрдордзреАрд▓ рдПрдХрд╣реА рдХрдВрдЯреЗрдирд░ рд╕рдВрд╕рд╛рдзрди рдорд░реНрдпрд╛рджрд┐рдд рдирд╕рддреЛ

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

  • рд╣рдореА:-998
  • рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдпрддреНрди: 1000
  • рдлреБрдЯрдгреНрдпрд╛рдпреЛрдЧреНрдп: рдХрд┐рдорд╛рди(рдХрдорд╛рд▓(2, 1000 - (1000 * memoryRequestBytes) / machineMemoryCapacityBytes), 999)

рддреНрдпрд╛. рддреНрдпрд╛рдЪ рдкреНрд░рд╛рдзрд╛рдиреНрдпрд╛рдиреЗ, рдХреБрдмреЗрд▓реЗрдЯ рдиреЛрдбрдордзреВрди рд╕рд░реНрд╡реЛрддреНрдХреГрд╖реНрдЯ рдкреНрд░рдпрддреНрди QoS рд╡рд░реНрдЧрд╛рд╕рд╣ рдкреНрд░рдердо рдкреЙрдбреНрд╕ рдмрд╛рд╣реЗрд░ рдХрд╛рдвреЗрд▓.

рдирд┐рд╖реНрдХрд░реНрд╖: рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЗрдЪреНрдЫрд┐рдд рдкреЙрдб рдиреЛрдбрдордзреВрди рдмрд╛рд╣реЗрд░ рдХрд╛рдврдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдХрдореА рдХрд░рд╛рдпрдЪреА рдЕрд╕реЗрд▓ рддрд░ рддреНрдпрд╛рд╡рд░ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪреНрдпрд╛ рдХрдорддрд░рддреЗрдЪреНрдпрд╛ рдкреНрд░рд╕рдВрдЧреА, рдкреНрд░рд╛рдзрд╛рдиреНрдпрд╛рд╕рд╣, рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рдирдВрддреА/рдорд░реНрдпрд╛рджрд╛ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рджреЗрдЦреАрд▓ рдХрд╛рд│рдЬреА рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдкреЙрдбреНрд╕ (HPA) рдЪреНрдпрд╛ рдХреНрд╖реИрддрд┐рдЬ рдСрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧрд╕рд╛рдареА рдпрдВрддреНрд░рдгрд╛

рдЬреЗрд╡реНрд╣рд╛ рдХрд╛рд░реНрдп рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдкреЙрдбреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рд╡рд╛рдврд╡рдгреЗ рдЖрдгрд┐ рдХрдореА рдХрд░рдгреЗ (рд╕рд┐рд╕реНрдЯрдо - CPU/RAM рдХрд┐рдВрд╡рд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ - rps) рдЕрд╕рддреЗ, рддреЗрд╡реНрд╣рд╛ k8s рдШрдЯрдХ рдПрдЪрдкреАрдП (рдХреНрд╖реИрддрд┐рдЬ рдкреЙрдб рдСрдЯреЛрд╕реНрдХреЗрд▓рд░). рдЬреНрдпрд╛рдЪрд╛ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдЖрд╣реЗ.

  1. рдирд┐рд░реАрдХреНрд╖рдг рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рдВрд╕рд╛рдзрдирд╛рдЪреЗ рд╡рд░реНрддрдорд╛рди рд╡рд╛рдЪрди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ (рд╡рд░реНрддрдорд╛рдирдореЗрдЯреНрд░рд┐рдХ рд╡реНрд╣реЕрд▓реНрдпреВ)
  2. рд╕рдВрд╕рд╛рдзрдирд╛рд╕рд╛рдареА рдЗрдЪреНрдЫрд┐рдд рдореВрд▓реНрдпреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗрд▓реА рдЬрд╛рддрд╛рдд (desiredMetricValue), рдЬреА рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдирд╛рдВрд╕рд╛рдареА рд╡рд┐рдирдВрддреА рд╡рд╛рдкрд░реВрди рд╕реЗрдЯ рдХреЗрд▓реА рдЬрд╛рддрд╛рдд
  3. рдкреНрд░рддрд┐рдХреГрддреАрдВрдЪреА рд╡рд░реНрддрдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ (рд╡рд░реНрддрдорд╛рди рдкреНрд░рддрд┐рдХреГрддреА)
  4. рдЦрд╛рд▓реАрд▓ рд╕реВрддреНрд░ рдкреНрд░рддрд┐рдХреГрддреАрдВрдЪреНрдпрд╛ рдЗрдЪреНрдЫрд┐рдд рд╕рдВрдЦреНрдпреЗрдЪреА рдЧрдгрдирд╛ рдХрд░рддреЗ (рдЗрдЪреНрдЫрд┐рдд рдкреНрд░рддрд┐рдХреГрддреА)
    desiredReplicas = [ currentReplicas * (currentMetricValue / desiredMetricValue)]

рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЧреБрдгрд╛рдВрдХ (currentMetricValue / desiredMetricValue) 1 рдЪреНрдпрд╛ рдЬрд╡рд│ рдЕрд╕рддрд╛рдирд╛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА (рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдореНрд╣реА рд╕реНрд╡рддрдГ рдкрд░рд╡рд╛рдирдЧреАрдпреЛрдЧреНрдп рддреНрд░реБрдЯреА рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддреЛ; рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рддреЗ 0.1 рдЖрд╣реЗ).

рдНрдк-рдЯреЗрд╕реНрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреЗ (рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдореНрд╣рдгреВрди рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реЗ) рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдкрд░реВрди рдПрдЪрдкреАрдП рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рддреЗ рдкрд╛рд╣реВ рдпрд╛, рдЬреЗрдереЗ CPU рд╡рд╛рдкрд░рд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдкреНрд░рддрд┐рдХреГрддреАрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

  • рдЕрд░реНрдЬ рдореЕрдирд┐рдлреЗрд╕реНрдЯ

    kind: Deployment
    apiVersion: apps/v1beta2
    metadata:
    name: app-test
    spec:
    selector:
    matchLabels:
    app: app-test
    replicas: 2
    template:
    metadata:
    labels:
    app: app-test
    spec:
    containers:
    - name: nginx
    image: registry.nixys.ru/generic-images/nginx
    imagePullPolicy: Always
    resources:
    requests:
    cpu: 60m
    ports:
    - name: http
    containerPort: 80
    - name: nginx-exporter
    image: nginx/nginx-prometheus-exporter
    resources:
    requests:
    cpu: 30m
    ports:
    - name: nginx-exporter
    containerPort: 9113
    args:
    - -nginx.scrape-uri
    - http://127.0.0.1:80/nginx-status

    рддреНрдпрд╛. рдЖрдореНрд╣реА рдкрд╛рд╣рддреЛ рдХреА рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдкреЙрдб рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рджреЛрди рдЙрджрд╛рд╣рд░рдгрд╛рдВрдордзреНрдпреЗ рд▓реЙрдиреНрдЪ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рддреНрдпрд╛рдкреИрдХреА рдкреНрд░рддреНрдпреЗрдХрд╛рдордзреНрдпреЗ рджреЛрди nginx рдЖрдгрд┐ nginx-рдирд┐рд░реНрдпрд╛рддрдХ рдХрдВрдЯреЗрдирд░ рдЖрд╣реЗрдд, рдЬреНрдпрд╛рдкреИрдХреА рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рдирдВрддреНрдпрд╛ CPU рд╕рд╛рдареА.

  • HPA рдЬрд╛рд╣реАрд░рдирд╛рдорд╛

    apiVersion: autoscaling/v2beta2
    kind: HorizontalPodAutoscaler
    metadata:
    name: app-test-hpa
    spec:
    maxReplicas: 10
    minReplicas: 2
    scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: app-test
    metrics:
    - type: Resource
    resource:
    name: cpu
    target:
    type: Utilization
    averageUtilization: 30

    рддреНрдпрд╛. рдЖрдореНрд╣реА рдПрдХ рдПрдЪрдкреАрдП рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗ рдЬреЗ рдЙрдкрдпреЛрдЬрди рдЕреЕрдк-рдЪрд╛рдЪрдгреАрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрд▓ рдЖрдгрд┐ рд╕реАрдкреАрдпреВ рдирд┐рд░реНрджреЗрд╢рдХрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╣ рдкреЙрдбреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрд▓ (рдЖрдореНрд╣реА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЛ рдХреА рдкреЙрдбрдиреЗ рд╡рд┐рдирдВрддреА рдХреЗрд▓реЗрд▓реНрдпрд╛ CPU рдкреИрдХреА 30% рд╡рд╛рдкрд░рд╛рд╡реЗ), рдкреНрд░рддрд┐рдХреГрддреАрдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╕рд╣ 2-10 рдЪреА рд╢реНрд░реЗрдгреА.

    рдЖрддрд╛, рдЖрдкрдг рдПрдЦрд╛рджреНрдпрд╛ рдЪреВрд▓реАрд╡рд░ рднрд╛рд░ рд▓рд╛рд╡рд▓реНрдпрд╛рд╕ рдПрдЪрдкреАрдП рдСрдкрд░реЗрд╢рдирдЪреА рдпрдВрддреНрд░рдгрд╛ рдкрд╛рд╣реВ:

     # kubectl top pod
    NAME                                                   CPU(cores)   MEMORY(bytes)
    app-test-78559f8f44-pgs58            101m         243Mi
    app-test-78559f8f44-cj4jz            4m           240Mi

рдПрдХреВрдг рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рдЖрд╣реЗрдд:

  • рдЗрдЪреНрдЫрд┐рдд рдореВрд▓реНрдп (desiredMetricValue) - рдПрдЪрдкреАрдП рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдиреБрд╕рд╛рд░, рдЖрдордЪреНрдпрд╛рдХрдбреЗ 30% рдЖрд╣реЗ
  • рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп (currentMetricValue) - рдЧрдгрдиреЗрд╕рд╛рдареА, рдирд┐рдпрдВрддреНрд░рдХ-рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ % рдордзреНрдпреЗ рд╕рдВрд╕рд╛рдзрди рд╡рд╛рдкрд░рд╛рдЪреНрдпрд╛ рд╕рд░рд╛рд╕рд░реА рдореВрд▓реНрдпрд╛рдЪреА рдЧрдгрдирд╛ рдХрд░рддреЛ, рдореНрд╣рдгрдЬреЗ рд╕рд╢рд░реНрдд рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рдХрд░рддрд╛рдд:
    1. рдореЗрдЯреНрд░рд┐рдХ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реВрди рдкреЙрдб рдореЗрдЯреНрд░рд┐рдХреНрд╕рдЪреА рдкрд░рд┐рдкреВрд░реНрдг рдореВрд▓реНрдпреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ, рдЙрджрд╛. 101 рдореА рдЖрдгрд┐ 4 рдореА
    2. рд╕рд░рд╛рд╕рд░реА рдирд┐рд░рдкреЗрдХреНрд╖ рдореВрд▓реНрдпрд╛рдЪреА рдЧрдгрдирд╛ рдХрд░рддреЗ, рдЙрджрд╛. (101 рдореА + 4 рдореА) / 2 = 53 рдореА
    3. рдЗрдЪреНрдЫрд┐рдд рд╕рдВрд╕рд╛рдзрдирд╛рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рдкрд░рд┐рдкреВрд░реНрдг рдореВрд▓реНрдп рдорд┐рд│рддреЗ (рдпрд╛рд╕рд╛рдареА, рд╕рд░реНрд╡ рдХрдВрдЯреЗрдирд░рдЪреНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рдПрдХрддреНрд░рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд) 60m + 30m = 90m
    4. рд╡рд┐рдирдВрддреА рдкреЙрдбрд╢реА рд╕рдВрдмрдВрдзрд┐рдд CPU рд╡рд╛рдкрд░рд╛рдЪреНрдпрд╛ рд╕рд░рд╛рд╕рд░реА рдЯрдХреНрдХреЗрд╡рд╛рд░реАрдЪреА рдЧрдгрдирд╛ рдХрд░рддреЗ, рдЙрджрд╛. 53 рдореА / 90 рдореА * 100% = 59%

рдЖрддрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рддрд┐рдХреГрддреАрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓рд╛рдпрдЪреА рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдордЪреНрдпрд╛рдХрдбреЗ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЖрд╣реЗ; рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдЧреБрдгрд╛рдВрдХ рдХрд╛рдврддреЛ:

ratio = 59% / 30% = 1.96

рддреНрдпрд╛. рдкреНрд░рддрд┐рдХреГрддреАрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ ~2 рдкрдЯреАрдиреЗ рд╡рд╛рдврд╡рд▓реА рдкрд╛рд╣рд┐рдЬреЗ рдЖрдгрд┐ рд░рдХреНрдХрдо [2 * 1.96] = 4 рдХреЗрд▓реА рдкрд╛рд╣рд┐рдЬреЗ.

рдирд┐рд╖реНрдХрд░реНрд╖: рдЬрд╕реЗ рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛, рд╣реА рдпрдВрддреНрд░рдгрд╛ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдЕрдЯ рдореНрд╣рдгрдЬреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреЙрдбрдордзреАрд▓ рд╕рд░реНрд╡ рдХрдВрдЯреЗрдирд░рдЪреНрдпрд╛ рд╡рд┐рдирдВрддреАрдЪреА рдЙрдкрд╕реНрдерд┐рддреА.

рдиреЛрдбреНрд╕рдЪреНрдпрд╛ рдХреНрд╖реИрддрд┐рдЬ рдСрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧрд╕рд╛рдареА рдпрдВрддреНрд░рдгрд╛ (рдХреНрд▓рд╕реНрдЯрд░ рдСрдЯреЛрд╕реНрдХреЗрд▓рд░)

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

рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдкреНрд░рджрд╛рддреНрдпрд╛рдХрдбреЗ рд╕рдВрдмрдВрдзрд┐рдд IaaS/PaaS рдЕрд╕рд▓реНрдпрд╛рд╕ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, GKE/GCE, AKS, EKS, рдЗ.), рд╕рд╛рд░рдЦреЗ рд╕рд╛рдзрди рдиреЛрдб рдСрдЯреЛрд╕реНрдХреЗрд▓рд░. рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рдиреЛрдбреНрд╕рдЪреА рдХрдорд╛рд▓ рдЖрдгрд┐ рдХрд┐рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдЖрдгрд┐ рдкреЙрдбреНрд╕рдордзреНрдпреЗ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪреА рдХрдорддрд░рддрд╛ рдЕрд╕рддрд╛рдирд╛ рдиреЛрдбреНрд╕рдЪреА рд╡рд░реНрддрдорд╛рди рд╕рдВрдЦреНрдпрд╛ (рдиреЛрдб рдСрд░реНрдбрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА/рдХрд╛рдврдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ API рд▓рд╛ рдХреЙрд▓ рдХрд░реВрди) рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рд╢реЗрдбреНрдпреВрд▓ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА (рдкреНрд░рд▓рдВрдмрд┐рдд рд╕реНрдерд┐рддреАрдд рдЖрд╣реЗрдд).

рдирд┐рд╖реНрдХрд░реНрд╖: рдиреЛрдбреНрд╕ рдСрдЯреЛрд╕реНрдХреЗрд▓ рдХрд░рдгреНрдпрд╛рдд рд╕рдХреНрд╖рдо рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА, рдкреЙрдб рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рд╡рд┐рдирдВрддреНрдпрд╛ рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реБрди k8s рдиреЛрдбреНрд╕рд╡рд░реАрд▓ рд▓реЛрдбрдЪреЗ рдЕрдЪреВрдХ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реВ рд╢рдХрддреАрд▓ рдЖрдгрд┐ рддреНрдпрд╛рдиреБрд╕рд╛рд░ рдкреБрдвреАрд▓ рдкреЙрдб рд▓рд╛рдБрдЪ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдХреЛрдгрддреАрд╣реА рд╕рдВрд╕рд╛рдзрдиреЗ рдирд╛рд╣реАрдд.

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

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

  1. k8s рдиреЛрдбреНрд╕рдордзреАрд▓ рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд┐рдВрдЧрдЪреНрдпрд╛ рджреГрд╖реНрдЯреАрдиреЗ рд╢реЗрдбреНрдпреБрд▓рд░рдЪреНрдпрд╛ рдЕрдзрд┐рдХ рдЕрдЪреВрдХ рдСрдкрд░реЗрд╢рдирд╕рд╛рдареА
  2. "рдкреЙрдб рдмреЗрджрдЦрд▓" рдШрдЯрдирд╛ рдШрдбрдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА
  3. рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдкреЙрдбреНрд╕ (HPA) рдЪреНрдпрд╛ рдХреНрд╖реИрддрд┐рдЬ рдСрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧрд╕рд╛рдареА
  4. рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддреНрдпрд╛рдВрд╕рд╛рдареА рдиреЛрдбреНрд╕рдЪреНрдпрд╛ рдХреНрд╖реИрддрд┐рдЬ рдСрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧрд╕рд╛рдареА (рдХреНрд▓рд╕реНрдЯрд░ рдСрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧ).

рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░реАрд▓ рдЗрддрд░ рд▓реЗрдЦ рджреЗрдЦреАрд▓ рд╡рд╛рдЪрд╛:

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

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