เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ: เจธเจฟเจธเจŸเจฎ เจธเจฐเฉ‹เจค เจชเฉเจฐเจฌเฉฐเจงเจจ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจเจพ เจ‡เฉฐเจจเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ•เจฟเจ‰เจ‚ เจนเฉˆ?

เจ‡เฉฑเจ• เจจเจฟเจฏเจฎ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, เจ•เจฟเจธเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ‡ เจธเจนเฉ€ เจ…เจคเฉ‡ เจธเจฅเจฟเจฐ เจธเฉฐเจšเจพเจฒเจจ เจฒเจˆ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจฎเจฐเจชเจฟเจค เจชเฉ‚เจฒ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฆเฉ€ เจนเจฎเฉ‡เจธเจผเจพเจ‚ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจชเจฐ เจ‰เจฆเฉ‹เจ‚ เจ•เฉ€ เจœเฉ‡ เจ•เจˆ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจ‡เฉฑเจ•เฉ‹ เจชเจพเจตเจฐ 'เจคเฉ‡ เจšเฉฑเจฒ เจฐเจนเฉ€เจ†เจ‚ เจนเจจ? เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐเฉ‡เจ• เจจเฉ‚เฉฐ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจธเจฐเฉ‹เจค เจ•เจฟเจตเฉ‡เจ‚ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ? เจคเฉเจธเฉ€เจ‚ เจธเจฐเฉ‹เจค เจฆเฉ€ เจ–เจชเจค เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเฉ€เจฎเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹? เจจเฉ‹เจกเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจฒเฉ‹เจก เจจเฉ‚เฉฐ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เจฟเจตเฉ‡เจ‚ เจตเฉฐเจกเจฃเจพ เจนเฉˆ? เจœเฉ‡เจ•เจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเฉ‹เจก เจตเจงเจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจนเจฐเฉ€เจœเฉฑเจŸเจฒ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจฎเจ•เฉˆเจจเจฟเจœเจผเจฎ เจฆเฉ‡ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡?

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ: เจธเจฟเจธเจŸเจฎ เจธเจฐเฉ‹เจค เจชเฉเจฐเจฌเฉฐเจงเจจ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจเจพ เจ‡เฉฐเจจเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ•เจฟเจ‰เจ‚ เจนเฉˆ?

เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ เจ•เจฟ เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจ•เจฟเจนเฉœเฉ‡ เจฎเฉเฉฑเจ– เจ•เจฟเจธเจฎ เจฆเฉ‡ เจธเจฐเฉ‹เจค เจฎเฉŒเจœเฉ‚เจฆ เจนเจจ - เจ‡เจน, เจฌเฉ‡เจธเจผเจ•, เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจธเจฎเจพเจ‚ เจ…เจคเฉ‡ เจฐเฉˆเจฎ เจนเฉˆ. k8s เจตเจฟเฉฑเจš เจ‡เจน เจธเจฐเฉ‹เจค เจ•เจฟเจธเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจ‡เจ•เจพเจˆเจ†เจ‚ เจตเจฟเฉฑเจš เจฎเจพเจชเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ:

  • CPU - เจ•เฉ‹เจฐ เจตเจฟเฉฑเจš
  • RAM - เจฌเจพเจˆเจŸ เจตเจฟเฉฑเจš

เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจนเจฐเฉ‡เจ• เจธเจฐเฉ‹เจค เจฒเจˆ เจฆเฉ‹ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจœเจผเจฐเฉ‚เจฐเจคเจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉˆ - เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ ะธ เจธเฉ€เจฎเจพ. เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ - เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ (เจ…เจคเฉ‡ เจธเจฎเฉเฉฑเจšเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเฉŒเจก) เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจจเฉ‹เจก เจฆเฉ‡ เจฎเฉเจซเจค เจธเจฐเฉ‹เจคเจพเจ‚ เจฒเจˆ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจฒเฉ‹เฉœเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจธเฉ€เจฎเจพเจตเจพเจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฒเจˆ เจ‰เจชเจฒเจฌเจง เจธเจฐเฉ‹เจคเจพเจ‚ 'เจคเฉ‡ เจธเจ–เจผเจค เจธเฉ€เจฎเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจ‡เจน เจธเจฎเจเจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ เจ•เจฟ เจฎเฉˆเจจเฉ€เจซเฉˆเจธเจŸ เจจเฉ‚เฉฐ เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจฆเฉ‹เจตเจพเจ‚ เจ•เจฟเจธเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจตเจฟเจนเจพเจฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพ:

  • เจœเฉ‡เจ•เจฐ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจธเจฐเฉ‹เจค เจฆเฉ€เจ†เจ‚ เจธเฉ€เจฎเจพเจตเจพเจ‚ เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจ, เจคเจพเจ‚ เจ‡เจธ เจธเจฐเฉ‹เจค เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจธเฉ€เจฎเจพเจตเจพเจ‚ เจฆเฉ‡ เจฌเจฐเจพเจฌเจฐ เจฎเฉเฉฑเจฒ เจฒเฉˆเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ (เจคเฉเจธเฉ€เจ‚ เจ‡เจ•เจพเจˆเจ†เจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจ•เฉ‡ เจ‡เจธเจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹)เฅค เจ‰เจน. เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจ‰เจธเฉ‡ เจฎเจพเจคเจฐเจพ เจคเฉฑเจ• เจธเฉ€เจฎเจฟเจค เจนเฉ‹เจตเฉ‡เจ—เจพเฅค
  • เจœเฉ‡เจ•เจฐ เจ•เจฟเจธเฉ‡ เจธเจฐเฉ‹เจค เจฒเจˆ เจธเจฟเจฐเจซเจผ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจนเฉ€ เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจ, เจคเจพเจ‚ เจ‡เจธ เจธเจฐเฉ‹เจค 'เจคเฉ‡ เจ•เฉ‹เจˆ เจ‰เจชเจฐเจฒเฉ€ เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ เจจเจนเฉ€เจ‚ เจนเจจ - เจฏเจพเจจเฉ€. เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจฟเจฐเจซ เจจเฉ‹เจก เจฆเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจนเฉ€ เจธเฉ€เจฎเจฟเจค เจนเฉˆเฅค

เจธเจฐเฉ‹เจค เจชเฉเจฐเจฌเฉฐเจงเจจ เจจเฉ‚เฉฐ เจจเจพ เจธเจฟเจฐเจซเจผ เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉ‡ เจชเฉฑเจงเจฐ 'เจคเฉ‡, เจธเจ—เฉ‹เจ‚ เจจเจฟเจฎเจจเจฒเจฟเจ–เจค เจ‡เจ•เจพเจˆเจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจจเฉ‡เจฎเจธเจชเฉ‡เจธ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจตเฉ€ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉˆ:

  • เจธเฉ€เจฎเจพ เจฐเฉ‡เจ‚เจœ โ€” ns เจตเจฟเฉฑเจš เจ•เฉฐเจŸเฉ‡เจจเจฐ/เจชเฉ‹เจก เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจชเจพเจฌเฉฐเจฆเฉ€ เจจเฉ€เจคเฉ€ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ/เจชเฉ‹เจก 'เจคเฉ‡ เจกเจฟเจซเจพเจฒเจŸ เจธเฉ€เจฎเจพเจตเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจฆเฉ‡ เจจเจพเจฒ-เจจเจพเจฒ เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจšเจฐเจฌเฉ€ เจตเจพเจฒเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚/เจชเฉ‹เจกเจพเจ‚ (เจœเจพเจ‚ เจ‡เจธ เจฆเฉ‡ เจ‰เจฒเจŸ) เจฆเฉ€ เจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃ เจฒเจˆ, เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจจเฉ‚เฉฐ เจธเฉ€เจฎเจค เจ•เจฐเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจธเฉ€เจฎเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจธเฉฐเจญเจพเจตเจฟเจค เจ…เฉฐเจคเจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเฉ‹
  • เจธเจฐเฉ‹เจค เจ•เฉ‹เจŸเจพ - ns เจตเจฟเฉฑเจš เจธเจพเจฐเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฒเจˆ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเจพเจฌเฉฐเจฆเฉ€ เจจเฉ€เจคเฉ€ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจจเจฟเจฏเจฎ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, เจตเจพเจคเจพเจตเจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจš เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉ€เจฎเจค เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ (เจ‰เจฆเฉ‹เจ‚ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจœเจฆเฉ‹เจ‚ เจตเจพเจคเจพเจตเจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจจเฉ‹เจก เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจธเจ–เจคเฉ€ เจจเจพเจฒ เจธเฉ€เจฎเจพเจฌเฉฑเจง เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ)

เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจฎเฉˆเจจเฉ€เจซเฉˆเจธเจŸ เจฆเฉ€เจ†เจ‚ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจนเจจ เจœเฉ‹ เจธเจฐเฉ‹เจค เจธเฉ€เจฎเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉˆเฉฑเจŸ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจ:

  • เจ–เจพเจธ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจชเฉฑเจงเจฐ 'เจคเฉ‡:

    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 เจตเจฟเฉฑเจš เจธเจพเจฐเฉ‡ เจฌเฉ‡เจจเจคเฉ€ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเจพ เจœเฉ‹เฉœ 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) เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€/เจธเฉ€เจฎเจพ เจตเจฟเฉฑเจš เจธเฉฐเจญเจพเจตเจฟเจค เจฎเฉเฉฑเจฒเจพเจ‚ 'เจคเฉ‡ เจตเฉ€ เจ‡เฉฑเจ• เจธเฉ€เจฎเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆเฅค

  • เจชเฉŒเจก-เจชเฉฑเจงเจฐ เจฆเฉ€เจ†เจ‚ เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ 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. เจฐเฉ‡เจ‚เจœเจฟเฉฐเจ—

เจ‰เจน. เจตเจฐเจฃเจฟเจค เจจเฉ€เจคเฉ€ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ, เจจเฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจšเฉเจฃเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเจฟเจธ เจ‰เฉฑเจคเฉ‡ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉŒเจก เจฒเจพเจ‚เจš เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉเฉฐเจฆเจพ เจนเฉˆ predicates (เจ‡เจน เจœเจพเจ‚เจš เจ•เจฐเจจ เจธเจฎเฉ‡เจค เจ•เจฟ เจ•เฉ€ เจจเฉ‹เจก เจ•เฉ‹เจฒ เจชเฉŒเจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจธเจฐเฉ‹เจค เจนเจจ - PodFitsResources), เจ…เจคเฉ‡ เจซเจฟเจฐ เจ‡เจนเจจเจพเจ‚ เจจเฉ‹เจกเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐเฉ‡เจ• เจฒเจˆ, เจ…เจจเฉเจธเจพเจฐ เจคเจฐเจœเฉ€เจนเจพเจ‚ เจชเฉเจ†เจ‡เฉฐเจŸ เจฆเจฟเฉฑเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ (เจธเจฎเฉ‡เจค, เจ‡เฉฑเจ• เจจเฉ‹เจก เจตเจฟเฉฑเจš เจœเจฟเฉฐเจจเฉ‡ เจœเจผเจฟเจ†เจฆเจพ เจฎเฉเจซเจค เจธเจฐเฉ‹เจค เจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจ“เจจเฉ‡ เจนเฉ€ เจœเจผเจฟเจ†เจฆเจพ เจชเฉเจ†เจ‡เฉฐเจŸ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ - LeastResourceAllocation/LeastRequestedPriority/BalancedResourceAllocation) เจ…เจคเฉ‡ เจชเฉŒเจก เจจเฉ‚เฉฐ เจจเฉ‹เจก 'เจคเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจชเฉเจ†เจ‡เฉฐเจŸเจพเจ‚ เจจเจพเจฒ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ (เจœเฉ‡ เจ•เจˆ เจจเฉ‹เจก เจ‡เฉฑเจ• เจตเจพเจฐ เจตเจฟเฉฑเจš เจ‡เจธ เจธเจผเจฐเจค เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจคเจพเจ‚ เจ‡เฉฑเจ• เจฌเฉ‡เจคเจฐเจคเฉ€เจฌ เจšเฉเจฃเจฟเจ† เจ—เจฟเจ† เจนเฉˆ)เฅค

เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจธเจฎเจเจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ เจ•เจฟ เจธเจผเจกเจฟเจŠเจฒเจฐ, เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเฉ‹เจก เจฆเฉ‡ เจ‰เจชเจฒเจฌเจง เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเจพ เจฎเฉเจฒเจพเจ‚เจ•เจฃ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ‰เจธ เจกเฉ‡เจŸเจพ เจฆเฉเจ†เจฐเจพ เจธเฉ‡เจงเจฟเจค เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ etcd เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ - i.e. เจ‡เจธ เจจเฉ‹เจก 'เจคเฉ‡ เจšเฉฑเจฒ เจฐเจนเฉ‡ เจนเจฐเฉ‡เจ• เจชเฉŒเจก เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เฉ€เจคเฉ€/เจธเฉ€เจฎเจพ เจธเจฐเฉ‹เจค เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจฒเจˆ, เจชเจฐ เจ…เจธเจฒ เจธเจฐเฉ‹เจค เจ–เจชเจค เจฒเจˆ เจจเจนเฉ€เจ‚เฅค เจ‡เจน เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ•เจฎเจพเจ‚เจก เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจคเฉ‹เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ 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 เจชเฉŒเจก เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจธเจผเจกเจฟเจŠเจฒเจฐ เจฒเฉŒเจ— เจ•เจฟเจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‡ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจ (เจ‡เจน เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเจผเจกเจฟเจŠเจฒเจฐ เจฒเฉŒเจ— เจตเจฟเฉฑเจš เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เฉ€ เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจธเจŸเจพเจฐเจŸเจ…เฉฑเจช เจ•เจฎเจพเจ‚เจก เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸเจธ -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 เจฒเจˆ (เจธเจฐเฉ‹เจค เจฆเฉ€ เจ–เจชเจค เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚) เจ‡เจน เจ‡เจธ เจฆเฉ‡ เจฌเจฐเจพเจฌเจฐ เจนเฉ‹เจตเฉ‡เจ—เจพ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เจธ เจจเฉ‹เจก 'เจคเฉ‡ เจ…เจœเจฟเจนเฉ‡ เจ•เฉ‹เจˆ เจชเฉŒเจก เจจเจนเฉ€เจ‚ เจธเจจเฅค เจ‡เจธ เจฒเจˆ, เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ, เจธเจผเจฐเจค เจ…เจจเฉเจธเจพเจฐ, เจ‡เฉฑเจ• เจชเฉ‡เจŸเฉ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, wowza) เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจชเฉŒเจก เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ•เฉ‹เจˆ เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจ, เจคเจพเจ‚ เจ…เจœเจฟเจนเฉ€ เจธเจฅเจฟเจคเฉ€ เจชเฉˆเจฆเจพ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจ‡เจน เจชเฉ‹เจก เจ…เจธเจฒ เจตเจฟเฉฑเจš เจจเฉ‹เจก เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจ–เจพ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆ, เจชเจฐ k8s เจฒเจˆ เจ‡เจน เจจเฉ‹เจก. เจจเฉ‚เฉฐ เจ…เจจเจฒเฉ‹เจก เจฎเฉฐเจจเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจจเฉ‹เจก เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจฐเฉˆเจ‚เจ•เจฟเฉฐเจ— (เจ‰เจชเจฒเฉฑเจฌเจง เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเจพ เจฎเฉเจฒเจพเจ‚เจ•เจฃ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจชเฉเจ†เจ‡เฉฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš) เจฆเฉ‡ เจฌเจฐเจพเจฌเจฐ เจ…เฉฐเจ• เจฆเจฟเฉฑเจคเฉ‡ เจœเจพเจฃเจ—เฉ‡, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจชเฉŒเจก เจจเจนเฉ€เจ‚ เจนเจจ, เจœเฉ‹ เจ†เจ–เจฐเจ•เจพเจฐ เจจเฉ‹เจกเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจฒเฉ‹เจก เจฆเฉ€ เจ…เจธเจฎเจพเจจ เจตเฉฐเจก เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจชเฉ‹เจก เจฆเฉ€ เจฌเฉ‡เจฆเจ–เจฒเฉ€

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹, เจนเจฐเฉ‡เจ• เจชเฉŒเจก เจจเฉ‚เฉฐ 3 QoS เจ•เจฒเจพเจธเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ:

  1. เจ—เจพเจฐเฉฐเจŸเฉ€เจธเจผเฉเจฆเจพ โ€” เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจชเฉŒเจก เจตเจฟเฉฑเจš เจนเจฐเฉ‡เจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฒเจˆ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ…เจคเฉ‡ เจธเฉ€เจชเฉ€เจฏเฉ‚ เจฒเจˆ เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€ เจ…เจคเฉ‡ เจธเฉ€เจฎเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจน เจฎเฉเฉฑเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเฉ‡ เจนเฉ‹เจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจ
  2. เจซเจŸเจฃเจฏเฉ‹เจ— - เจชเฉŒเจก เจตเจฟเฉฑเจš เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเฉ€เจฎเจพ เจนเฉˆ, เจฌเฉ‡เจจเจคเฉ€ < เจธเฉ€เจฎเจพ เจฆเฉ‡ เจจเจพเจฒ
  3. เจตเจงเฉ€เจ† เจ•เฉ‹เจธเจผเจฟเจธเจผ - เจœเจฆเฉ‹เจ‚ เจชเฉŒเจก เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเฉ€ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจฐเฉ‹เจค เจธเฉ€เจฎเจค เจจเจนเฉ€เจ‚ เจนเฉˆ

เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเฉ‹เจก เจธเจฐเฉ‹เจคเจพเจ‚ (เจกเจฟเจธเจ•, เจฎเฉˆเจฎเฉ‹เจฐเฉ€) เจฆเฉ€ เจ˜เจพเจŸ เจฆเจพ เจ…เจจเฉเจญเจต เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ•เฉเจฌเฉ‡เจฒเฉ‡เจŸ เจ‡เฉฑเจ• เจ–เจพเจธ เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจชเฉŒเจกเจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉˆเจ‚เจ• เจ…เจคเฉ‡ เจฌเฉ‡เจฆเจ–เจฒ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจชเฉŒเจก เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ QoS เจ•เจฒเจพเจธ เจฆเฉ€ เจคเจฐเจœเฉ€เจน เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ RAM เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ QoS เจ•เจฒเจพเจธ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡, เจชเฉเจ†เจ‡เฉฐเจŸ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจธเจฟเจงเจพเจ‚เจค เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจฆเจฟเฉฑเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ:

  • เจ—เจพเจฐเฉฐเจŸเฉ€เจธเจผเฉเจฆเจพ:-เฉชเฉฆ
  • เจตเจงเฉ€เจ† เจ•เฉ‹เจธเจผเจฟเจธเจผ: 1000
  • เจฌเจฐเจธเจŸเจฌเจฒ: min(เจ…เจงเจฟเจ•เจคเจฎ(2, 1000 - (1000 * memoryRequestBytes) / machineMemoryCapacityBytes), 999)

เจ‰เจน. เจ‰เจธเฉ‡ เจคเจฐเจœเฉ€เจน เจฆเฉ‡ เจจเจพเจฒ, เจ•เฉเจฌเฉ‡เจฒเฉ‡เจŸ เจชเจนเจฟเจฒเจพเจ‚ เจจเฉ‹เจก เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจ•เฉ‹เจธเจผเจฟเจธเจผ QoS เจ•เจฒเจพเจธ เจจเจพเจฒ เจชเฉŒเจกเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจพเจนเจฐ เจ•เฉฑเจขเฉ‡เจ—เจพเฅค

เจธเจฟเฉฑเจŸเจพ: เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจชเฉŒเจก เจจเฉ‚เฉฐ เจ‡เจธ 'เจคเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจ˜เจพเจŸ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจจเฉ‹เจก เจคเฉ‹เจ‚ เจฌเฉ‡เจฆเจ–เจฒ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเจฐเจœเฉ€เจน เจฆเฉ‡ เจจเจพเจฒ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€/เจธเฉ€เจฎเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเจพ เจตเฉ€ เจงเจฟเจ†เจจ เจฐเฉฑเจ–เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจชเฉŒเจกเจœเจผ (HPA) เจฆเฉ€ เจนเจฐเฉ€เจœเฉฑเจŸเจฒ เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจฒเจˆ เจตเจฟเจงเฉ€

เจœเจฆเฉ‹เจ‚ เจ•เฉฐเจฎ เจธเจฐเฉ‹เจคเจพเจ‚ (เจธเจฟเจธเจŸเจฎ - CPU/RAM เจœเจพเจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพ - rps) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจชเฉŒเจกเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจงเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจ˜เจŸเจพเจ‰เจฃเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ k8s เจ‡เจ•เจพเจˆเฅค HPA (เจนเจฐเฉ€เจœเจผเฉˆเจ‚เจŸเจฒ เจชเฉ‹เจก เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฐ)เฅค เจœเจฟเจธ เจฆเจพ เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจ…เจจเฉเจธเจพเจฐ เจนเฉˆ:

  1. เจจเจฟเจฐเฉ€เจ–เจฃ เจ•เฉ€เจคเฉ‡ เจธเจฐเฉ‹เจค เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจฐเฉ€เจกเจฟเฉฐเจ— เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ (เจ•เจฐเฉฐเจŸเจฎเฉˆเจŸเฉเจฐเจฟเจ• เจตเฉˆเจฒเจฏเฉ‚)
  2. เจธเจฐเฉ‹เจค เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจฎเฉเฉฑเจฒ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ (desiredMetricValue), เจœเฉ‹ เจ•เจฟ เจธเจฟเจธเจŸเจฎ เจธเจฐเฉ‹เจคเจพเจ‚ เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉˆเฉฑเจŸ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ
  3. เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเฉฐเจ–เจฟเจ† เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ (เจฎเฉŒเจœเฉ‚เจฆเจพ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚)
  4. เจจเจฟเจฎเจจเจฒเจฟเจ–เจค เจซเจพเจฐเจฎเฉ‚เจฒเจพ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚ (เจ‡เฉฑเจ›เจค เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚) เจฆเฉ€ เจฒเฉ‹เฉœเฉ€เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเจฆเจพ เจนเฉˆ
    desiredReplicas = [ currentReplicas * (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-exporter เจ•เฉฐเจŸเฉ‡เจจเจฐ เจนเจจ, เจœเจฟเจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐเฉ‡เจ• เจฒเจˆ เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจฟเจค เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ 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. เจฎเฉˆเจŸเฉเจฐเจฟเจ• เจธเจฐเจตเจฐ เจคเฉ‹เจ‚ เจชเฉŒเจก เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจฆเฉ‡ เจธเฉฐเจชเฉ‚เจฐเจจ เจฎเฉเฉฑเจฒ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเจพ เจนเฉˆ, i.e. 101 เจฎเฉ€ เจ…เจคเฉ‡ 4 เจฎเฉ€
    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 เจนเฉ‹เจฃเจพ เจ•เจพเจซเจผเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจเจšเจชเฉ€เจ เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจฎเฉˆเจจเฉ‡เจœเจฐ เจตเจฟเฉฑเจš เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ, เจ‡เจน เจซเฉˆเจธเจฒเจพ เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจจเฉ‚เฉฐ 2 เจ—เฉเจฃเจพ เจตเจงเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจชเจฐ เจจเฉ‹เจกเจพเจ‚ เจ•เฉ‹เจฒ เจ…เจœเจฟเจนเฉ‡ เจ•เจˆ เจชเฉŒเจกเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจฎเฉเจซเจค เจธเจฐเฉ‹เจค เจจเจนเฉ€เจ‚ เจนเจจ (เจ…เจฐเจฅเจพเจค เจจเฉ‹เจก เจชเฉเจฐเจฆเจพเจจ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจชเฉŒเจก เจฒเจˆ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เฉ€เจคเฉ€) เจ…เจคเฉ‡ เจ‡เจน เจชเฉŒเจก เจฒเฉฐเจฌเจฟเจค เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค

เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจœเฉ‡เจ•เจฐ เจชเฉเจฐเจฆเจพเจคเจพ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจ…เจจเฉเจธเจพเจฐเฉ€ IaaS/PaaS เจนเฉˆ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, GKE/GCE, AKS, EKS, เจ†เจฆเจฟ), เจ‡เฉฑเจ• เจธเจพเจงเจจ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจจเฉ‹เจก เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฐ. เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจจเฉ‹เจกเจพเจ‚ เจฆเฉ€ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจ…เจคเฉ‡ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเฉฐเจ–เจฟเจ† เจธเฉˆเจŸ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจ…เจคเฉ‡ เจชเฉŒเจกเจพเจ‚ เจตเจฟเฉฑเจš เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจ˜เจพเจŸ เจนเฉ‹เจฃ 'เจคเฉ‡ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเฉฐเจ–เจฟเจ† (เจ‡เฉฑเจ• เจจเฉ‹เจก เจจเฉ‚เฉฐ เจ†เจฐเจกเจฐ/เจนเจŸเจพเจ‰เจฃ เจฒเจˆ เจ•เจฒเจพเจ‰เจก เจชเฉเจฐเจฆเจพเจคเจพ API เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจ•เฉ‡) เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฟเจตเจธเจฅเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจจเจฟเจฏเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ (เจฌเจ•เจพเจ‡เจ† เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจนเจจ)เฅค

เจธเจฟเฉฑเจŸเจพ: เจจเฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃ เจฒเจˆ, เจชเฉŒเจก เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ เจคเจพเจ‚ เจ•เจฟ k8s เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจฒเฉ‹เจก เจฆเจพ เจธเจนเฉ€ เจฎเฉเจฒเจพเจ‚เจ•เจฃ เจ•เจฐ เจธเจ•เจฃ เจ…เจคเฉ‡ เจ‡เจธ เจ…เจจเฉเจธเจพเจฐ เจฐเจฟเจชเฉ‹เจฐเจŸ เจ•เจฐ เจธเจ•เจฃ เจ•เจฟ เจ…เจ—เจฒเฉ€ เจชเฉ‹เจก เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจธเจฐเฉ‹เจค เจจเจนเฉ€เจ‚ เจนเจจเฅค

เจธเจฟเฉฑเจŸเจพ

เจ‡เจน เจจเฉ‹เจŸ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจฐเฉ‹เจค เจธเฉ€เจฎเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ•เจพเจฐเจจเจพเจ‚ เจ•เจฐเจ•เฉ‡ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจเจพ เจ…เจœเฉ‡ เจตเฉ€ เจฌเจฟเจนเจคเจฐ เจนเฉˆ:

  1. k8s เจจเฉ‹เจกเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจฒเฉ‹เจก เจธเฉฐเจคเฉเจฒเจจ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเจผเจกเจฟเจŠเจฒเจฐ เจฆเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจธเจนเฉ€ เจธเฉฐเจšเจพเจฒเจจ เจฒเจˆ
  2. "เจชเฉ‹เจก เจฌเฉ‡เจฆเจ–เจฒเฉ€" เจ˜เจŸเจจเจพ เจตเจพเจชเจฐเจจ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฒเจˆ
  3. เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจชเฉŒเจกเจœเจผ (HPA) เจฆเฉ€ เจนเจฐเฉ€เจœเฉฑเจŸเจฒ เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจฒเจˆ
  4. เจ•เจฒเจพเจ‰เจก เจชเฉเจฐเจฆเจพเจคเจพเจตเจพเจ‚ เจฒเจˆ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ€ เจนเจฐเฉ€เจœเฉฑเจŸเจฒ เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— (เจ•เจฒเฉฑเจธเจŸเจฐ เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฟเฉฐเจ—) เจฒเจˆ

เจธเจพเจกเฉ‡ เจฌเจฒเฉŒเจ— 'เจคเฉ‡ เจนเฉ‹เจฐ เจฒเฉ‡เจ– เจตเฉ€ เจชเฉœเฉเจนเฉ‹:

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹