เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ Kubernetes: เบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบš

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ Kubernetes: เบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบš

TL; DR

  • เป€เบžเบทเปˆเบญเบšเบฑเบ™เบฅเบธเบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เบชเบนเบ‡เบ‚เบญเบ‡เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเปเบฅเบฐ microservices, เบšเบฑเบ™เบ—เบถเบเปเบฅเบฐเบเบฒเบ™เบงเบฑเบ”เปเบ—เบเบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™เบšเปเปˆเบžเบฝเบ‡เบžเป.
  • เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเป„เบงเบ‚เบถเป‰เบ™เปเบฅเบฐเบ„เบงเบฒเบกเบขเบทเบ”เบขเบธเปˆเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ„เบงเบ™เปƒเบŠเป‰เบซเบผเบฑเบเบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เบชเบนเบ‡ (HOP).
  • เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, NOP เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰: เบเบฒเบ™เบ•เบฑเบ”เป„เบกเป‰เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบขเปˆเบฒเบ‡เปƒเบเป‰เบŠเบดเบ”, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฒเบžเบดเบšเบฒเบ™, เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” / เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡.
  • เปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบ›เบฑเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ NOR เบเบฝเบกเบ„เบงเบฒเบกเบžเป‰เบญเบก ะธ เบเบฒเบ™โ€‹เบชเบทเบšโ€‹เบชเบงเบ™โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เบฅเบปเบ‡โ€‹เบŠเบตโ€‹เบงเบดเบ”โ€‹ Kubernetes.

เปเบกเปˆเปเบšเบšเบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเปเบกเปˆเบ™เบซเบเบฑเบ‡?

เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบญเบญเบเปเบšเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบฅเบฐเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบชเบนเบ‡, เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเปˆเบ™เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบ–เป‰เบฒเบกเบฑเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเป„เบงเบˆเบฒเบเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบง. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ„เบฅเบฒเบงเบ—เบปเปˆเบงเป„เบ›เปƒเบŠเป‰เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเบธเบฅเบฐเบžเบฒเบ - เป€เบŠเบดเปˆเบ‡เปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ–เบทเบเบงเบฒเบ‡เป„เบงเป‰เปƒเบ™เบ–เบฑเบ‡เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เปเบฅเบฐเป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™ k8s เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเบชเบนเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบญเบญเบเปเบšเบšเบเบธเปˆเบก, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบฎเบนเบšเปเบšเบšเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™. เปƒเบ™เบšเบฑเบ™เบ”เบฒเบžเบงเบเป€เบ‚เบปเบฒเปเบกเปˆเบ™เปเบกเปˆเปเบšเบšเบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบš. เบกเบฑเบ™เบเปเบฒเบ™เบปเบ”เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบชเบทเปˆเบชเบฒเบ™เบเบฑเบš k8s เบงเปˆเบฒเบกเบฑเบ™เบกเบตเบชเบธเบ‚เบฐเบžเบฒเบšเบ”เบต. เบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเปˆเบฒเบเบฑเบเบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™, เปเบ•เปˆเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบฅเบฐเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ•เปเปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป. เบเบดเปˆเบ‡ Kubernetes เบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบชเบธเบ‚เบฐเบžเบฒเบšเบ‚เบญเบ‡เบเบฑเบเบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเปƒเบ”, เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบชเบฐเบซเบฅเบฒเบ”เบเบงเปˆเบฒเบ—เบตเปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เบเปˆเบฝเบงเบเบฑเบšเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปเบฅเบฐเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบผเบฑเบเบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เบชเบนเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบชเบฒเบกเบฒเบ”เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ”เป‰เบ—เบฑเบ™เป€เบงเบฅเบฒ.

เบซเบผเบฑเบเบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เบชเบนเบ‡ (HOP)

เบซเบผเบฑเบเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เบชเบนเบ‡เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™ เบซเบผเบฑเบเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบญเบญเบเปเบšเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบšเบฑเบ™เบˆเบธ. เปƒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ microservices, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบšเปเปˆเบชเบปเบ™เปƒเบˆเบงเปˆเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบ™เบงเปƒเบ” (เปเบฅเบฐเบ–เบทเบเบ•เป‰เบญเบ‡), เปเบ•เปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบžเบงเบเป€เบ‚เบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบˆเบฒเบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบš. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเบเบงเบ”เบชเบญเบšเบœเบนเป‰เปƒเบŠเป‰, เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเบซเบ™เบถเปˆเบ‡เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป HTTP เป„เบ›เปƒเบซเป‰เบญเบตเบ, เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบกเบตเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™ - เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. PythonJS เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป„เบ”เป‰, เปเบฅเบฐ Python Flask เบชเบฒเบกเบฒเบ”เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡. เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเปˆเบญเบ‡เบชเบตเบ”เปเบฒเบ—เบตเปˆเบกเบตเป€เบ™เบทเป‰เบญเบซเบฒเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เบ•เปเปˆเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบซเบผเบฑเบเบเบฒเบ™ NOP เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เปเบ•เปˆเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เป€เบ›เบตเบ”เป€เบœเบตเบเบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ” API เบซเบผเบฒเบเบญเบฑเบ™เบ—เบตเปˆเบŠเบตเป‰เบšเบญเบเบงเปˆเบฒเบกเบฑเบ™เบกเบตเบชเบธเบ‚เบฐเบžเบฒเบšเบ”เบต, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ„เบงเบฒเบกเบžเป‰เบญเบกเปเบฅเบฐเบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡เบกเบฑเบ™. Kubernetes เบฎเป‰เบญเบ‡เบ‚เปเบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบžเบทเปˆเบญเบ„เบดเบ”เบœเปˆเบฒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปเบฅเบฐเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”.

เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ„เบฅเบฒเบงเบ—เบตเปˆเบญเบญเบเปเบšเบšเบกเบฒเป„เบ”เป‰เบ”เบตเบšเบฑเบ™เบ—เบถเบเป€เบซเบ”เบเบฒเบ™เบซเบผเบฑเบเบ‚เบญเบ‡เบกเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰ I/O streams เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ STDERR เปเบฅเบฐ STDOUT. เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบŠเปˆเบงเบ, เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™ filebeat, logstash เบซเบผเบท fluentd, เบเบฒเบ™เบชเบปเปˆเบ‡เบšเบฑเบ™เบ—เบถเบเป„เบ›เบเบฑเบ‡เบฅเบฐเบšเบปเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบนเบ™เบเบฒเบ‡ (เบ•เบปเบงเบขเปˆเบฒเบ‡ Prometheus) เปเบฅเบฐเบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบšเบฑเบ™เบ—เบถเบ (เบŠเบธเบ”เบŠเบญเบšเปเบง ELK). เปเบœเบ™เบงเบฒเบ”เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ„เบฅเบฒเบงเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”เบ•เบฒเบกเปเบšเบšเบ—เบปเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบš เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เบชเบนเบ‡.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ Kubernetes: เบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบš

เบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเปƒเบ™ Kubernetes?

เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡, k8s เบ•เบดเบ”เบ•เบฒเบกเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบฑเบเป‚เบ”เบเปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ•เบปเบงเบ„เบงเบšเบ„เบธเบก (เบเบฒเบ™ เบ™เบณ เปƒเบŠเป‰, เบŠเบธเบ”เบˆเบณเบฅเบญเบ‡, DaemonSets, StatefulSets เปเบฅเบฐเบญเบทเปˆเบ™เป†, เปเบฅเบฐเบญเบทเปˆเบ™เป†). เป‚เบ”เบเป„เบ”เป‰เบ„เบปเป‰เบ™เบžเบปเบšเบงเปˆเบฒเบเบฑเบเป„เบ”เป‰เบฅเบปเป‰เบกเบฅเบปเบ‡เบ”เป‰เบงเบเป€เบซเบ”เบœเบปเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบžเบฐเบเบฒเบเบฒเบกเป€เบฅเบตเปˆเบกเบกเบฑเบ™เปƒเปเปˆ เบซเบผเบทเบเป‰เบฒเบเบกเบฑเบ™เป„เบ›เปƒเบชเปˆเป‚เบ™เบ”เบญเบทเปˆเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบเบฑเบเบญเบฒเบ”เบˆเบฐเบฅเบฒเบเบ‡เบฒเบ™เบงเปˆเบฒเบกเบฑเบ™เบ‚เบถเป‰เบ™เปเบฅเบฐเปเบฅเปˆเบ™, เปเบ•เปˆเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบ. เปƒเบซเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡: เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบŠเป‰ Apache เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒ, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบขเบนเปˆเปƒเบ™เบซเบผเบฒเบเป†เบเบฑเบเบ‚เบญเบ‡เบเบธเปˆเบก. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เป„เบ”เป‰เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบ—เบธเบเป†เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ” 500 (เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบžเบฒเบเปƒเบ™). เป€เบกเบทเปˆเบญเบเบงเบ”เบชเบญเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบฑเบเปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เปเบ•เปˆเบฅเบนเบเบ„เป‰เบฒเบ„เบดเบ”เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เบชเบฐโ€‹เบ–เบฒโ€‹เบ™เบฐโ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ Kubernetes: เบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบš

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, k8s เป€เบฎเบฑเบ” เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™. เปƒเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™เบ™เบตเป‰, kubelet เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบเบงเบ”เบชเบญเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบ™เบšเบฑเบ™เบˆเบธ. เป€เบกเบทเปˆเบญเบฅเบฒเบงเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบขเบธเบ”เป€เบŠเบปเบฒ, เบฅเบฒเบงเบˆเบฐเป€เบฅเบตเปˆเบกเบกเบฑเบ™เปƒเบซเบกเปˆ. เบ–เป‰เบฒเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เป€เบ›เบตเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบซเบกเปˆ, เปเบฅเบฐเป‚เบ›เบฅเปเบเบฅเบกเบ–เบทเบเบญเบญเบเปเบšเบšเป€เบžเบทเปˆเบญเบ›เบดเบ”เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ”เป†, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบšเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก NOP เปเบฅเบฐเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบš. เบ„เบงเบฒเบกเบชเบปเบ‡เบชเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบเบฅเบปเบšเบฅเป‰เบฒเบ‡เป‚เบ”เบเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบซเบกเปˆ. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰, k8s เบชเบฐโ€‹เป€เบซเบ™เบต 2 เบงเบดโ€‹เบ—เบตโ€‹เบ—เบตเปˆโ€‹เป€เบฅเบดเบโ€‹เบเบงเปˆเบฒโ€‹เป€เบžเบทเปˆเบญโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹เบ‚เบญเบ‡โ€‹เบเบฑเบโ€‹: เบเบฒเบ™โ€‹เบชเบทเบšโ€‹เบชเบงเบ™โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เบฅเบปเบ‡โ€‹เบŠเบตโ€‹เบงเบดเบ”โ€‹ ะธ เบเบฝเบกเบ„เบงเบฒเบกเบžเป‰เบญเบก.

LivenessProbe

เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ เบเบฒเบ™โ€‹เบชเบทเบšโ€‹เบชเบงเบ™โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เบฅเบปเบ‡โ€‹เบŠเบตโ€‹เบงเบดเบ”โ€‹ kubelet เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบš 3 เบ›เบฐเป€เบžเบ”: เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒ pod เบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™, เปเบ•เปˆเบเบฑเบ‡เบงเปˆเบฒเบกเบฑเบ™เบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบฎเบฑเบšเปเบฅเบฐเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบขเปˆเบฒเบ‡เบžเบฝเบ‡เบžเปเบ•เปเปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป:

  • เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป HTTP เบเบฑเบš pod เป„เบ”เป‰. เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ•เป‰เบญเบ‡เบกเบตเบฅเบฐเบซเบฑเบ”เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡ HTTP เปƒเบ™เบฅเบฐเบ”เบฑเบšเบˆเบฒเบ 200 เบซเบฒ 399. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบฅเบฐเบซเบฑเบ” 5xx เปเบฅเบฐ 4xx เบชเบฑเบ™เบเบฒเบ™เบงเปˆเบฒเบเบฑเบเบเปเบฒเบฅเบฑเบ‡เบกเบตเบšเบฑเบ™เบซเบฒ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™.
  • เป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบš pods เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ HTTP (เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบกเบฅ Postfix), เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP.
  • เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ•เบปเบ™เป€เบญเบ‡เบกเบฑเบเบชเปเบฒเบฅเบฑเบš pod (เบžเบฒเบเปƒเบ™). เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบกเปˆเบ™เบ–เบทเบงเปˆเบฒเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบ–เป‰เบฒเบฅเบฐเบซเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เปเบกเปˆเบ™ 0.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ™เบตเป‰. เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡ pod เบ•เปเปˆเป„เบ›เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ NodeJS เบ—เบตเปˆเบ–เบดเป‰เบกเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” 500 เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป HTTP. เป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒ container เป„เบ”เป‰เบ–เบทเบ restart เป€เบกเบทเปˆเบญเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™ livenessProbe:

apiVersion: v1
kind: Pod
metadata:
 name: node500
spec:
 containers:
   - image: magalix/node500
     name: node500
     ports:
       - containerPort: 3000
         protocol: TCP
     livenessProbe:
       httpGet:
         path: /
         port: 3000
       initialDelaySeconds: 5

เบ™เบตเป‰เบšเปเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบ„เปเบฒเบ™เบดเบเบฒเบก pod เบญเบทเปˆเบ™เป†, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบžเบตเปˆเบกเบงเบฑเบ”เบ–เบธ .spec.containers.livenessProbe. เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต httpGet เบเบญเบกเบฎเบฑเบšเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป HTTP GET เบ–เบทเบเบชเบปเปˆเบ‡ (เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ™เบตเป‰เปเบกเปˆเบ™ /, เปเบ•เปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบเบฒเบ™เบ•เปเปˆเบชเบนเป‰เบญเบฒเบ”เบˆเบฐเบกเบตเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: /api/v1/status). LivenessProbe เบญเบทเปˆเบ™เบเบญเบกเบฎเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต initialDelaySeconds, เป€เบŠเบดเปˆเบ‡เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปƒเบซเป‰เบฅเปเบ–เป‰เบฒเบˆเปเบฒเบ™เบงเบ™เบงเบดเบ™เบฒเบ—เบตเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”. เบ„เบงเบฒเบกเบฅเปˆเบฒเบŠเป‰เบฒเปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบงเบฅเบฒเป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบฅเบฐเป€เบกเบทเปˆเบญเบ›เบดเบ”เป€เบ›เบตเบ”เปƒเบซเบกเปˆ, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบกเบตเป€เบงเบฅเบฒเปƒเบ”เบซเบ™เบถเปˆเบ‡.

เป€เบžเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบตเป‰เปƒเบชเปˆเบเบธเปˆเบก, เปƒเบซเป‰เปƒเบŠเป‰:

kubectl apply -f pod.yaml

เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบญเบ‡เบชเบฒเบกเบงเบดเบ™เบฒเบ—เบต, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบงเบ”เป€เบšเบดเปˆเบ‡เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบเบฑเบเป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

kubectl describe pods node500

เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”, เบŠเบญเบเบซเบฒ เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆ.

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, livenessProbe เป„เบ”เป‰เบฅเบดเป€เบฅเบตเปˆเบกเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป HTTP GET, เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป„เบ”เป‰เบชเป‰เบฒเบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” 500 (เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบงเบฒเบ‡เปเบœเบ™เปƒเบซเป‰เป€เบฎเบฑเบ”), เปเบฅเบฐ kubelet เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบซเบกเปˆ.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเบปเบ‡เป„เบชเบงเปˆเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ NideJS เบ–เบทเบเบ•เบฑเป‰เบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบ™เบงเปƒเบ”, เบ™เบตเป‰เปเบกเปˆเบ™ app.js เปเบฅเบฐ Dockerfile เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰:

app.js

var http = require('http');

var server = http.createServer(function(req, res) {
    res.writeHead(500, { "Content-type": "text/plain" });
    res.end("We have run into an errorn");
});

server.listen(3000, function() {
    console.log('Server is running at 3000')
})

dockerfile

FROM node
COPY app.js /
EXPOSE 3000
ENTRYPOINT [ "node","/app.js" ]

เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ™เบตเป‰: livenessProbe เบˆเบฐเบ›เบดเบ”เป€เบ›เบตเบ”เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเปƒเบซเบกเปˆเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบ–เป‰เบฒเบกเบฑเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง. เบ–เป‰เบฒเบเบฒเบ™เบ›เบดเบ”เป€เบ›เบตเบ”เปƒเบซเบกเปˆเบšเปเปˆเป„เบ”เป‰เปเบเป‰เป„เบ‚เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเป€เบฎเบฑเบ”เบงเบฝเบ, kubelet เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบ”เป‰.

เบเบฝเบกเบ„เบงเบฒเบกเบžเป‰เบญเบก

readinessProbe เป€เบฎเบฑเบ”เบงเบฝเบเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš livenessProbes (เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป GET, เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™ TCP เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡), เบเบปเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ. เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเบ—เบตเปˆเบเบงเบ”เบžเบปเบšเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเปเบกเปˆเบ™เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เบ„เบทเบ™เปƒเปเปˆ, เปเบ•เปˆเบ–เบทเบเปเบเบเบญเบญเบเบˆเบฒเบเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบฒเป€เบ‚เบปเป‰เบฒ. เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™เบšเบฑเบ™เบˆเบธเบเปเบฒเบฅเบฑเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบซเบผเบฒเบเบซเบผเบทเบขเบนเปˆเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”เบซเบ™เบฑเบ, เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบงเบฅเบฒเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ‚เบญเบ‡ livenessProbeโ€‹, เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ„เบงเบฒเบกโ€‹เบžเป‰เบญเบกโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ•เบญเบšโ€‹เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบเบฐโ€‹เบ•เบธเป‰เบ™โ€‹เปƒเบซเป‰โ€‹เป€เบเบตเบ” (เบœเปˆเบฒเบ™โ€‹เบžเบฒโ€‹เบฅเบฒโ€‹เบกเบดโ€‹เป€เบ•เบตโ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบš timeoutSecondsโ€‹)โ€‹, เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™ kubelet restart เบ–เบฑเบ‡โ€‹. เป€เบกเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเป€เบฅเบตเปˆเบกเบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบซเบผเบฒเบ เปเบฅเบฐเบ–เบทเบเป€เบ›เบตเบ”เบ„เบทเบ™เปƒเปเปˆเบญเบตเบเบ„เบฑเป‰เบ‡. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเป„เบงเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบฅเบปเบ”เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบ–เบฐเบซเบ™เบปเบ™เบเปเบฒเบฅเบฑเบ‡เบฅเปเบ–เป‰เบฒเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เปเบกเปˆเบ™เบŠเบฑเบเบŠเป‰เบฒ - เปเบฅเบฐเบฅเบปเบ”เป„เบ”เป‰เบฎเบฑเบšเบญเบธเบ›เบฐเบ•เบดเป€เบซเบ”.

เปƒเบซเป‰เบ‚เบฝเบ™เบ„เปเบฒเบ™เบดเบเบฒเบก redinessProbe เบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ•เบญเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป GET เบšเปเปˆเป€เบเบตเบ™เบชเบญเบ‡เบงเบดเบ™เบฒเบ—เบต, เปเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฐเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป GET เบซเบผเบฑเบ‡เบˆเบฒเบ 5 เบงเบดเบ™เบฒเบ—เบต. เป„เบŸเบฅเปŒ pod.yaml เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เปเบšเบšเบ™เบตเป‰:

apiVersion: v1
kind: Pod
metadata:
 name: nodedelayed
spec:
 containers:
   - image: afakharany/node_delayed
     name: nodedelayed
     ports:
       - containerPort: 3000
         protocol: TCP
     readinessProbe:
       httpGet:
         path: /
         port: 3000
       timeoutSeconds: 2

เปƒเบซเป‰เปƒเบŠเป‰ pod เบเบฑเบš kubectl:

kubectl apply -f pod.yaml

เปƒเบซเป‰เบฅเปเบ–เป‰เบฒเบชเบญเบ‡เบชเบฒเบกเบงเบดเบ™เบฒเบ—เบตเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ„เบงเบฒเบกเบžเป‰เบญเบกเบ‚เบญเบ‡ Probe เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”:

kubectl describe pods nodedelayed

เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบšเบฒเบ‡เป€เบซเบ”เบเบฒเบ™เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™ เบญเบฑเบ™เบ™เบตเป‰.

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, kubectl เบšเปเปˆเป„เบ”เป‰เบ›เบดเบ”เป€เบ›เบตเบ”เบเบฑเบเบ„เบทเบ™เปƒเปเปˆเป€เบกเบทเปˆเบญเป€เบงเบฅเบฒเบเบงเบ”เบชเบญเบšเป€เบเบตเบ™ 2 เบงเบดเบ™เบฒเบ—เบต. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบฅเบฒเบงเป„เบ”เป‰เบเบปเบเป€เบฅเบตเบเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป. เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เบ‚เบฒเป€เบ‚เบปเป‰เบฒเบˆเบฐเบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเบšเปˆเบญเบ™เบญเบทเปˆเบ™, เบเบฑเบเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบ.

เบเบฐเบฅเบธเบ™เบฒเบฎเบฑเบšเบŠเบฒเบšเบงเปˆเบฒเบ•เบญเบ™เบ™เบตเป‰เบžเบญเบ”เบ–เบทเบเป‚เบซเบผเบ”เปเบฅเป‰เบง, เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ kubectl เบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบซเบฒเบกเบฑเบ™เบญเบตเบเบ„เบฑเป‰เบ‡: เบเบฒเบ™เบ•เบญเบšเบชเบฐเปœเบญเบ‡เบ•เปเปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป GET เปเบกเปˆเบ™เบšเปเปˆเบŠเบฑเบเบŠเป‰เบฒเบญเบตเบเบ•เปเปˆเป„เบ›.

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš, เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เป„เบŸเบฅเปŒ app.js เบ—เบตเปˆเบ–เบทเบเปเบเป‰เป„เบ‚:

var http = require('http');

var server = http.createServer(function(req, res) {
   const sleep = (milliseconds) => {
       return new Promise(resolve => setTimeout(resolve, milliseconds))
   }
   sleep(5000).then(() => {
       res.writeHead(200, { "Content-type": "text/plain" });
       res.end("Hellon");
   })
});

server.listen(3000, function() {
   console.log('Server is running at 3000')
})

TL; DR
เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบกเบฒเป€เบ–เบดเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบŸเบฑเบ‡, เบšเบฑเบ™เบ—เบถเบเป€เบ›เบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ•เบปเป‰เบ™เบ•เปเปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเปเบฅเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบชเบธเบ‚เบฐเบžเบฒเบšเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบšเปเปˆเบกเบตเบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เปƒเบ”เป†. เบšเบฑเบ™เบ—เบถเบเบเบฑเบ‡เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เบกเบทเป‰เบ™เบตเป‰; เบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบเบฑเบšเบšเบฑเบ™เบ—เบถเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบชเบธเบเป€เบชเบตเบ™เปเบฅเบฐเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆ. [เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบŸเบฑเบ‡เป‚เบ”เบเปƒเบŠเป‰ monit, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบ•เปˆเบเบฑเบš k8s เบกเบฑเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบซเบผเบฒเบ :) - เบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™. ]

เปƒเบ™เบกเบทเป‰เบ™เบตเป‰, เบเบฒเบ™เปเบเป‰เป„เบ‚เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เป€เบเบทเบญเบšเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เบเปˆเบญเบ‡เบชเบตเบ”เปเบฒ. เบšเปเปˆ, เบžเบงเบเป€เบ‚เบปเบฒเบ„เบงเบ™เบชเบฐเปเบ”เบ‡เบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบชเบฒเบกเบฒเบ”เบชเบญเบšเบ–เบฒเบกเปเบฅเบฐเป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบ„เบธเบ™เบ„เปˆเบฒเบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ—เบฑเบ™เบ—เบตเบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™. เบญเบฑเบ™เบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบเบฒเบ™เบญเบญเบเปเบšเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบซเบผเบฑเบเบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เบชเบนเบ‡ (HOP).

Kubernetes เปƒเบซเป‰ 2 เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™: readinessProbe เปเบฅเบฐ livenessProbe. เบ—เบฑเบ‡เบชเบญเบ‡เปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบ”เบฝเบงเบเบฑเบ™ (เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป HTTP GET, เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™ TCP เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡). เบžเบงเบเป€เบ‚เบปเบฒเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเป€เบฎเบฑเบ”เปƒเบ™เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ•เปเปˆเบšเบฑเบ™เบซเบฒเปƒเบ™เบเบฑเบ. livenessProbe เบฃเบตเบชเบฐเบ•เบฒเบ”เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป‚เบ”เบเบซเบงเบฑเบ‡เบงเปˆเบฒเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบญเบตเบ, เปเบฅเบฐเบ„เบงเบฒเบกเบžเป‰เบญเบก Probe เปเบเบเบเบฑเบเบˆเบฒเบเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบฒเป€เบ‚เบปเป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบชเบฒเป€เบซเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบˆเบฐเบ–เบทเบเปเบเป‰เป„เบ‚.

เบเบฒเบ™เบญเบญเบเปเบšเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ„เบงเบ™เบ›เบฐเบเบญเบšเบกเบตเบ—เบฑเบ‡เบชเบญเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบฅเบฐเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบžเบฝเบ‡เบžเป, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบเบปเบเป€เบงเบฑเป‰เบ™เบ–เบทเบเบ–เบดเป‰เบก. เบกเบฑเบ™เบเบฑเบ‡เบ„เบงเบ™เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ” API เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก (Prometheus) เบ—เบตเปˆเบกเบตเบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™