Kubernetes: ื•ื•ืึธืก ืื™ื– ืขืก ืึทื–ื•ื™ ื•ื•ื™ื›ื˜ื™ืง ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืกื™ืกื˜ืขื ืจื™ืกืึธืจืก ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’?

ื•ื•ื™ ืึท ื”ืขืจืฉืŸ, ืขืก ืื™ื– ืฉื˜ืขื ื“ื™ืง ืึท ื ื•ื™ื˜ ืฆื• ืฆื•ืฉื˜ืขืœืŸ ืึท ื“ืขื“ืึทืงื™ื™ื˜ืึทื“ ื‘ืขืงืŸ ืคื•ืŸ ืจืขืกื•ืจืกืŸ ืฆื• ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื–ื™ื™ึทืŸ ืจื™ื›ื˜ื™ืง ืื•ืŸ ืกื˜ืึทื‘ื™ืœ ืึธืคึผืขืจืึทืฆื™ืข. ืึธื‘ืขืจ ื•ื•ืึธืก ืื•ื™ื‘ ืขื˜ืœืขื›ืข ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืœื•ื™ืคืŸ ืื•ื™ืฃ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืžืึทื›ื˜? ื•ื•ื™ ืฆื• ืฆื•ืฉื˜ืขืœืŸ ื™ืขื“ืขืจ ืคื•ืŸ ื–ื™ื™ ื“ื™ ืžื™ื ื™ืžื•ื ื ื™ื™ื˜ื™ืง ืจืขืกื•ืจืกืŸ? ื•ื•ื™ ืงืขื ืขืŸ ืื™ืจ ื‘ืึทื’ืจืขื ืขืฆืŸ ืžื™ื˜ืœ ืงืึทื ืกืึทืžืฉืึทืŸ? ื•ื•ื™ ืฆื• ืจื™ื›ื˜ื™ืง ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ ื“ื™ ืžืึทืกืข ืฆื•ื•ื™ืฉืŸ ื ืึธื•ื“ื–? ื•ื•ื™ ืฆื• ืขื ืฉื•ืจ ืึทื– ื“ื™ ื”ืึธืจื™ื–ืึธื ื˜ืึทืœ ืกืงื™ื™ืœื™ื ื’ ืžืขืงืึทื ื™ื–ืึทื ืึทืจื‘ืขื˜ ืื•ื™ื‘ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžืึทืกืข ื™ื ืงืจื™ืกื™ื–?

Kubernetes: ื•ื•ืึธืก ืื™ื– ืขืก ืึทื–ื•ื™ ื•ื•ื™ื›ื˜ื™ืง ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืกื™ืกื˜ืขื ืจื™ืกืึธืจืก ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’?

ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜ ื•ื•ืึธืก ื”ื•ื™ืคึผื˜ ื˜ื™ื™ืคึผืก ืคื•ืŸ ืจืขืกื•ืจืกืŸ ืขืงืกื™ืกื˜ื™ืจืŸ ืื™ืŸ ื“ื™ ืกื™ืกื˜ืขื - ื“ืึธืก, ืคื•ืŸ ืงื•ืจืก, ืื™ื– ืคึผืจืึทืกืขืกืขืจ ืฆื™ื™ื˜ ืื•ืŸ ื‘ืึทืจืึทืŸ. ืื™ืŸ ืง8ืก ืžืึทื ืึทืคืขืกื˜ื™ื– ื“ื™ ืžื™ื˜ืœ ื˜ื™ื™ืคึผืก ื–ืขื ืขืŸ ื’ืขืžืืกื˜ืŸ ืื™ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื•ื ื™ืฅ:

  • ืงืคึผื• - ืื™ืŸ ืงืึธืจืขืก
  • ื‘ืึทืจืึทืŸ - ืื™ืŸ ื‘ื™ื˜ืขืก

ื“ืขืจืฆื•, ืคึฟืึทืจ ื™ืขื“ืขืจ ืžื™ื˜ืœ ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ืฉื˜ืขืœืŸ ืฆื•ื•ื™ื™ ื˜ื™ื™ืคึผืก ืคื•ืŸ ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ - requests ะธ ืœื™ืžืึทืฅ. ืจื™ืงื•ื•ืขืก - ื‘ืืฉืจื™ื™ื‘ื˜ ื“ื™ ืžื™ื ื™ืžื•ื ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ ืคึฟืึทืจ ืคืจื™ื™ ืจืขืกื•ืจืกืŸ ืคื•ืŸ ืึท ื ืึธื“ืข ืฆื• ืœื•ื™ืคืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ (ืื•ืŸ ืคึผืึธื“ ื•ื•ื™ ืึท ื’ืึทื ืฅ), ื‘ืฉืขืช ืœื™ืžืึทืฅ ืฉื˜ืขืœืŸ ืึท ืฉื•ื•ืขืจ ืฉื™ืขื•ืจ ืื•ื™ืฃ ื“ื™ ืจืขืกื•ืจืกืŸ ื‘ื ื™ืžืฆื ืฆื• ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ.

ืขืก ืื™ื– ื•ื•ื™ื›ื˜ื™ืง ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืึทื– ื“ื™ ืžืึทื ืึทืคืขืกื˜ื™ื™ืฉืึทืŸ ื˜ื•ื˜ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืฆื• ื‘ืคื™ืจื•ืฉ ื“ืขืคื™ื ื™ืจืŸ ื‘ื™ื™ื“ืข ื˜ื™ื™ืคึผืก, ืึธื‘ืขืจ ื“ื™ ื ืึทื˜ื•ืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื•ื•ื™ ื’ื™ื™ื˜:

  • ืื•ื™ื‘ ื‘ืœื•ื™ื– ื“ื™ ืœื™ืžืึทืฅ ืคื•ืŸ ืึท ืžื™ื˜ืœ ื–ืขื ืขืŸ ื‘ืคื™ืจื•ืฉ ืกืคึผืขืกื™ืคื™ืขื“, ืจื™ืงื•ื•ืขืก ืคึฟืึทืจ ื“ืขื ืžื™ื˜ืœ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื ืขืžืขืŸ ืึท ื•ื•ืขืจื˜ ื’ืœื™ื™ึทืš ืฆื• ืœื™ืžืึทืฅ (ืื™ืจ ืงืขื ืขืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ืขื ื“ื•ืจืš ืจื•ืคืŸ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ืขื ื˜ื™ื˜ื™ื–). ื™ืขื ืข. ืื™ืŸ ืคืึทืงื˜, ื“ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœื™ืžื™ื˜ืขื“ ืฆื• ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืจื™ืกืึธืจืกื™ื– ื•ื•ืึธืก ืขืก ื“ืึทืจืฃ ืฆื• ืœื•ื™ืคืŸ.
  • ืื•ื™ื‘ ื‘ืœื•ื™ื– ืจื™ืงื•ื•ืขืก ื–ืขื ืขืŸ ื‘ืคื™ืจื•ืฉ ืกืคึผืขืกื™ืคื™ืขื“ ืคึฟืึทืจ ืึท ืžื™ื˜ืœ, ืงื™ื™ืŸ ืื•ื™ื‘ืขืจืฉื˜ืขืจ ืจื™ืกื˜ืจื™ืงืฉืึทื ื– ื–ืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžื˜ ืื•ื™ืฃ ื“ืขื ืžื™ื˜ืœ - ื“.ื”. ื“ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจ ืื™ื– ืœื™ืžื™ื˜ืขื“ ื‘ืœื•ื™ื– ื“ื•ืจืš ื“ื™ ืจืขืกื•ืจืกืŸ ืคื•ืŸ ื“ื™ ื ืึธื“ืข ื–ื™ืš.

ืขืก ืื™ื– ืื•ื™ืš ืžืขื’ืœืขืš ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ืจื™ืกืึธืจืก ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ื ื™ื˜ ื‘ืœื•ื™ื– ืื•ื™ืฃ ื“ืขืจ ืžื“ืจื’ื” ืคื•ืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืงืึทื ื˜ื™ื™ื ืขืจ, ืึธื‘ืขืจ ืื•ื™ืš ืื•ื™ืฃ ื“ื™ ื ืึทืžืขืกืคึผื™ื™ืก ืžื“ืจื’ื” ื ื™ืฆืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืขื ื˜ื™ื˜ื™ื–:

  • LimitRange - ื‘ืืฉืจื™ื™ื‘ื˜ ื“ื™ ืจื™ืกื˜ืจื™ืงืฉืึทืŸ ืคึผืึธืœื™ื˜ื™ืง ืื•ื™ืฃ ื“ื™ ืงืึทื ื˜ื™ื™ื ืขืจ / ืคึผืึธื“ ืžื“ืจื’ื” ืื™ืŸ ns ืื•ืŸ ืื™ื– ื“ืืจืฃ ืฆื• ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ืœื™ืžืึทืฅ ืื•ื™ืฃ ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ / ืคึผืึธื“, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืฆื• ืคืึทืจืžื™ื™ึทื“ืŸ ื“ื™ ืฉืึทืคื•ื ื’ ืคื•ืŸ ื“ืึธืš ืคืขื˜ ืงืึทื ื˜ื™ื™ื ืขืจื– / ืคึผืึธื“ืก (ืึธื“ืขืจ ื•ื•ื™ืฆืข ื•ื•ืขืจืกืึท), ื‘ืึทื’ืจืขื ืขืฆืŸ ื–ื™ื™ืขืจ ื ื•ืžืขืจ ืื•ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ื“ื™ ืžืขื’ืœืขืš ื—ื™ืœื•ืง ืื™ืŸ ื“ื™ ื•ื•ืึทืœื•ืขืก ืื™ืŸ ืœื™ืžืึทืฅ ืื•ืŸ ืจื™ืงื•ื•ืขืก
  • ืจื™ืกืึธืจืกืงื•ื•ืึธื˜ืึทืก - ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื“ื™ ืจื™ืกื˜ืจื™ืงืฉืึทืŸ ืคึผืึธืœื™ื˜ื™ืง ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ ืคึฟืึทืจ ืึทืœืข ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ืŸ ns ืื•ืŸ ืื™ื– ื’ืขื ื™ืฆื˜, ื•ื•ื™ ืึท ื”ืขืจืฉืŸ, ืฆื• ื“ืขืœื™ืžื™ื˜ื™ืจืŸ ืจืขืกื•ืจืกืŸ ืฆื•ื•ื™ืฉืŸ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ (ื ื•ืฆื™ืง ื•ื•ืขืŸ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ ื–ืขื ืขืŸ ื ื™ืฉื˜ ืฉื˜ืจืขื ื’ ื“ืขืžืึทืจืงื™ื™ื˜ื™ื“ ืื•ื™ืฃ ื“ื™ ื ืึธื“ืข ืžื“ืจื’ื”)

ื“ื™ ืคืืœื’ืขื ื“ืข ื–ืขื ืขืŸ ื‘ื™ื™ืฉืคื™ืœืŸ ืคื•ืŸ ืžืึทื ืึทืคืขืกื˜ื™ื™ืฉืึทื ื– ื•ื•ืึธืก ืฉื˜ืขืœืŸ ืžื™ื˜ืœ ืœื™ืžืึทืฅ:

  • ืื•ื™ืฃ ื“ืขืจ ืกืคึผืขืฆื™ืคื™ืฉ ืงืึทื ื˜ื™ื™ื ืขืจ ืžื“ืจื’ื”:

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

    ื™ืขื ืข. ืื™ืŸ ื“ืขื ืคืึทืœ, ืฆื• ืœื•ื™ืคืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ ืžื™ื˜ nginx, ืื™ืจ ื•ื•ืขื˜ ื“ืึทืจืคึฟืŸ ื‘ื™ื™ึท ืžื™ื ื“ืกื˜ืขืจ 1 ื’ ืคื•ืŸ ืคืจื™ื™ ื‘ืึทืจืึทืŸ ืื•ืŸ 0.2 ืงืคึผื• ืื•ื™ืฃ ื“ื™ ื ืึธื“ืข, ื‘ืฉืขืช ื“ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจ ืงืขื ืขืŸ ืคืึทืจื ื•ืฆืŸ 0.2 ืงืคึผื• ืื•ืŸ ืึทืœืข ื‘ื ื™ืžืฆื ื‘ืึทืจืึทืŸ ืื•ื™ืฃ ื“ื™ ื ืึธื“ืข.

  • ืื•ื™ืฃ ื“ื™ ื’ืึทื ืฅ ื ื•ืžืขืจ ืžื“ืจื’ื” ns:

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

    ื™ืขื ืข. ื“ื™ ืกืึทื›ืึทืงืœ ืคื•ืŸ ืึทืœืข ื‘ืขื˜ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ns ืงืขื ืขืŸ ื ื™ืฉื˜ ื™ืงืกื™ื“ 300m ืคึฟืึทืจ ื“ื™ ืงืคึผื• ืื•ืŸ 1G ืคึฟืึทืจ ื“ื™ OP, ืื•ืŸ ื“ื™ ืกืึทื›ืึทืงืœ ืคื•ืŸ ืึทืœืข ืฉื™ืขื•ืจ ืื™ื– 700m ืคึฟืึทืจ ื“ื™ ืงืคึผื• ืื•ืŸ 2G ืคึฟืึทืจ ื“ื™ OP.

  • ืคืขืœื™ืงื™ื™ึทื˜ ืœื™ืžืึทืฅ ืคึฟืึทืจ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ืŸ 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

    ื™ืขื ืข. ืื™ืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ื ืึทืžืขืกืคึผืึทืกืข ืคึฟืึทืจ ืึทืœืข ืงืึทื ื˜ื™ื™ื ืขืจื–, ื“ื™ ื‘ืขื˜ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืึทืฉื˜ื™ืžื˜ ืฆื• 100 ื ืคึฟืึทืจ ืงืคึผื• ืื•ืŸ 1 ื’ ืคึฟืึทืจ OP, ืฉื™ืขื•ืจ - 1 ืงืคึผื• ืื•ืŸ 2 ื’. ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืึท ืฉื™ืขื•ืจ ืื™ื– ืื•ื™ืš ื‘ืึทืฉื˜ื™ืžื˜ ืื•ื™ืฃ ื“ื™ ืžืขื’ืœืขืš ื•ื•ืึทืœื•ืขืก ืื™ืŸ ื‘ืขื˜ืŸ / ืฉื™ืขื•ืจ ืคึฟืึทืจ ืงืคึผื• (50 ื < ืจืขื ื˜ื’ืขื  < 2) ืื•ืŸ ื‘ืึทืจืึทืŸ (500 ื < ืจืขื ื˜ื’ืขื  < 4 ื’).

  • ืคึผืึธื“-ืžื“ืจื’ื” ืจื™ืกื˜ืจื™ืงืฉืึทื ื– ns:

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

    ื™ืขื ืข. ืคึฟืึทืจ ื™ืขื“ืขืจ ืคึผืึธื“ ืื™ืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ns ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึท ืฉื™ืขื•ืจ ืคื•ืŸ 4 ื•ื•ืงืคึผื• ืื•ืŸ 1 ื’.

ืื™ืฆื˜ ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ื–ืึธื’ืŸ ืื™ืจ ื•ื•ืึธืก ืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ื“ื™ ืจื™ืกื˜ืจื™ืงืฉืึทื ื– ืงืขื ืขืŸ ื’ืขื‘ืŸ ืื•ื ื“ื–.

ืžืึทืกืข ื‘ืึทืœืึทื ืกื™ื ื’ ืžืขืงืึทื ื™ื–ืึทื ืฆื•ื•ื™ืฉืŸ ื ืึธื•ื“ื–

ื•ื•ื™ ืื™ืจ ื•ื•ื™ืกืŸ, ื“ื™ k8s ืงืึธืžืคึผืึธื ืขื ื˜ ืื™ื– ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ื“ื™ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืคื•ืŸ ืคึผืึธื“ืก ืฆื•ื•ื™ืฉืŸ ื ืึธื•ื“ื–, ืึทื–ืึท ื•ื•ื™ scheduler, ื•ื•ืึธืก ืึทืจื‘ืขื˜ ืœื•ื™ื˜ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืึทืœื’ืขืจื™ื“ืึทื. ื“ืขืจ ืึทืœื’ืขืจื™ื“ืึทื ื’ื™ื™ื˜ ื“ื•ืจืš ืฆื•ื•ื™ื™ ืกื˜ืึทื’ืขืก ื•ื•ืขืŸ ืกืขืœื™ื ื’ ื“ื™ ืึธืคึผื˜ื™ืžืึทืœ ื ืึธื“ืข ืฆื• ืงืึทื˜ืขืจ:

  1. ืคื™ืœื˜ืจื™ื™ืฉืึทืŸ
  2. ืจื™ื™ื ื“ื–ืฉื™ื ื’

ื™ืขื ืข. ืœื•ื™ื˜ ื“ื™ ื“ื™ืกืงืจื™ื™ื‘ื“ ืคึผืึธืœื™ื˜ื™ืง, ื ืึธื•ื“ื– ื–ืขื ืขืŸ ื˜ื›ื™ืœืขืก ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ืื•ื™ืฃ ื•ื•ืึธืก ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ืงืึทื˜ืขืจ ืึท ืคึผืึธื“ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืึท ื’ืึทื ื’ ืคึผืจืขื“ื™ืงืึทื˜ืขืก (ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืฆื™ ื“ื™ ื ืึธื“ืข ื”ืื˜ ื’ืขื ื•ื’ ืจืขืกื•ืจืกืŸ ืฆื• ืœื•ื™ืคืŸ ื“ื™ ืคึผืึธื“ - PodFitsResources), ืื•ืŸ ื“ืขืจื ืึธืš ืคึฟืึทืจ ื™ืขื“ืขืจ ืคื•ืŸ ื“ื™ ื ืึธื•ื“ื–, ืœื•ื™ื˜ ืฆื• ืคึผืจื™ื™ืึธืจืึทื˜ื™ื– ื•ื•ื™ื™ื–ื˜ ื–ืขื ืขืŸ ืึทื•ื•ืึธืจื“ื™ื“ (ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜, ื“ื™ ืžืขืจ ืคืจื™ื™ ืจืขืกื•ืจืกืŸ ืึท ื ืึธื“ืข ื”ืื˜, ื“ื™ ืžืขืจ ื•ื•ื™ื™ื–ื˜ ืขืก ืื™ื– ืึทืกื™ื™ื ื“ - LeastResourceAllocation/LeastRequestedPriority/BalancedResourceAllocation) ืื•ืŸ ื“ื™ ืคึผืึธื“ ืื™ื– ืœืึธื ื˜ืฉื˜ ืื•ื™ืฃ ื“ื™ ื ืึธื“ืข ืžื™ื˜ ื“ื™ ืžืขืจืกื˜ ืคื•ื ืงื˜ืŸ (ืื•ื™ื‘ ืขื˜ืœืขื›ืข ื ืึธื•ื“ื– ื‘ืึทืคืจื™ื“ื™ืงืŸ ื“ืขื ืฆื•ืฉื˜ืึทื ื“ ืื™ืŸ ืึทืžืึธืœ, ื“ืขืžืึธืœื˜ ืึท ื˜ืจืึทืค - ืื™ื– ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ).

ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืึทื– ื“ื™ ืกืงืขื“ื–ืฉื•ืœืขืจ, ื•ื•ืขืŸ ืึทืกืกืขืกืก ื“ื™ ื‘ื ื™ืžืฆื ืจืขืกื•ืจืกืŸ ืคื•ืŸ ืึท ื ืึธื“ืข, ืื™ื– ื’ื™ื™ื“ื™ื“ ื“ื•ืจืš ื“ื™ ื“ืึทื˜ืŸ ืกื˜ืึธืจื“ ืื™ืŸ ืขื˜ืง - ื“.ื”. ืคึฟืึทืจ ื“ื™ ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ื’ืขื‘ืขื˜ืŸ / ืฉื™ืขื•ืจ ืžื™ื˜ืœ ืคื•ืŸ ื™ืขื“ืขืจ ืคึผืึธื“ ืคืœื™ืกื ื“ื™ืง ืื•ื™ืฃ ื“ืขื ื ืึธื“ืข, ืึธื‘ืขืจ ื ื™ืฉื˜ ืคึฟืึทืจ ื“ื™ ืคืึทืงื˜ื™ืฉ ืžื™ื˜ืœ ืงืึทื ืกืึทืžืฉืึทืŸ. ื“ื™ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืืงื•ืžืขืŸ ืคื•ืŸ ื“ื™ ื‘ืึทืคึฟืขืœ ืจืขื–ื•ืœื˜ืึทื˜ 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) ืื•ืŸ ืงื™ื™ืŸ ืจื™ืกื˜ืจื™ืงืฉืึทื ื– ื–ืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžื˜ ืคึฟืึทืจ ืขืก, ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืึท ืกื™ื˜ื•ืึทืฆื™ืข ื•ื•ืขืŸ ื“ืขืจ ืคึผืึธื“ ืึทืงืฉืœื™ ื’ืขื’ืขืกืŸ ืึทืœืข ื“ื™ ืจืขืกื•ืจืกืŸ ืคื•ืŸ ื“ื™ ื ืึธื“ืข, ืึธื‘ืขืจ ืคึฟืึทืจ ืง8ืก ื“ืขื ื ืึธื“ืข. ืื™ื– ื’ืขืจืขื›ื ื˜ ื•ื•ื™ ืึทื ืœืึธื•ื“ืึทื“ ืื•ืŸ ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึทื•ื•ืึธืจื“ื™ื“ ื“ื™ ื–ืขืœื‘ืข ื ื•ืžืขืจ ืคื•ืŸ ืคื•ื ืงื˜ืŸ ื•ื•ืขืŸ ื“ื™ ืจืึทื ื’ (ื“ื•ื•ืงื ืื™ืŸ ื•ื•ื™ื™ื–ื˜ ืึทืกืกืขืกืกื™ื ื’ ื“ื™ ื‘ื ื™ืžืฆื ืจืขืกื•ืจืกืŸ) ื•ื•ื™ ืึท ื ืึธื“ืข ื•ื•ืึธืก ื˜ื•ื˜ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืืจื‘ืขื˜ืŸ ืคึผืึธื“ืก, ื•ื•ืึธืก ืœืขืกืึธืฃ ืงืขื ืขืŸ ืคื™ืจืŸ ืฆื• ืึทื ื™ื•ื•ืึทืŸ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืคื•ืŸ ื“ื™ ืžืึทืกืข ืฆื•ื•ื™ืฉืŸ ื ืึธื•ื“ื–.

ืคึผืึธื“ ืก ื™ื•ื•ื™ืงืฉืึทืŸ

ื•ื•ื™ ืื™ืจ ื•ื•ื™ืกืŸ, ื™ืขื“ืขืจ ืคึผืึธื“ ืื™ื– ืึทืกื™ื™ื ื“ ืื™ื™ื ืขืจ ืคื•ืŸ 3 QoS ืงืœืืกืŸ:

  1. ื’ืขืจืึทื ื˜ื™ื“ - ืื™ื– ืึทืกื™ื™ื ื“ ื•ื•ืขืŸ ืคึฟืึทืจ ื™ืขื“ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจ ืื™ืŸ ื“ื™ ืคึผืึธื“ ืึท ื‘ืงืฉื” ืื•ืŸ ืœื™ืžื™ื˜ ื–ืขื ืขืŸ ืกืคึผืขืกื™ืคื™ืขื“ ืคึฟืึทืจ ื–ื›ึผืจื•ืŸ ืื•ืŸ ืงืคึผื•, ืื•ืŸ ื“ื™ ื•ื•ืึทืœื•ืขืก ืžื•ื–ืŸ ื’ืœื™ื™ึทื›ืŸ
  2. ื‘ื•ืจืกื˜ืึทื‘ืœืข - ืื™ืŸ ืžื™ื ื“ืกื˜ืขืจ ืื™ื™ืŸ ืงืึทื ื˜ื™ื™ื ืขืจ ืื™ืŸ ื“ื™ ืคึผืึธื“ ื”ืื˜ ืึท ื‘ืงืฉื” ืื•ืŸ ืึท ืฉื™ืขื•ืจ, ืžื™ื˜ ื‘ืขื˜ืŸ <ืœื™ืžื™ื˜
  3. ื‘ืขืกื˜ืขืจ ืžื™ - ื•ื•ืขืŸ ืงื™ื™ืŸ ืื™ื™ืŸ ืงืึทื ื˜ื™ื™ื ืขืจ ืื™ืŸ ื“ื™ ืคึผืึธื“ ืื™ื– ืœื™ืžื™ื˜ืขื“ ืžื™ื˜ ืึท ืžื™ื˜ืœ

ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ื•ื•ืขืŸ ืึท ื ืึธื“ืข ื™ืงืกืคึผื™ืจื™ืึทื ืกื™ื– ืึท ืคืขืœืŸ ืคื•ืŸ ืจืขืกื•ืจืกืŸ (ื“ื™ืกืง, ื–ื›ึผืจื•ืŸ), ืงื•ื‘ืขืœืขื˜ ื”ื™ื™ื‘ื˜ ืฆื• ืจื™ื™ ืื•ืŸ ื™ื•ื•ื™ืงื˜ ืคึผืึธื“ืก ืœื•ื™ื˜ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืึทืœื’ืขืจื™ื“ืึทื ื•ื•ืึธืก ื ืขืžื˜ ืื™ืŸ ื—ืฉื‘ื•ืŸ ื“ื™ ื‘ื™ืœื›ืขืจืงื™ื™ึทื˜ ืคื•ืŸ ื“ื™ ืคึผืึธื“ ืื•ืŸ ื–ื™ื™ึทืŸ QoS ืงืœืึทืก. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ืžื™ืจ ื–ืขื ืขืŸ ื’ืขืจืขื“ื˜ ื•ื•ืขื’ืŸ ื‘ืึทืจืึทืŸ, ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ QoS ืงืœืึทืก, ื•ื•ื™ื™ื–ื˜ ื–ืขื ืขืŸ ืึทื•ื•ืึธืจื“ื™ื“ ืœื•ื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืคึผืจื™ื ืฆื™ืคึผ:

  • ื’ื•ืึทืจืึทื ื˜ืขืขื“:-998
  • BestEffort: ืงืกื ื•ืžืงืก
  • ื‘ื•ืจืกื˜ืึทื‘ืœืข: ืžื™ืŸ (ืžืึทืงืก (2, 1000 - (1000 * ื–ื›ึผืจื•ืŸ ืจืขืงื•ื•ืขืกื˜ื‘ื™ื˜ืขืก) / ืžืึทืฉื™ืŸ ืžืขืžืึธืจื™ ืงืึทืคึผืึทืกื™ื˜ื™ ื‘ื™ื™ื˜ืขืก), 999)

ื™ืขื ืข. ืžื™ื˜ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื‘ื™ืœื›ืขืจืงื™ื™ึทื˜, ื“ื™ ืงื•ื‘ืขืœืขื˜ ื•ื•ืขื˜ ืขืจืฉื˜ืขืจ ื™ื•ื•ื™ืงื˜ ืคึผืึธื“ืก ืžื™ื˜ ื“ื™ ื‘ืขืกื˜ืขืจ ืžื™ QoS ืงืœืึทืก ืคื•ืŸ ื“ื™ ื ืึธื“ืข.

ืจืขื–ื•ืœื˜ืึทื˜: ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ืœื™ืงืขืœื™ื”ืึธืึธื“ ืึทื– ื“ื™ ื’ืขื‘ืขื˜ืŸ ืคึผืึธื“ ืื™ื– ื™ื•ื•ื™ืงื˜ื™ื“ ืคื•ืŸ ื“ื™ ื ืึธื“ืข ืื™ืŸ ืคืึทืœ ืคื•ืŸ ืึท ืคืขืœืŸ ืคื•ืŸ ืจืขืกื•ืจืกืŸ ืื•ื™ืฃ ืขืก, ืฆื•ื–ืึทืžืขืŸ ืžื™ื˜ ื“ื™ ื‘ื™ืœื›ืขืจืงื™ื™ึทื˜, ืื™ืจ ืื•ื™ืš ื“ืึทืจืคึฟืŸ ืฆื• ื ืขืžืขืŸ ืงืขื™ืจ ืคื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ื™ ื‘ืขื˜ืŸ / ืฉื™ืขื•ืจ ืคึฟืึทืจ ืขืก.

ืžืขืงืึทื ื™ื–ืึทื ืคึฟืึทืจ ื”ืึธืจื™ื–ืึธื ื˜ืึทืœ ืึทื•ื˜ืึธืกืงืึทืœื™ื ื’ ืคื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึผืึธื“ืก (HPA)

ื•ื•ืขืŸ ื“ื™ ืึทืจื‘ืขื˜ ืื™ื– ืฆื• ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืคืึทืจื’ืจืขืกืขืจืŸ ืื•ืŸ ืคืึทืจืžื™ื ืขืจืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืคึผืึธื“ืก ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืจืขืกื•ืจืกืŸ (ืกื™ืกื˜ืขื - ืงืคึผื• / ื‘ืึทืจืึทืŸ ืึธื“ืขืจ ื‘ืึทื ื™ืฆืขืจ - ืจืคึผืก), ืึทื–ืึท ืึท ืง8ืก ืขื ื˜ื™ื˜ื™ ื•ื•ื™ HPA (ื”ืึธืจื™ื–ืึธื ื˜ืึทืœ ืคึผืึธื“ ืึทื•ื˜ืึธืกืงืึทืœืขืจ). ื“ื™ ืึทืœื’ืขืจื™ื“ืึทื ืคื•ืŸ ื•ื•ืึธืก ืื™ื– ื•ื•ื™ ื’ื™ื™ื˜:

  1. ื“ื™ ืงืจืึทื ื˜ ืจื™ื“ื™ื ื’ื– ืคื•ืŸ ื“ื™ ื‘ืืžืขืจืงื˜ ืžื™ื˜ืœ ื–ืขื ืขืŸ ื‘ืืฉืœืืกืŸ (currentMetricValue)
  2. ื“ื™ ื’ืขื‘ืขื˜ืŸ ื•ื•ืึทืœื•ืขืก ืคึฟืึทืจ ื“ื™ ืžื™ื˜ืœ ื–ืขื ืขืŸ ื‘ืืฉืœืืกืŸ (ื“ืขืกื™ืจืขื“ืžืขื˜ืจื™ืงื•ื•ืึทืœื•ืข), ื•ื•ืึธืก ืคึฟืึทืจ ืกื™ืกื˜ืขื ืจืขืกื•ืจืกืŸ ื–ืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžื˜ ืžื™ื˜ ื‘ืขื˜ืŸ
  3. ื“ื™ ืงืจืึทื ื˜ ื ื•ืžืขืจ ืคื•ืŸ ืจืขืคึผืœืึทืงืึทื– ืื™ื– ื‘ืืฉืœืืกืŸ (CurrentReplicas)
  4. ื“ื™ ืคืืœื’ืขื ื“ืข ืคืึธืจืžื•ืœืข ืงืึทืœืงื™ืึทืœื™ื™ืฅ ื“ื™ ื’ืขื‘ืขื˜ืŸ ื ื•ืžืขืจ ืคื•ืŸ ืจืขืคึผืœืึทืงืึทื– (ื’ืขื•ื•ืืœื˜ ืจืขืคึผืœืึทืงืึทื–)
    wishedReplicas = [ currentReplicas * ( currentMetricValue / wantedMetricValue )]

ืื™ืŸ ื“ืขื ืคืึทืœ, ืกืงื™ื™ืœื™ื ื’ ื•ื•ืขื˜ ื ื™ืฉื˜ ืคึผืึทืกื™ืจืŸ ื•ื•ืขืŸ ื“ื™ ืงืึธื•ืึทืคื™ืฉืึทื ื˜ (currentMetricValue / wantedMetricValue) ืื™ื– ื ืึธืขื ื˜ ืฆื• 1 (ืื™ืŸ ื“ืขื ืคืึทืœ, ืžื™ืจ ืงืขื ืขืŸ ืฉื˜ืขืœืŸ ื“ื™ ืขืจืœื•ื™ื‘ื˜ ื˜ืขื•ืช ื–ื™ืš; ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ืขืก ืื™ื– 0.1).

ืœืึธืžื™ืจ ื–ืขืŸ ื•ื•ื™ hpa ืึทืจื‘ืขื˜ ืžื™ื˜ ื“ืขื ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ื“ื™ ืึทืคึผ-ืคึผืจื•ื‘ื™ืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ (ื“ื™ืกืงืจื™ื™ื‘ื“ ื•ื•ื™ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜), ื•ื•ื• ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืจืขืคึผืœืึทืงืึทื– ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ืงืคึผื• ืงืึทื ืกืึทืžืฉืึทืŸ:

  • ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธืŸ ื‘ืึทืฉื™ื™ึทืžืคึผืขืจืœืขืš

    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-ืขืงืกืคึผืึธืจื˜ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจื–, ืคึฟืึทืจ ื™ืขื“ืขืจ ืคื•ืŸ ื•ื•ืึธืก ืึท ืกืคึผืขืกื™ืคื™ืขื“ requests ืคึฟืึทืจ ืงืคึผื•.

  • 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

ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ ืžื™ืจ ื”ืึธื‘ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข:

  • ื“ืขืจ ื’ืขื•ื•ืืœื˜ ื•ื•ืขืจื˜ (ื“ืขืกื™ืจืขื“ืžืขื˜ืจื™ืงื•ื•ืึทืœื•ืข) - ืœื•ื™ื˜ ื“ื™ ื”ืคึผืึท ืกืขื˜ื˜ื™ื ื’ืก, ืžื™ืจ ื”ืึธื‘ืŸ 30%
  • ืงืจืึทื ื˜ ื•ื•ืขืจื˜ (currentMetricValue) - ืคึฟืึทืจ ื›ืขื–ืฉื‘ืŸ, ืงืึธื ื˜ืจืึธืœืœืขืจ-ืคืึทืจื•ื•ืึทืœื˜ืขืจ ืงืึทืœืงื™ืึทืœื™ื™ืฅ ื“ื™ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ื•ื•ืขืจื˜ ืคื•ืŸ ืžื™ื˜ืœ ืงืึทื ืกืึทืžืฉืึทืŸ ืื™ืŸ %, ื“.ื”. ืงืึทื ื“ื™ืฉืึทื ืึทืœื™ ื˜ื•ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข:
    1. ืจื™ืกื™ื•ื•ื– ืึทื‘ืกืึธืœื•ื˜ ื•ื•ืึทืœื•ืขืก ืคื•ืŸ ืคึผืึธื“ ืžืขื˜ืจื™ืงืก ืคื•ืŸ ื“ื™ ืžืขื˜ืจื™ืง ืกืขืจื•ื•ืขืจ, ื“.ื”. 101 ืขื ืื•ืŸ 4 ืขื
    2. ืงืึทืœืงื™ืึทืœื™ื™ืฅ ื“ื™ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ืึทื‘ืกืึธืœื•ื˜ ื•ื•ืขืจื˜, ื“.ื”. (101ื + 4ื) / 2 = 53ื
    3. ื’ืขืฅ ื“ื™ ืึทื‘ืกืึธืœื•ื˜ ื•ื•ืขืจื˜ ืคึฟืึทืจ ื“ื™ ื’ืขื‘ืขื˜ืŸ ืžื™ื˜ืœ ืงืึทื ืกืึทืžืฉืึทืŸ (ืคึฟืึทืจ ื“ืขื, ื“ื™ ืจื™ืงื•ื•ืขืก ืคื•ืŸ ืึทืœืข ืงืึทื ื˜ื™ื™ื ืขืจื– ื–ืขื ืขืŸ ืกืึทืžื“ ืึทืจื•ื™ืฃ) 60m + 30m = 90m
    4. ืงืึทืœืงื™ืึทืœื™ื™ืฅ ื“ื™ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ืคึผืจืึธืฆืขื ื˜ ืคื•ืŸ ืงืคึผื• ืงืึทื ืกืึทืžืฉืึทืŸ ืงืึธืจืขื•ื• ืฆื• ื“ื™ ื‘ืขื˜ืŸ ืคึผืึธื“, ื™.ืข. 53 ื / 90 ื * 100% = 59%

ืื™ืฆื˜ ืžื™ืจ ื”ืึธื‘ืŸ ืึทืœืฅ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืฉืœื™ืกืŸ ืฆื™ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืจืขืคึผืœืึทืงืึทื–; ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืžื™ืจ ืจืขื›ืขื ืขืŸ ื“ื™ ืงืึธื•ืึทืคื™ืฉืึทื ื˜:

ratio = 59% / 30% = 1.96

ื™ืขื ืข. ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืจืขืคึผืœืึทืงืึทื– ื–ืึธืœ ื–ื™ื™ืŸ ื’ืขื•ื•ืืงืกืŸ ืžื™ื˜ ~ 2 ืžืืœ ืื•ืŸ ืกื•ืžืข ืฆื• [2 * 1.96] = 4.

ืžืกืงื ื: ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ, ืื™ืŸ ืกื“ืจ ืคึฟืึทืจ ื“ืขื ืžืขืงืึทื ื™ื–ืึทื ืฆื• ืึทืจื‘ืขื˜ืŸ, ืึท ื ื•ื™ื˜ื™ืง ืฆื•ืฉื˜ืึทื ื“ ืื™ื– ื“ื™ ื‘ื™ื™ึทื–ื™ื™ึทืŸ ืคื•ืŸ ืจื™ืงื•ื•ืขืก ืคึฟืึทืจ ืึทืœืข ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ืŸ ื“ื™ ื‘ืืžืขืจืงื˜ ืคึผืึทื“.

ืžืขืงืึทื ื™ื–ืึทื ืคึฟืึทืจ ื”ืึธืจื™ื–ืึธื ื˜ืึทืœ ืึทื•ื˜ืึธืกืงืึทืœื™ื ื’ ืคื•ืŸ ื ืึธื•ื“ื– (ืงืœื•ืกื˜ืขืจ ืึทื•ื˜ืึธืกืงืึทืœืขืจ)

ืื™ืŸ ืกื“ืจ ืฆื• ื ื•ื˜ืจืึทืœื™ื™ื– ื“ื™ ื ืขื’ืึทื˜ื™ื•ื• ืคึผืจืึทืœ ืื•ื™ืฃ ื“ื™ ืกื™ืกื˜ืขื ื‘ืขืฉืึทืก ืžืึทืกืข ืกืขืจื“ื–ืฉืึทื–, ืึท ืงืึทื ืคื™ื’ื™ืขืจื“ ื”ืคึผืึท ืื™ื– ื ื™ืฉื˜ ื’ืขื ื•ื’. ืฆื•ื ื‘ื™ื™ืฉืคึผื™ืœ, ืœื•ื™ื˜ ื“ื™ ืกืขื˜ื˜ื™ื ื’ืก ืื™ืŸ ื“ื™ hpa ืงืึธื ื˜ืจืึธืœืœืขืจ ืคืึทืจื•ื•ืึทืœื˜ืขืจ, ืขืก ื“ื™ืกื™ื™ื“ื– ืึทื– ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืจืขืคึผืœืึทืงืึทื– ื“ืึทืจืฃ ื–ื™ื™ืŸ ื’ืขื•ื•ืืงืกืŸ ืžื™ื˜ 2 ืžืืœ, ืึธื‘ืขืจ ื“ื™ ื ืึธื•ื“ื– ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืคืจื™ื™ ืจืขืกื•ืจืกืŸ ืฆื• ืœื•ื™ืคืŸ ืึทื–ืึท ืึท ื ื•ืžืขืจ ืคื•ืŸ ืคึผืึธื“ืก (ื“"ื” ื“ื™ ื ืึธื“ืข ืงืขืŸ ื ื™ืฉื˜ ืฆื•ืฉื˜ืขืœืŸ ื’ืขื‘ืขื˜ืŸ ืจืขืกื•ืจืกืŸ ืฆื• ื“ื™ ืจื™ืงื•ื•ืขืก ืคึผืึธื“) ืื•ืŸ ื“ื™ ืคึผืึธื“ืก ืกื•ื•ื™ื˜ืฉื™ื– ืฆื• ื“ื™ ืคึผืขื ื“ื™ื ื’ ืฉื˜ืึทื˜.

ืื™ืŸ ื“ืขื ืคืึทืœ, ืื•ื™ื‘ ื“ืขืจ ืฉืคึผื™ื™ึทื–ืขืจ ื”ืื˜ ืึท ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ IaaS / PaaS (ืœืžืฉืœ, GKE / GCE, AKS, EKS, ืขื˜ืง.), ืึท ื’ืขืฆื™ื™ึทื’ ื•ื•ื™ ื ืึธื“ืข ืึทื•ื˜ืึธืกืงืึทืœืขืจ. ืขืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืžืึทืงืกื™ืžื•ื ืื•ืŸ ืžื™ื ื™ืžื•ื ื ื•ืžืขืจ ืคื•ืŸ ื ืึธื•ื“ื– ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ ืื•ืŸ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืกื˜ืจื•ื™ืขืจืŸ ื“ื™ ืงืจืึทื ื˜ ื ื•ืžืขืจ ืคื•ืŸ ื ืึธื•ื“ื– (ื“ื•ืจืš ืจื•ืคืŸ ื“ื™ ื•ื•ืึธืœืงืŸ ืฉืคึผื™ื™ึทื–ืขืจ ืึทืคึผื™ ืฆื• ืกื“ืจ / ืึทืจืึธืคึผื ืขืžืขืŸ ืึท ื ืึธื“ืข) ื•ื•ืขืŸ ืขืก ืื™ื– ืึท ืคืขืœืŸ ืคื•ืŸ ืจืขืกื•ืจืกืŸ ืื™ืŸ ื“ื™ ืงื ื•ื™ืœ ืื•ืŸ ื“ื™ ืคึผืึธื“ืก. ืงืขื ืขืŸ ื ื™ื˜ ื–ื™ื™ืŸ ืกืงืขื“ื–ืฉื•ืœื“ (ื–ืขื ืขืŸ ืื™ืŸ ื“ื™ ืคึผืขื ื“ื™ื ื’ ืฉื˜ืึทื˜).

ืžืกืงื ื: ืฆื• ืงืขื ืขืŸ ืฆื• ืึทื•ื˜ืึธืกืงืึทืœืข ื ืึธื•ื“ื–, ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ืฉื˜ืขืœืŸ ืจื™ืงื•ื•ืขืก ืื™ืŸ ื“ื™ ืคึผืึธื“ ืงืึทื ื˜ื™ื™ื ืขืจื– ืึทื–ื•ื™ ืึทื– ืง8ืก ืงืขื ืขืŸ ืจื™ื›ื˜ื™ืง ืึทืกืกืขืกืก ื“ื™ ืžืึทืกืข ืื•ื™ืฃ ื“ื™ ื ืึธื•ื“ื– ืื•ืŸ ืึทืงืึธืจื“ื™ื ื’ืœื™ ื‘ืึทืจื™ื›ื˜ ืึทื– ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ืจืขืกื•ืจืกืŸ ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ ืฆื• ืงืึทื˜ืขืจ ื“ื™ ื•ื•ื™ื™ึทื˜ืขืจ ืคึผืึธื“.

ืกืึธืฃ

ืขืก ื–ืึธืœ ื–ื™ื™ืŸ ืื ื’ืขื•ื•ื™ื–ืŸ ืึทื– ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืงืึทื ื˜ื™ื™ื ืขืจ ืžื™ื˜ืœ ืœื™ืžืึทืฅ ืื™ื– ื ื™ืฉื˜ ืึท ืคืึธื“ืขืจื•ื ื’ ืคึฟืึทืจ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืฆื• ืœื•ื™ืคืŸ ื”ืฆืœื—ื”, ืึธื‘ืขืจ ืขืก ืื™ื– ื ืึธืš ื‘ืขืกืขืจ ืฆื• ื˜ืึธืŸ ื“ืึธืก ืคึฟืึทืจ ื“ื™ ืคืืœื’ืขื ื“ืข ืกื™ื‘ื•ืช:

  1. ืคึฟืึทืจ ืžืขืจ ืคึผื™ื ื˜ืœืขืš ืึธืคึผืขืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืกืงืขื“ื–ืฉื•ืœืขืจ ืื™ืŸ ื˜ืขืจืžื™ื ืขืŸ ืคื•ืŸ ืžืึทืกืข ื‘ืึทืœืึทื ืกื™ื ื’ ืฆื•ื•ื™ืฉืŸ ืง8 ืก ื ืึธื•ื“ื–
  2. ืฆื• ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ืœื™ืงืขืœื™ื”ืึธืึธื“ ืคื•ืŸ ืึท "ืคึผืึธื“ ื™ื•ื•ื™ืงืฉืึทืŸ" ื’ืขืฉืขืขื ื™ืฉ
  3. ืคึฟืึทืจ ื”ืึธืจื™ื–ืึธื ื˜ืึทืœ ืึทื•ื˜ืึธืกืงืึทืœื™ื ื’ ืคื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึผืึธื“ืก (HPA) ืฆื• ืึทืจื‘ืขื˜ืŸ
  4. ืคึฟืึทืจ ื”ืึธืจื™ื–ืึธื ื˜ืึทืœ ืึทื•ื˜ืึธืกืงืึทืœื™ื ื’ ืคื•ืŸ ื ืึธื•ื“ื– (ืงืœื•ืกื˜ืขืจ ืึทื•ื˜ืึธืกืงืึทืœื™ื ื’) ืคึฟืึทืจ ื•ื•ืึธืœืงืŸ ืคึผืจืึทื•ื•ื™ื™ื“ืขืจื–

ืœื™ื™ืขื ืขืŸ ืื•ื™ืš ืื ื“ืขืจืข ืึทืจื˜ื™ืงืœืขืŸ ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื‘ืœืึธื’:

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’