AWS 'เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเจพเจ‰เจก เจ–เจฐเจšเจฟเจ†เจ‚ 'เจคเฉ‡ เจฌเจšเจค เจ•เจฐเฉ‹

เจฒเฉ‡เจ– เจฆเจพ เจ…เจจเฉเจตเจพเจฆ เจ•เฉ‹เจฐเจธ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจฆเฉ€ เจชเฉ‚เจฐเจต เจธเฉฐเจงเจฟเจ† 'เจคเฉ‡ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ "เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ 'เจคเฉ‡ เจ…เจงเจพเจฐเจค เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเจพ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ".

AWS 'เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเจพเจ‰เจก เจ–เจฐเจšเจฟเจ†เจ‚ 'เจคเฉ‡ เจฌเจšเจค เจ•เจฐเฉ‹

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

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

เจ‡เจน เจฒเฉ‡เจ– เจ•เจตเจฐ เจ•เจฐเฉ‡เจ—เจพ:

  • เจจเจพ เจตเจฐเจคเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจเจพ (เจ•เฉเจฌเฉ‡-เจฆเจฐเจฌเจพเจฐ)
  • เจ—เฉˆเจฐ-เจ•เฉฐเจฎ เจฆเฉ‡ เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจฆเฉŒเจฐเจพเจจ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจ˜เจŸเจพเจ“ (kube-downscaler)
  • เจนเจฐเฉ€เจœเฉ‹เจ‚เจŸเจฒ เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— (HPA) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ,
  • เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจธเจฐเฉ‹เจค เจฐเจฟเจœเจผเจฐเจตเฉ‡เจธเจผเจจ เจฆเฉ€ เจ•เจฎเฉ€ (kube-resource-report, VPA)
  • เจธเจชเฉŒเจŸ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ

เจจเจพ เจตเจฐเจคเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจเจพ

เจ‡เฉฑเจ• เจคเฉ‡เจœเจผ เจฐเจซเจผเจคเจพเจฐ เจตเจพเจฒเฉ‡ เจฎเจพเจนเฉŒเจฒ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจนเฉˆ. เจ…เจธเฉ€เจ‚ เจคเจ•เจจเฉ€เจ•เฉ€ เจธเฉฐเจธเจฅเจพเจตเจพเจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจคเฉ‡เจœเจผ เจ•เฉ€เจคเจพ. เจคเฉ‡เจœเจผ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจกเจฟเจฒเฉ€เจตเจฐเฉ€ เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉ‹เจฐ PR เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚, เจชเฉ‚เจฐเจตเจฆเจฐเจธเจผเจจ เจตเจพเจคเจพเจตเจฐเจฃ, เจชเฉเจฐเฉ‹เจŸเฉ‹เจŸเจพเจˆเจช, เจ…เจคเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจนเฉฑเจฒ เจตเฉ€ เจนเฉˆเฅค เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ 'เจคเฉ‡ เจธเจญ เจ•เฉเจ เจคเฉˆเจจเจพเจค เจนเฉˆเฅค เจ•เจฟเจธ เจ•เฉ‹เจฒ เจŸเฉˆเจธเจŸ เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฅเฉ€เจ‚ เจธเจพเจซเจผ เจ•เจฐเจจ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆ? เจ‡เฉฑเจ• เจนเจซเจผเจคเฉ‡ เจชเฉเจฐเจพเจฃเฉ‡ เจชเฉเจฐเจฏเฉ‹เจ— เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ‰เจฃ เจฌเจพเจฐเฉ‡ เจญเฉเฉฑเจฒเจฃเจพ เจ†เจธเจพเจจ เจนเฉˆเฅค เจ•เจฒเจพเจ‰เจก เจฌเจฟเฉฑเจฒ เจ‰เจธ เจšเฉ€เจœเจผ เจฆเฉ‡ เจ•เจพเจฐเจจ เจตเฉฑเจง เจœเจพเจตเฉ‡เจ—เจพ เจœเจฟเจธ เจจเฉ‚เฉฐ เจ…เจธเฉ€เจ‚ เจฌเฉฐเจฆ เจ•เจฐเจจเจพ เจญเฉเฉฑเจฒ เจ—เจ เจนเจพเจ‚:

AWS 'เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเจพเจ‰เจก เจ–เจฐเจšเจฟเจ†เจ‚ 'เจคเฉ‡ เจฌเจšเจค เจ•เจฐเฉ‹

(เจนเฉ‡เจจเจฟเฉฐเจ— เจœเฉˆเจ•เจฌเจธ:
Zhiza:
(เจนเจตเจพเจฒเฉ‡) เจ•เฉ‹เจฐเฉ€ เจ•เฉเจ‡เจจ:
เจฎเจฟเฉฑเจฅ: เจคเฉเจนเจพเจกเจพ AWS เจ–เจพเจคเจพ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจฆเจพ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจนเฉˆเฅค
เจคเฉฑเจฅ: เจคเฉเจนเจพเจกเจพ AWS เจธเจ•เฉ‹เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจฆเจพ เจ‡เฉฑเจ• เจ•เจพเจฐเจœ เจนเฉˆเฅค

เจ‡เจตเจพเจจ เจ•เฉเจฐเจจเฉ‹เจธเฉ‹เจต (เจœเจตเจพเจฌ เจตเจฟเฉฑเจš):
เจ…เจธเจฒ เจคเฉฑเจฅ: เจคเฉเจนเจพเจกเจพ AWS เจธเจ•เฉ‹เจฐ เจ‰เจนเจจเจพเจ‚ เจšเฉ€เจœเจผเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจฆเจพ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจนเฉˆ เจœเฉ‹ เจคเฉเจธเฉ€เจ‚ เจ…เจฏเฉ‹เจ—/เจฎเจฟเจŸเจพเจ‰เจฃเจพ เจญเฉเฉฑเจฒ เจ—เจ เจนเฉ‹เฅค)

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจœเฉˆเจจเฉ€เจŸเจฐ (kube- janitor) เจคเฉเจนเจพเจกเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฆเจฐเจฌเจพเจจ เจธเฉฐเจฐเจšเจจเจพ เจ—เจฒเฉ‹เจฌเจฒ เจ…เจคเฉ‡ เจธเจฅเจพเจจเจ• เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ เจฒเจšเจ•เจฆเจพเจฐ เจนเฉˆ:

  • เจ•เจฒเฉฑเจธเจŸเจฐ-เจตเจฟเจ†เจชเจ• เจจเจฟเจฏเจฎ PR/เจŸเฉˆเจธเจŸ เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจฒเจˆ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจŸเจพเจˆเจฎ-เจŸเฉ‚-เจฒเจพเจˆเจต (TTL) เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจเฅค
  • เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ janitor/ttl เจจเจพเจฒ เจเจจเฉ‹เจŸเฉ‡เจŸ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ 7 เจฆเจฟเจจเจพเจ‚ เจฌเจพเจ…เจฆ เจธเจชเจพเจˆเจ•/เจชเฉเจฐเฉ‹เจŸเฉ‹เจŸเจพเจˆเจช เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจนเจŸเจพเจ‰เจฃ เจฒเจˆเฅค

เจ†เจฎ เจจเจฟเจฏเจฎ YAML เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจเฅค เจ‡เจธ เจฆเจพ เจฎเจพเจฐเจ— เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฒเฉฐเจ˜เจฆเจพ เจนเฉˆ --rules-file เจ•เฉเจฌเฉ‡-เจฆเจฐเจฌเจพเจฐ เจตเจฟเจšเฅค เจ‡เฉฑเจฅเฉ‡ เจธเจพเจฐเฉ‡ เจจเฉ‡เจฎเจธเจชเฉ‡เจธ เจจเฉ‚เฉฐ เจนเจŸเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจจเจฟเจฏเจฎ เจนเฉˆ -pr- เจฆเฉ‹ เจฆเจฟเจจเจพเจ‚ เจฌเจพเจ…เจฆ เจจเจพเจฎ เจตเจฟเฉฑเจš:

- id: cleanup-resources-from-pull-requests
  resources:
    - namespaces
  jmespath: "contains(metadata.name, '-pr-')"
  ttl: 2d

เจจเจฟเจฎเจจเจฒเจฟเจ–เจค เจ‰เจฆเจพเจนเจฐเจจ 2020 เจตเจฟเฉฑเจš เจธเจพเจฐเฉ€เจ†เจ‚ เจจเจตเฉ€เจ†เจ‚ เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚/เจธเจŸเฉ‡เจŸเจซเฉเจฒเจธเฉˆเฉฑเจŸเจพเจ‚ เจฒเจˆ เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ เจ…เจคเฉ‡ เจธเจŸเฉ‡เจŸเจซเฉเจฒเจธเฉˆเฉฑเจŸ เจชเฉŒเจกเจพเจ‚ 'เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเฉ‡เจฌเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเฉเจฐเจฟเจค เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจชเจฐ เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจ‡เฉฑเจ• เจนเจซเจผเจคเฉ‡ เจฒเจˆ เจ‡เจธ เจฒเฉ‡เจฌเจฒ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจŸเฉˆเจธเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ:

- id: require-application-label
  # ัƒะดะฐะปะธั‚ัŒ deployments ะธ statefulsets ะฑะตะท ะผะตั‚ะบะธ "application"
  resources:
    - deployments
    - statefulsets
  # ัะผ. http://jmespath.org/specification.html
  jmespath: "!(spec.template.metadata.labels.application) && metadata.creationTimestamp > '2020-01-01'"
  ttl: 7d

30 เจฎเจฟเฉฐเจŸเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจธเจฎเจพเจ‚-เจธเฉ€เจฎเจค เจกเฉˆเจฎเฉ‹ เจšเจฒเจพเจ“ เจ‡เฉฑเจ• เจ•เจฒเฉฑเจธเจŸเจฐ เจšเฉฑเจฒ เจฐเจนเฉ‡ เจ•เฉเจฌเฉ‡-เจœเฉˆเจจเฉ€เจŸเจฐ เจ‰เฉฑเจคเฉ‡:

kubectl run nginx-demo --image=nginx
kubectl annotate deploy nginx-demo janitor/ttl=30m

เจตเจงเจฆเฉ€ เจฒเจพเจ—เจค เจฆเจพ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจธเจฐเฉ‹เจค เจธเจฅเจพเจˆ เจตเจพเจฒเฉ€เจ…เจฎ (AWS EBS) เจนเฉˆเฅค เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจธเจŸเฉ‡เจŸเจซเฉเจฒเจธเฉˆเจŸ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ‰เจฃ เจจเจพเจฒ เจ‡เจธ เจฆเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจตเฉŒเจฒเจฏเฉ‚เจฎ (เจชเฉ€เจตเฉ€เจธเฉ€ - เจชเจฐเจธเจฟเจธเจŸเฉˆเจ‚เจŸเจตเฉ‹เจฒเจฏเฉ‚เจฎ เจ•เจฒเฉ‡เจฎ) เจจเจนเฉ€เจ‚ เจฎเจฟเจŸเจฆเฉ‡ เจนเจจเฅค เจ…เจฃเจตเจฐเจคเฉ‡ EBS เจตเจพเจฒเฉ€เจ…เจฎ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจชเฉเจฐเจคเฉ€ เจฎเจนเฉ€เจจเจพ เจธเฉˆเจ‚เจ•เฉœเฉ‡ เจกเจพเจฒเจฐ เจฆเฉ€ เจฒเจพเจ—เจค เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจœเฉˆเจจเฉ€เจŸเจฐ เจ•เฉ‹เจฒ เจจเจพ เจตเจฐเจคเฉ‡ เจ—เจ เจชเฉ€เจตเฉ€เจธเฉ€ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจ เจฆเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เจน เจจเจฟเจฏเจฎ เจ‰เจนเจจเจพเจ‚ เจธเจพเจฐเฉ‡ PVCs เจจเฉ‚เฉฐ เจนเจŸเจพ เจฆเฉ‡เจตเฉ‡เจ—เจพ เจœเฉ‹ เจ‡เฉฑเจ• เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉเจ†เจฐเจพ เจฎเจพเจŠเจ‚เจŸ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ เจ…เจคเฉ‡ เจœเจฟเจนเจจเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจŸเฉ‡เจŸเจซเฉเจฒเจธเฉˆเฉฑเจŸ เจœเจพเจ‚ เจ•เฉเจฐเฉ‹เจจเจœเฉŒเจฌ เจฆเฉเจ†เจฐเจพ เจนเจตเจพเจฒเจพ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ:

# ัƒะดะฐะปะธั‚ัŒ ะฒัะต PVC, ะบะพั‚ะพั€ั‹ะต ะฝะต ัะผะพะฝั‚ะธั€ะพะฒะฐะฝั‹ ะธ ะฝะฐ ะบะพั‚ะพั€ั‹ะต ะฝะต ััั‹ะปะฐัŽั‚ัั StatefulSets
- id: remove-unused-pvcs
  resources:
  - persistentvolumeclaims
  jmespath: "_context.pvc_is_not_mounted && _context.pvc_is_not_referenced"
  ttl: 24h

Kubernetes Janitor เจคเฉเจนเจพเจกเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจฐเฉฑเจ–เจฃ เจ…เจคเฉ‡ เจ•เจฒเจพเจ‰เจก เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจฒเจพเจ—เจคเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉŒเจฒเฉ€ เจนเฉŒเจฒเฉ€ เจตเจงเจฃ เจคเฉ‹เจ‚ เจฐเฉ‹เจ•เจฃ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจกเฉ€ เจฎเจฆเจฆ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจคเฉˆเจจเจพเจคเฉ€ เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ, เจชเจพเจฒเจฃเจพ เจ•เจฐเฉ‹ README เจ•เฉเจฌเฉ‡-เจฆเจฐเจฌเจพเจฐ.

เจ—เฉˆเจฐ-เจ•เฉฐเจฎ เจฆเฉ‡ เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจฆเฉŒเจฐเจพเจจ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ“

เจŸเฉˆเจธเจŸ เจ…เจคเฉ‡ เจธเจŸเฉ‡เจœเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎเจ•เจพเจœเฉ€ เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจฆเฉŒเจฐเจพเจจ เจนเฉ€ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจ•เฉเจ เจ‰เจคเจชเจพเจฆเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฌเฉˆเจ• เจ†เจซเจฟเจธ/เจเจกเจฎเจฟเจจ เจŸเฉ‚เจฒเจธ, เจฒเจˆ เจตเฉ€ เจธเจฟเจฐเจซ เจธเฉ€เจฎเจค เจ‰เจชเจฒเจฌเจงเจคเจพ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจฐเจพเจคเฉ‹-เจฐเจพเจค เจ…เจฏเฉ‹เจ— เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจกเจพเจŠเจจเจธเจ•เฉ‡เจฒเจฐ (kube-downscaler) เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจ†เจชเจฐเฉ‡เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ—เฉˆเจฐ-เจ•เจพเจฐเจœเจธเจผเฉ€เจฒ เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจฆเฉŒเจฐเจพเจจ เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจคเฉˆเจจเจพเจคเฉ€ เจ…เจคเฉ‡ เจธเจŸเฉ‡เจŸเจซเฉเจฒเจธเฉˆเฉฑเจŸ เจœเจผเฉ€เจฐเฉ‹ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚ เจคเฉฑเจ• เจธเจ•เฉ‡เจฒ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจเฅค CronJobs เจจเฉ‚เฉฐ เจฎเฉเจ…เฉฑเจคเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค Kubernetes Downscaler เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ, เจ‡เฉฑเจ• เจœเจพเจ‚ เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจจเฉ‡เจฎเจธเจชเฉ‡เจธเจพเจ‚, เจœเจพเจ‚ เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจธเจฐเฉ‹เจคเจพเจ‚ เจฒเจˆ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจœเจพเจ‚ เจคเจพเจ‚ "เจตเจฟเจนเจฒเจพ เจธเจฎเจพเจ‚" เจœเจพเจ‚ เจ‡เจธเจฆเฉ‡ เจ‰เจฒเจŸ, "เจ•เฉฐเจฎ เจฆเจพ เจธเจฎเจพเจ‚" เจธเฉˆเฉฑเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฐเจพเจคเจพเจ‚ เจ…เจคเฉ‡ เจตเฉ€เจ•เจเจ‚เจก เจฆเฉŒเจฐเจพเจจ เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฒเจˆ:

image: hjacobs/kube-downscaler:20.4.3
args:
  - --interval=30
  # ะฝะต ะพั‚ะบะปัŽั‡ะฐั‚ัŒ ะบะพะผะฟะพะฝะตะฝั‚ั‹ ะธะฝั„ั€ะฐัั‚ั€ัƒะบั‚ัƒั€ั‹
  - --exclude-namespaces=kube-system,infra
  # ะฝะต ะพั‚ะบะปัŽั‡ะฐั‚ัŒ kube-downscaler, ะฐ ั‚ะฐะบะถะต ะพัั‚ะฐะฒะธั‚ัŒ Postgres Operator, ั‡ั‚ะพะฑั‹ ะธัะบะปัŽั‡ะตะฝะฝั‹ะผะธ ะ‘ะ” ะผะพะถะฝะพ ะฑั‹ะปะพ ัƒะฟั€ะฐะฒะปัั‚ัŒ
  - --exclude-deployments=kube-downscaler,postgres-operator
  - --default-uptime=Mon-Fri 08:00-20:00 Europe/Berlin
  - --include-resources=deployments,statefulsets,stacks,cronjobs
  - --deployment-time-annotation=deployment-time

เจ‡เฉฑเจฅเฉ‡ เจตเฉ€เจ•เจเจ‚เจก 'เจคเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฐเจ•เจฐ เจจเฉ‹เจกเจธ เจจเฉ‚เฉฐ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ—เฉเจฐเจพเจซ เจนเฉˆ:

AWS 'เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเจพเจ‰เจก เจ–เจฐเจšเจฟเจ†เจ‚ 'เจคเฉ‡ เจฌเจšเจค เจ•เจฐเฉ‹

~ 13 เจคเฉ‹เจ‚ 4 เจตเจฐเจ•เจฐ เจจเฉ‹เจกเจธ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจจเจพเจฒ เจคเฉเจนเจพเจกเฉ‡ AWS เจฌเจฟเฉฑเจฒ เจตเจฟเฉฑเจš เจจเจฟเจธเจผเจšเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจซเจฐเจ• เจชเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค

เจชเจฐ เจ•เฉ€ เจœเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจ•เจฒเฉฑเจธเจŸเจฐ "เจกเจพเจŠเจจเจŸเจพเจˆเจฎ" เจฆเฉŒเจฐเจพเจจ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ? เจ•เฉเจ เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจˆ เจคเฉŒเจฐ 'เจคเฉ‡ เจกเจพเจŠเจจเจธเจ•เฉ‡เจฒเจฐ/เจเจ•เจธเจ•เจฒเฉ‚เจก: เจธเจนเฉ€ เจเจจเฉ‹เจŸเฉ‡เจธเจผเจจ เจœเฉ‹เฉœ เจ•เฉ‡ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจฐเฉฑเจ–เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ YYYY-MM-DD HH:MM (UTC) เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉ‚เจฐเจจ เจŸเจพเจˆเจฎเจธเจŸเฉˆเจ‚เจช เจฆเฉ‡ เจจเจพเจฒ เจกเจพเจŠเจจเจธเจ•เฉ‡เจฒเจฐ/เจเจ•เจธเจ•เจฒเฉ‚เจก-เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจเจจเฉ‹เจŸเฉ‡เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ…เจธเจฅเจพเจˆ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจพเจนเจฐ เจฐเฉฑเจ–เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡, เจคเจพเจ‚ เจชเฉ‚เจฐเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‚เฉฐ เจเจจเฉ‹เจŸเฉ‡เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจชเฉŒเจก เจฒเจ—เจพ เจ•เฉ‡ เจตเจพเจชเจธ เจธเจ•เฉ‡เจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ downscaler/force-uptime, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, nginx เจ–เจพเจฒเฉ€ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจ•เฉ‡:

kubectl run scale-up --image=nginx
kubectl annotate deploy scale-up janitor/ttl=1h # ัƒะดะฐะปะธั‚ัŒ ั€ะฐะทะฒะตั€ั‚ั‹ะฒะฐะฝะธะต ั‡ะตั€ะตะท ั‡ะฐั
kubectl annotate pod $(kubectl get pod -l run=scale-up -o jsonpath="{.items[0].metadata.name}") downscaler/force-uptime=true

เจตเฉ‡เจ–เฉ‹ README เจ•เจฟเจŠเจฌ-เจกเจพเจŠเจจเจธเจ•เฉ‡เจฒเจฐ, เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจคเฉˆเจจเจพเจคเฉ€ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจ…เจคเฉ‡ เจตเจพเจงเฉ‚ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹เฅค

เจนเจฐเฉ€เจœเฉฑเจŸเจฒ เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹

เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚/เจธเฉ‡เจตเจพเจตเจพเจ‚ เจ‡เฉฑเจ• เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจฒเฉ‹เจกเจฟเฉฐเจ— เจชเฉˆเจŸเจฐเจจ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฆเฉ€เจ†เจ‚ เจนเจจ: เจ•เจˆ เจตเจพเจฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจตเจฟเจนเจฒเฉ‡ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจ•เจˆ เจตเจพเจฐ เจ‰เจน เจชเฉ‚เจฐเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจชเฉ€เจ• เจฒเฉ‹เจก เจจเจพเจฒ เจธเจฟเฉฑเจเจฃ เจฒเจˆ เจชเฉŒเจกเจพเจ‚ เจฆเฉ‡ เจธเจฅเจพเจˆ เจซเจฒเฉ€เจŸ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจ•เจฟเจซเจผเจพเจ‡เจคเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ‡เฉฑเจ• เจธเจฐเฉ‹เจค เจตเจฟเฉฑเจš เจนเจฐเฉ€เจœเฉฑเจŸเจฒ เจ†เจŸเฉ‹-เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆ HorizontalPodAutoscaler (HPA)เฅค CPU เจตเจฐเจคเฉ‹เจ‚ เจ…เจ•เจธเจฐ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจฒเจˆ เจ‡เฉฑเจ• เจšเฉฐเจ—เจพ เจธเฉ‚เจšเจ• เจนเฉเฉฐเจฆเจพ เจนเฉˆ:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  minReplicas: 3
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        averageUtilization: 100
        type: Utilization

เจœเจผเจฒเฉˆเจ‚เจกเฉ‹ เจจเฉ‡ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจฒเจˆ เจ•เจธเจŸเจฎ เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจจเฉ‚เฉฐ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจœเฉ‹เฉœเจจ เจฒเจˆ เจ‡เฉฑเจ• เจญเจพเจ— เจฌเจฃเจพเจ‡เจ† เจนเฉˆ: เจ•เฉเจฌเฉ‡ เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจ…เจกเจพเจชเจŸเจฐ (kube-metrics-adapter) เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฒเจˆ เจ‡เฉฑเจ• เจ†เจฎ เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจ…เจกเจพเจชเจŸเจฐ เจนเฉˆ เจœเฉ‹ เจชเฉŒเจกเจพเจ‚ เจฆเฉ€ เจนเจฐเฉ€เจœเฉฑเจŸเจฒ เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจฒเจˆ เจ•เจธเจŸเจฎ เจ…เจคเฉ‡ เจฌเจพเจนเจฐเฉ€ เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจชเฉเจฐเฉ‹เจฎเฉ€เจฅเฉ€เจ…เจธ เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ, SQS เจ•เจคเจพเจฐเจพเจ‚, เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ†เจชเจฃเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ•เจธเจŸเจฎ เจฎเฉˆเจŸเฉเจฐเจฟเจ• เจคเฉฑเจ• เจธเจ•เฉ‡เจฒ เจ•เจฐเจจ เจฒเจˆ เจœเฉ‹ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉเจ†เจฐเจพ เจ–เฉเจฆ JSON เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš /เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจตเจฐเจคเฉ‹เจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจธเจคเฉเจค เจ•เจฐเจฆเจพ เจนเฉˆ:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
  annotations:
    # metric-config.<metricType>.<metricName>.<collectorName>/<configKey>
    metric-config.pods.requests-per-second.json-path/json-key: "$.http_server.rps"
    metric-config.pods.requests-per-second.json-path/path: /metrics
    metric-config.pods.requests-per-second.json-path/port: "9090"
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Pods
    pods:
      metric:
        name: requests-per-second
      target:
        averageValue: 1k
        type: AverageValue

HPA เจจเจพเจฒ เจนเจฐเฉ€เจœเฉฑเจŸเจฒ เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจจเจพ เจธเจŸเฉ‡เจŸเจฒเฉˆเฉฑเจธ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฒเจˆ เจ•เฉเจธเจผเจฒเจคเจพ เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจกเจฟเจซเฉŒเจฒเจŸ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค Spotify เจ•เฉ‹เจฒ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจคเจœเจผเจฐเจฌเฉ‡ เจ…เจคเฉ‡ HPA เจฒเจˆ เจธเจฟเจซเจผเจพเจฐเจธเจผเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจชเฉ‡เจธเจผเจ•เจพเจฐเฉ€ เจนเฉˆ: เจคเฉเจนเจพเจกเฉ€เจ†เจ‚ เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจ•เฉ‡เจฒ เจ•เจฐเฉ‹, เจคเฉเจนเจพเจกเฉ‡ เจฌเจŸเฉ‚เจ เจจเฉ‚เฉฐ เจจเจนเฉ€เจ‚.

เจธเจฐเฉ‹เจค เจ“เจตเจฐเจฌเฉเจ•เจฟเฉฐเจ— เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ“

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฐเจ•เจฒเฉ‹เจก "เจธเจฐเฉ‹เจค เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚" เจฆเฉเจ†เจฐเจพ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€เจ†เจ‚ CPU/เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฒเฉ‹เฉœเจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเฉ‡ เจนเจจเฅค CPU เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจตเจฐเจšเฉเจ…เจฒ เจ•เฉ‹เจฐ เจตเจฟเฉฑเจš เจœเจพเจ‚ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ "เจฎเจฟเจฒเฉ€เจ•เฉ‹เจฐเจธ" เจตเจฟเฉฑเจš เจฎเจพเจชเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ 500m เจฆเจพ เจฎเจคเจฒเจฌ 50% vCPU เจนเฉˆเฅค เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจพเจˆเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจฎเจพเจชเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ†เจฎ เจชเจฟเจ›เฉ‡เจคเจฐ เจตเจฐเจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ 500Mi, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ 500 เจฎเฉˆเจ—เจพเจฌเจพเจˆเจŸเฅค เจธเจฐเฉ‹เจค เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจตเจฐเจ•เจฐ เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ "เจฒเจพเจ•" เจธเจฎเจฐเฉฑเจฅเจพ, เจญเจพเจต 1000 vCPUs เจตเจพเจฒเฉ‡ เจจเฉ‹เจก 'เจคเฉ‡ 4m CPU เจฌเฉ‡เจจเจคเฉ€ เจตเจพเจฒเจพ เจ‡เฉฑเจ• เจชเฉŒเจก เจนเฉ‹เจฐ เจชเฉŒเจกเจพเจ‚ เจฒเจˆ เจธเจฟเจฐเจซเจผ 3 vCPUs เจจเฉ‚เฉฐ เจนเฉ€ เจ›เฉฑเจก เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค [1]

เจขเจฟเฉฑเจฒ (เจตเจพเจงเฉ‚ เจฐเจฟเจœเจผเจฐเจต) เจฌเฉ‡เจจเจคเฉ€ เจ•เฉ€เจคเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจ…เจคเฉ‡ เจ…เจธเจฒ เจตเจฐเจคเฉ‹เจ‚ เจตเจฟเฉฑเจš เจ…เฉฐเจคเจฐ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจชเฉŒเจก เจœเฉ‹ 2 GiB เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ เจชเจฐ เจธเจฟเจฐเจซเจผ 200 MiB เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจตเจฟเฉฑเจš ~ 1,8 GiB "เจตเฉฑเจง" เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจตเจพเจงเฉ‚ เจชเฉˆเจธเฉ‡ เจ–เจฐเจšเจฆเฉ‡ เจนเจจเฅค เจ•เฉ‹เจˆ เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ 1 GiB เจฌเฉ‡เจฒเฉ‹เฉœเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจชเฉเจฐเจคเฉ€ เจฎเจนเฉ€เจจเจพ ~ $10 เจ–เจฐเจš เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค [2]

Kubernetes เจธเจฐเฉ‹เจค เจฐเจฟเจชเฉ‹เจฐเจŸ (kube-resource-report) เจตเจพเจงเฉ‚ เจญเฉฐเจกเจพเจฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฌเจšเจค เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจกเฉ€ เจฎเจฆเจฆ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ:

AWS 'เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเจพเจ‰เจก เจ–เจฐเจšเจฟเจ†เจ‚ 'เจคเฉ‡ เจฌเจšเจค เจ•เจฐเฉ‹

Kubernetes เจธเจฐเฉ‹เจค เจฐเจฟเจชเฉ‹เจฐเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ…เจคเฉ‡ เจ•เจฎเจพเจ‚เจก เจฆเฉเจ†เจฐเจพ เจ‡เจ•เฉฑเจ เฉ‡ เจ•เฉ€เจคเฉ‡ เจตเจพเจงเฉ‚ เจจเฉ‚เฉฐ เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจธเจฅเจพเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉฑเจญเจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจฎเฉฐเจ— เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ€ HTML เจฐเจฟเจชเฉ‹เจฐเจŸ เจ•เฉ‡เจตเจฒ เจธเจฐเฉ‹เจค เจตเจฐเจคเฉ‹เจ‚ เจฆเจพ เจธเจจเฉˆเจชเจธเจผเจพเจŸ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจธเจฐเฉ‹เจค เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฒเจˆ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจจเจพเจฒ CPU/เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• "เจ†เจฎ" CPU-เจญเจพเจฐเฉ€ เจธเฉ‡เจตเจพ เจฒเจˆ เจ‡เฉฑเจ• Grafana เจšเจพเจฐเจŸ เจนเฉˆ: เจธเจพเจฐเฉ‡ เจชเฉŒเจก 3 เจฌเฉ‡เจจเจคเฉ€ เจ•เฉ€เจคเฉ‡ CPU เจ•เฉ‹เจฐเจพเจ‚ เจคเฉ‹เจ‚ เจ•เจพเจซเจผเฉ€ เจ˜เฉฑเจŸ เจตเจฐเจค เจฐเจนเฉ‡ เจนเจจ:

AWS 'เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเจพเจ‰เจก เจ–เจฐเจšเจฟเจ†เจ‚ 'เจคเฉ‡ เจฌเจšเจค เจ•เจฐเฉ‹

CPU เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ 3000m เจคเฉ‹เจ‚ ~400m เจคเฉฑเจ• เจ˜เจŸเจพเจ‰เจฃเจพ เจนเฉ‹เจฐ เจตเจฐเจ•เจฒเฉ‹เจกเจพเจ‚ เจฒเจˆ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจ–เจพเจฒเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‚เฉฐ เจ›เฉ‹เจŸเจพ เจนเฉ‹เจฃ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

"EC2 เจฎเฉŒเจ•เจฟเจ†เจ‚ เจฆเฉ€ เจ”เจธเจค CPU เจตเจฐเจคเฉ‹เจ‚ เจ…เจ•เจธเจฐ เจธเจฟเฉฐเจ—เจฒ-เจ…เฉฐเจ• เจชเฉเจฐเจคเฉ€เจธเจผเจค เจธเฉ€เจฎเจพ เจตเจฟเฉฑเจš เจ˜เฉเฉฐเจฎเจฆเฉ€ เจนเฉˆ," เจ•เฉ‹เจฐเฉ€ เจ•เฉเจ‡เจจ เจฒเจฟเจ–เจฆเจพ เจนเฉˆ. เจœเจฆเฉ‹เจ‚ เจ•เจฟ EC2 เจฒเจˆ เจธเจนเฉ€ เจ†เจ•เจพเจฐ เจฆเจพ เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพเจ‰เจฃเจพ เจ‡เฉฑเจ• เจฌเฉเจฐเจพ เจซเฉˆเจธเจฒเจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆYAML เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจธเจฐเฉ‹เจค เจธเจตเจพเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃเจพ เจ†เจธเจพเจจ เจนเฉˆ เจ…เจคเฉ‡ เจตเฉฑเจกเฉ€ เจฌเฉฑเจšเจค เจฒเจฟเจ† เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจชเจฐ เจ•เฉ€ เจ…เจธเฉ€เจ‚ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจฒเฉ‹เจ• YAML เจซเจพเจˆเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจฒ เจฌเจฆเจฒ เจฐเจนเฉ‡ เจนเจจ? เจจเจนเฉ€เจ‚, เจฎเจธเจผเฉ€เจจเจพเจ‚ เจ‡เจน เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจ•เจฐ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ! เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฐเจŸเฉ€เจ•เจฒ เจชเฉ‹เจก เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฐ (VPA) เจ‡เจนเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ: เจ•เฉฐเจฎ เจฆเฉ‡ เจฌเฉ‹เจ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจธเจฐเฉ‹เจค เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจฐเฉเจ•เจพเจตเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค VPA เจฆเฉเจ†เจฐเจพ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจชเฉเจฐเฉ‹เจฎเฉ€เจฅเฉ€เจ…เจธ CPU เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ (เจชเจคเจฒเฉ€ เจจเฉ€เจฒเฉ€ เจฒเจพเจˆเจจ) เจฆเจพ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจ—เฉเจฐเจพเจซเจผ เจ‡เฉฑเจฅเฉ‡ เจนเฉˆ:

AWS 'เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเจพเจ‰เจก เจ–เจฐเจšเจฟเจ†เจ‚ 'เจคเฉ‡ เจฌเจšเจค เจ•เจฐเฉ‹

เจœเจผเจฒเฉˆเจ‚เจกเฉ‹ เจ†เจชเจฃเฉ‡ เจธเจพเจฐเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐเจพเจ‚ เจตเจฟเฉฑเจš VPA เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจฒเจˆ. เจ—เฉˆเจฐ-เจจเจพเจœเจผเฉเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเฉ€ VPA เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

เจ—เฉ‹เจฒเจกเจฟเจฒเจ•เจธ เจซเฉ‡เจ…เจฐเจตเจฟเฉฐเจก เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจŸเฉ‚เจฒ เจนเฉˆ เจœเฉ‹ เจ‡เฉฑเจ• เจจเฉ‡เจฎเจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจนเจฐเฉ‡เจ• เจคเฉˆเจจเจพเจคเฉ€ เจฒเจˆ เจ‡เฉฑเจ• VPA เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจซเจฟเจฐ เจ‡เจธเจฆเฉ‡ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก 'เจคเฉ‡ เจ‡เฉฑเจ• VPA เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจธเจนเฉ€ CPU/เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจธเฉˆเจŸ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ:

AWS 'เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเจพเจ‰เจก เจ–เจฐเจšเจฟเจ†เจ‚ 'เจคเฉ‡ เจฌเจšเจค เจ•เจฐเฉ‹

เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ เจœเจฟเจนเจพ เจฒเจฟเจ–เจฟเจ† VPA เจฌเจพเจฐเฉ‡ เจฌเจฒเฉŒเจ—เจชเฉ‹เจธเจŸ 2019 เจตเจฟเฉฑเจš, เจ…เจคเฉ‡ เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš CNCF เจ…เฉฐเจคเจฎ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจญเจพเจˆเจšเจพเจฐเฉ‡ เจจเฉ‡ VPA เจฎเฉเฉฑเจฆเฉ‡ 'เจคเฉ‡ เจšเจฐเจšเจพ เจ•เฉ€เจคเฉ€.

EC2 เจธเจชเจพเจŸ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ

เจ†เจ–เจฐเฉ€ เจชเจฐ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจจเจนเฉ€เจ‚, เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฐเจ•เจฐ เจจเฉ‹เจกเจธ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจชเฉŒเจŸ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ AWS EC2 เจฒเจพเจ—เจคเจพเจ‚ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค [3]. เจ†เจจ-เจกเจฟเจฎเจพเจ‚เจก เจ•เฉ€เจฎเจคเจพเจ‚ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจธเจชเจพเจŸ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ 90% เจคเฉฑเจ• เจฆเฉ€ เจ›เฉ‹เจŸ 'เจคเฉ‡ เจ‰เจชเจฒเจฌเจง เจนเจจเฅค EC2 เจธเจชเจพเจŸ 'เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจšเจฒเจพเจ‰เจฃเจพ เจ‡เฉฑเจ• เจšเฉฐเจ—เจพ เจธเฉเจฎเฉ‡เจฒ เจนเฉˆ: เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เฉฑเจš เจ‰เจชเจฒเจฌเจงเจคเจพ เจฒเจˆ เจ•เจˆ เจตเฉฑเจ–-เจตเฉฑเจ– เจ•เจฟเจธเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจฎเจคเจฒเจฌ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ‰เจธเฉ‡ เจœเจพเจ‚ เจ˜เฉฑเจŸ เจ•เฉ€เจฎเจค เจฒเจˆ เจ‡เฉฑเจ• เจตเฉฑเจกเจพ เจจเฉ‹เจก เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจตเจงเฉ€ เจนเฉ‹เจˆ เจธเจฎเจฐเฉฑเจฅเจพ เจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจˆเจœเจผเจก เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฐเจ•เจฒเฉ‹เจก เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

EC2 เจธเจชเจพเจŸ 'เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆ? เจ‡เฉฑเจฅเฉ‡ เจ•เจˆ เจตเจฟเจ•เจฒเจช เจนเจจ: เจ‡เฉฑเจ• เจคเฉ€เจœเฉ€ เจงเจฟเจฐ เจฆเฉ€ เจธเฉ‡เจตเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ SpotInst (เจนเฉเจฃ "Spot" เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจฎเฉˆเจจเฉ‚เฉฐ เจ•เจฟเจ‰เจ‚ เจจเจพ เจชเฉเฉฑเจ›เฉ‹), เจœเจพเจ‚ เจฌเจธ เจ†เจชเจฃเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• Spot AutoScalingGroup (ASG) เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• "เจธเจฎเจฐเฉฑเจฅเจพ-เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค" เจธเจชเจพเจŸ ASG เจฒเจˆ เจ‡เฉฑเจ• CloudFormation เจธเจจเจฟเฉฑเจชเจŸ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจฎเจฒเจŸเฉ€เจชเจฒ เจ‰เจฆเจพเจนเจฐเจจ เจ•เจฟเจธเจฎเจพเจ‚ เจนเจจ:

MySpotAutoScalingGroup:
 Properties:
   HealthCheckGracePeriod: 300
   HealthCheckType: EC2
   MixedInstancesPolicy:
     InstancesDistribution:
       OnDemandPercentageAboveBaseCapacity: 0
       SpotAllocationStrategy: capacity-optimized
     LaunchTemplate:
       LaunchTemplateSpecification:
         LaunchTemplateId: !Ref LaunchTemplate
         Version: !GetAtt LaunchTemplate.LatestVersionNumber
       Overrides:
         - InstanceType: "m4.2xlarge"
         - InstanceType: "m4.4xlarge"
         - InstanceType: "m5.2xlarge"
         - InstanceType: "m5.4xlarge"
         - InstanceType: "r4.2xlarge"
         - InstanceType: "r4.4xlarge"
   LaunchTemplate:
     LaunchTemplateId: !Ref LaunchTemplate
     Version: !GetAtt LaunchTemplate.LatestVersionNumber
   MinSize: 0
   MaxSize: 100
   Tags:
   - Key: k8s.io/cluster-autoscaler/node-template/label/aws.amazon.com/spot
     PropagateAtLaunch: true
     Value: "true"

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเจพเจฒ เจธเจชเจพเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจจเฉ‹เจŸ:

  • เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจชเจพเจŸ เจธเจฎเจพเจชเจคเฉ€ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ เจจเฉ‹เจก เจจเฉ‚เฉฐ เจฎเจฟเจฒเจพ เจ•เฉ‡ เจœเจฆเฉ‹เจ‚ เจ‰เจฆเจพเจนเจฐเจจ เจฌเฉฐเจฆ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ
  • เจœเจผเจฒเฉˆเจ‚เจกเฉ‹ เจตเจฐเจคเจฆเจพ เจนเฉˆ เจ•เจพเจ‚เจŸเจพ เจจเฉ‹เจก เจชเฉ‚เจฒ เจคเจฐเจœเฉ€เจนเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ…เจงเจฟเจ•เจพเจฐเจค เจ•เจฒเฉฑเจธเจŸเจฐ เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฟเฉฐเจ—
  • เจธเจชเจพเจŸ เจจเฉ‹เจกเจธ เจฎเจœเจฌเฉ‚เจฐ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจธเจชเจพเจŸ เจตเจฟเฉฑเจš เจšเฉฑเจฒเจฃ เจฒเจˆ เจตเจฐเจ•เจฒเฉ‹เจก เจฆเฉ€เจ†เจ‚ "เจฐเจœเจฟเจธเจŸเฉเจฐเฉ‡เจธเจผเจจเจพเจ‚" เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเฉ‹

เจธเฉฐเจ–เฉ‡เจช

เจฎเฉˆเจ‚ เจ‰เจฎเฉ€เจฆ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เจฒเจพเจ‰เจก เจฌเจฟเฉฑเจฒ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฒเจˆ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ‡ เจ—เจ เจ•เฉเจ เจธเจพเจงเจจ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจฒเฉฑเจ—เฉ‡ เจนเฉ‹เจฃเจ—เฉ‡เฅค เจคเฉเจธเฉ€เจ‚ เจฒเฉ‡เจ– เจฆเฉ€เจ†เจ‚ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจธเจฎเฉฑเจ—เจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจฅเฉ‡ เจตเฉ€ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹ YouTube เจ…เจคเฉ‡ เจธเจฒเจพเจˆเจกเจพเจ‚ เจตเจฟเฉฑเจš DevOps Gathering 2019 เจตเจฟเฉฑเจš เจฎเฉ‡เจฐเฉ€ เจ—เฉฑเจฒเจฌเจพเจค.

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ 'เจคเฉ‡ เจ•เจฒเจพเจ‰เจก เจ–เจฐเจšเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฌเจšเจพเจ‰เจฃ เจฒเจˆ เจคเฉเจนเจพเจกเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจ…เจญเจฟเจ†เจธ เจ•เฉ€ เจนเจจ? เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ 'เจคเฉ‡ เจฆเฉฑเจธเฉ‹ เจŸเจตเจฟเฉฑเจŸเจฐ (@try_except_).

[1] เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, 3 เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ vCPUs เจตเจฐเจคเฉ‹เจ‚ เจฏเฉ‹เจ— เจฐเจนเจฟเจฃเจ—เฉ‡ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจจเฉ‹เจก เจฆเจพ เจฅเฉเจฐเฉ‹เจชเฉเฉฑเจŸ เจฐเจพเจ–เจตเฉ‡เจ‚ เจธเจฟเจธเจŸเจฎ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ˜เจŸเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจญเฉŒเจคเจฟเจ• เจจเฉ‹เจก เจธเจฎเจฐเฉฑเจฅเจพ เจ…เจคเฉ‡ "เจชเฉเจฐเจฌเฉฐเจงเจฟเจค" เจธเจฐเฉ‹เจคเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจซเจฐเจ• เจ•เจฐเจฆเจพ เจนเฉˆ (เจจเฉ‹เจก เจ…เจฒเจพเจ•เฉ‡เจŸเฉ‡เจฌเจฒ).

[2] เจ—เจฃเจจเจพ เจ‰เจฆเจพเจนเจฐเจจ: 5 GiB เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• m8.large เจ‰เจฆเจพเจนเจฐเจจ ~$84 โ€‹โ€‹เจชเฉเจฐเจคเฉ€ เจฎเจนเฉ€เจจเจพ เจนเฉˆ (eu-central-1, เจ†เจจ-เจกเจฟเจฎเจพเจ‚เจก), เจฏเจพเจจเฉ€. 1/8 เจจเฉ‹เจก เจจเฉ‚เฉฐ เจฌเจฒเจพเจ• เจ•เจฐเจจเจพ เจฒเจ—เจญเจ— ~$10/เจฎเจนเฉ€เจจเจพ เจนเฉˆเฅค

[3] เจคเฉเจนเจพเจกเฉ‡ EC2 เจฌเจฟเฉฑเจฒ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฆเฉ‡ เจนเฉ‹เจฐ เจตเฉ€ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฐเจฟเจœเจผเจฐเจตเจก เจ‡เฉฐเจธเจŸเฉˆเจ‚เจธ, เจธเฉ‡เจตเจฟเฉฐเจ—เจœเจผ เจชเจฒเจพเจจ, เจ†เจฆเจฟเฅค - เจฎเฉˆเจ‚ เจ‡เฉฑเจฅเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเจธเจผเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ•เจตเจฐ เจจเจนเฉ€เจ‚ เจ•เจฐเจพเจ‚เจ—เจพ, เจชเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ!

เจ•เฉ‹เจฐเจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจœเจพเจฃเฉ‹เฅค

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

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