Kubernetes: рдХрд┐рди рдпреЛ рдкреНрд░рдгрд╛рд▓реА рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕реЗрдЯ рдЕрдк рдЧрд░реНрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ?

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

Kubernetes: рдХрд┐рди рдпреЛ рдкреНрд░рдгрд╛рд▓реА рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕реЗрдЯ рдЕрдк рдЧрд░реНрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ?

рддрдкрд╛рдИрд▓реЗ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдХреБрди рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕реНрд░реЛрддрд╣рд░реВ рдЕрд╡рд╕реНрдерд┐рдд рдЫрдиреН рднрдиреЗрд░ рд╕реБрд░реВ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ - рдпреЛ, рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рд░ RAM рд╣реЛред k8s рдорд╛ рдпреА рд╕реНрд░реЛрдд рдкреНрд░рдХрд╛рд░рд╣рд░реВрд▓рд╛рдИ рдирд┐рдореНрди рдПрдХрд╛рдЗрд╣рд░реВрдорд╛ рдорд╛рдкрди рдЧрд░рд┐рдиреНрдЫ:

  • CPU - рдХреЛрд░ рдорд╛
  • RAM - рдмрд╛рдЗрдЯ рдорд╛

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

рдпреЛ рдмреБрдЭреНрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐ manifest рд▓реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рджреБрдмреИ рдкреНрд░рдХрд╛рд░рд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреБрдкрд░реНрджреИрди, рддрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реБрдиреЗрдЫ:

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

рд╕реНрд░реЛрдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд▓рд╛рдИ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд╕реНрддрд░рдорд╛ рдорд╛рддреНрд░ рдирднрдИ рдирд┐рдореНрди рдирд┐рдХрд╛рдпрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдирд╛рдорд╕реНрдерд╛рди рд╕реНрддрд░рдорд╛ рдкрдирд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫ:

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

рд╕рдВрд╕рд╛рдзрди рд╕реАрдорд╛рд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдиреЗ manifests рдХреЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдирд┐рдореНрди рдЫрдиреН:

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

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

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

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

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

    рддреАред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд ns рдорд╛ рднрдПрдХрд╛ рд╕рдмреИ рдЕрдиреБрд░реЛрдз рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рдпреЛрдЧрдлрд▓ OP рдХреЛ рд▓рд╛рдЧрд┐ CPU рд░ 300G рдХреЛ рд▓рд╛рдЧрд┐ 1m рднрдиреНрджрд╛ рдмрдвреА рд╣реБрди рд╕рдХреНрджреИрди, рд░ рд╕рдмреИ рд╕реАрдорд╛рдХреЛ рдпреЛрдЧрдлрд▓ CPU рдХреЛ рд▓рд╛рдЧрд┐ 700m рд░ OP рдХреЛ рд▓рд╛рдЧрд┐ 2G рд╣реЛред

  • рдПрдирдПрд╕рдорд╛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реАрдорд╛рд╣рд░реВ:

    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) рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрд░реЛрдз/рд╕реАрдорд╛рдорд╛ рд╕рдореНрднрд╛рд╡рд┐рдд рдорд╛рдирд╣рд░реВрдорд╛ рдкрдирд┐ рд╕реАрдорд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫред

  • рдкреЛрдб-рд╕реНрддрд░ рдкреНрд░рддрд┐рдмрдиреНрдз ns:

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

    рддреАред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдПрдирдПрд╕рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ 4 vCPU рд░ 1G рдХреЛ рд╕реАрдорд╛ рд╣реБрдиреЗрдЫред

рдЕрдм рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдмрддрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рдпреА рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрджрд╛ рд╣рд╛рдореАрд▓рд╛рдИ рдХреЗ рдлрд╛рдЗрджрд╛рд╣рд░реВ рджрд┐рди рд╕рдХреНрдЫрдиреНред

рдиреЛрдбрд╣рд░реВ рдмреАрдЪ рд▓реЛрдб рд╕рдиреНрддреБрд▓рди рд╕рдВрдпрдиреНрддреНрд░

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

  1. рдлрд┐рд▓реНрдЯрд░рд┐рдЩ
  2. рджрд╛рдпрд░рд╛

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

рдпрд╣рд╛рдБ рд╣рд╛рдореА рд╕рдмреИ рдкреЛрдбрд╣рд░реВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЛрдбрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рджреЗрдЦреНрдЫреМрдВ, рд╕рд╛рдереИ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрдб рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреЗ рд╕реНрд░реЛрддрд╣рд░реВред рд░ cronjob-cron-events-1573793820-xt6q9 рдкреЛрдб рд╕реБрд░реБ рд╣реБрдБрджрд╛ рд╢реЗрдбреНрдпреВрд▓рд░ рд▓рдЧрд╣рд░реВ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫрдиреН (рдпреЛ рдЬрд╛рдирдХрд╛рд░реА рд╢реЗрдбреНрдпреВрд▓рд░ рд▓рдЧрдорд╛ рджреЗрдЦрд╛ рдкрд░реНрдиреЗрдЫ рдЬрдм рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХрдорд╛рдгреНрдб рдЖрд░реНрдЧреБрдореЗрдиреНрдЯрд╣рд░реВрдорд╛ 10 рдФрдВ рд▓рдЧрд┐рдЩ рд╕реНрддрд░ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ -v=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)ред рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рд╕рдмреИ рднрдиреНрджрд╛ рдЙрдкрдпреБрдХреНрдд рдиреЛрдб рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдпреА рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдбрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ (BalancedResourceAllocation, LeastResourceAllocation рд╕рд╣рд┐рдд) рдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕реНрдХреЛрд░рд╣рд░реВ рдЧрдгрдирд╛ рдЧрд░реНрджрдЫред рдЕрдиреНрддрддрдГ, рдкреЛрдб рдиреЛрдбрдорд╛ рдЙрдЪреНрдЪрддрдо рдЕрдВрдХрдХреЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдЕрдиреБрд╕реВрдЪрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ (рдпрд╣рд╛рдБ рджреБрдИрд╡рдЯрд╛ рдиреЛрдбрд╣рд░реВрдорд╛ рдПрдХреИ рдкрдЯрдХрдорд╛ рдЙрд╕реНрддреИ рдЕрдВрдХрд╣рд░реВ 100037 рдЫрдиреН, рддреНрдпрд╕реИрд▓реЗ рдЕрдирд┐рдпрдорд┐рдд рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдЫ - nxs-k8s-s10)ред

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

рдкреЛрдбрдХреЛ рдирд┐рд╖реНрдХрд╛рд╕рди

рддрдкрд╛рдИрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ, рдкреНрд░рддреНрдпреЗрдХ рдкреЛрдбрд▓рд╛рдИ 3 QoS рдХрдХреНрд╖рд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рддреЛрдХрд┐рдПрдХреЛ рдЫ:

  1. рдЧреНрдпрд╛рд░реЗрдиреНрдЯреА рдЧрд░рд┐рдПрдХреЛ - рддреЛрдХрд┐рдПрдХреЛ рдЫ рдЬрдм рдкреЛрдбрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐ рдореЗрдореЛрд░реА рд░ рд╕реАрдкреАрдпреВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрд░реЛрдз рд░ рд╕реАрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдиреНрдЫ, рд░ рдпреА рдорд╛рдирд╣рд░реВ рдорд┐рд▓реНрдиреБрдкрд░реНрдЫред
  2. рдлреБрдЯреНрди рдорд┐рд▓реНрдиреЗ - рдкреЛрдбрдорд╛ рдХрдореНрддрд┐рдорд╛ рдПрдЙрдЯрд╛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЕрдиреБрд░реЛрдз рд░ рд╕реАрдорд╛ рд╣реБрдиреНрдЫ, рдЕрдиреБрд░реЛрдз < рд╕реАрдорд╛рд╕рдБрдЧ
  3. рдЙрддреНрддрдо рдкреНрд░рдпрд╛рд╕ - рдЬрдм рдкреЛрдбрдорд╛ рдПрдХрд▓ рдХрдиреНрдЯреЗрдирд░ рд╕рдВрд╕рд╛рдзрди рд╕реАрдорд┐рдд рдЫреИрди

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

  • рдЧреНрдпрд╛рд░реЗрдиреНрдЯреА: -998.режреж
  • рдЙрддреНрддрдо рдкреНрд░рдпрд╛рд╕: 1000
  • рдлреБрдЯреНрди рдорд┐рд▓реНрдиреЗ: рдиреНрдпреВрдирддрдо(рдЕрдзрд┐рдХрддрдо(2, 1000 - (1000 * memoryRequestBytes) / machineMemoryCapacityBytes), 999)

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

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

рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдкреЛрдб (HPA) рдХреЛ рддреЗрд░реНрд╕реЛ рдЕрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдВрдпрдиреНрддреНрд░

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

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

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдЧреБрдгрд╛рдВрдХ (currentMetricValue / desiredMetricValue) 1 рдХреЛ рдирдЬрд┐рдХ рд╣реБрдБрджрд╛ рдорд╛рдкрди рд╣реБрдиреЗ рдЫреИрди (рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореА рдЖрдлреИрд▓реЗ рдЕрдиреБрдорддрд┐рдпреЛрдЧреНрдп рддреНрд░реБрдЯрд┐ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ; рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдпреЛ 0.1 рд╣реЛ)ред

рдПрдк-рдЯреЗрд╕реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╕рди (рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрдХреЛ рд░реВрдкрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ) рдХреЛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ hpa рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рд╣реЗрд░реМрдВ, рдЬрд╣рд╛рдБ 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

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

    рдЕрдм, рдПрдЪрдкреАрдП рдЕрдкрд░реЗрд╢рдирдХреЛ рдореЗрдХрд╛рдирд┐рдЬрдо рд╣реЗрд░реМрдВ рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдЪреВрд▓реНрд╣рд╛ рдордзреНрдпреЗ рдПрдХрдорд╛ рднрд╛рд░ рд▓рд╛рдЧреВ рдЧрд░реНрдЫреМрдВ:

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

рдХреБрд▓рдорд╛ рд╣рд╛рдореАрд╕рдБрдЧ рдирд┐рдореНрди рдЫрдиреН:

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

рдЕрдм рд╣рд╛рдореАрд╕рдБрдЧ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рднрдиреЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╕рдмреИ рдЫ; рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдЧреБрдгрд╛рдВрдХ рдЧрдгрдирд╛ рдЧрд░реНрдЫреМрдВ:

ratio = 59% / 30% = 1.96

рддреАред рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ ~2 рдЧреБрдгрд╛ рд░ рд░рдХрдо [2 * 1.96] = 4 рдорд╛ рдмрдврд╛рдЙрдиреБрдкрд░реНрдЫред

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

рдиреЛрдбрд╣рд░реВрдХреЛ рддреЗрд░реНрд╕реЛ рдЕрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдВрдпрдиреНрддреНрд░ (рдХреНрд▓рд╕реНрдЯрд░ рдЕрдЯреЛрд╕реНрдХреЗрд▓рд░)

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

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

рдирд┐рд╖реНрдХрд░реНрд╖: рдиреЛрдбрд╣рд░реВ рдЕрдЯреЛрд╕реНрдХреЗрд▓ рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐, рдкреЛрдб рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рддрд╛рдХрд┐ k8s рд▓реЗ рдиреЛрдбрд╣рд░реВрдорд╛ рд▓реЛрдбрдХреЛ рд╕рд╣реА рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рд╕рдХреНрдЫ рд░ рддрджрдиреБрд╕рд╛рд░ рдЕрд░реНрдХреЛ рдкреЛрдб рд╕реБрд░реБ рдЧрд░реНрди рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдХреБрдиреИ рд╕реНрд░реЛрддрд╣рд░реВ рдЫреИрдирдиреН рднрдиреА рд░рд┐рдкреЛрд░реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

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

рдпреЛ рдзреНрдпрд╛рди рджрд┐рдиреБрдкрд░реНрдЫ рдХрд┐ рдХрдиреНрдЯреЗрдирд░ рд╕реНрд░реЛрдд рд╕реАрдорд╛рд╣рд░реВ рд╕реЗрдЯрд┐рдЩ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЗрди, рддрд░ рдирд┐рдореНрди рдХрд╛рд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдЕрдЭреИ рд░рд╛рдореНрд░реЛ рдЫ:

  1. k8s рдиреЛрдбрд╣рд░реВ рдмреАрдЪ рд▓реЛрдб рд╕рдиреНрддреБрд▓рдирдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рдЕрдиреБрд╕реВрдЪрдХрдХреЛ рдердк рд╕рдЯреАрдХ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд▓рд╛рдЧрд┐
  2. "рдкреЛрдб рдмреЗрджрдЦрд▓" рдШрдЯрдирд╛ рд╣реБрдиреЗ рд╕рдореНрднрд╛рд╡рдирд╛ рдХрдо рдЧрд░реНрди
  3. рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдкреЛрдбрд╣рд░реВ (HPA) рдХреЛ рддреЗрд░реНрд╕реЛ рдЕрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧрдХреЛ рд▓рд╛рдЧрд┐
  4. рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рдпрдХрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдиреЛрдбрд╣рд░реВ (рдХреНрд▓рд╕реНрдЯрд░ рдЕрдЯреЛрд╕реНрдХреЗрд▓рд┐рдЩреН) рдХреЛ рддреЗрд░реНрд╕реЛ рдЕрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧрдХреЛ рд▓рд╛рдЧрд┐

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдЕрдиреНрдп рд▓реЗрдЦрд╣рд░реВ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

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

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