เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบชเปเบฒเบฅเบฑเบš Kubernetes: เบงเบดเบ—เบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบฅเบฑเบ”

เบšเบฑเบ™เบซเบฒเบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเบชเบฐเบ–เบฒเบ™เบฐเปƒเบ™ Kubernetes

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปเบฅเบฐเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบกเปˆเบ™เบ‡เปˆเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบกเบฒเบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ–เบทเบเบˆเบฑเบ”เบ›เบฐเป€เบžเบ”เป€เบ›เบฑเบ™ stateless, i.e. เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™. เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบชเบฐเบ”เบงเบเบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปƒเบ™ Kubernetes, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ APIs เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ‚เบญเบ‡เบ•เบปเบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™ "เบ™เบญเบเบเปˆเบญเบ‡": เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™เบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เบซเบผเบท magic.

เป€เบงเบปเป‰เบฒเบ‡เปˆเบฒเบเป†, เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เบ•เบปเบงเบญเบตเบเบซเป‰เบฒเบชเปเบฒเป€เบ™เบปเบฒเบ‚เบญเบ‡ backend เปƒเบ™ PHP / Ruby / Python เปƒเบ™ cluster เบ‚เบญเบ‡ containers, เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปƒเบซเบกเปˆ 5 เบ„เบฑเป‰เบ‡เปเบฅเบฐเบ„เบฑเบ”เบฅเบญเบเปเบซเบผเปˆเบ‡. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ—เบฑเบ‡เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เปเบฅเบฐเบชเบฐเบ„เบดเบš init เบขเบนเปˆเปƒเบ™เบฎเบนเบšเบžเบฒเบš, เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบฅเบฑเบ”เบเบฒเบเป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™ fans เบ‚เบญเบ‡ containers เปเบฅเบฐเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐ microservice เบฎเบนเป‰เบ”เบต, เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ เปเบญเบฑเบš stateful, i.e. เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ„เบปเบ‡เบ—เบตเปˆเป€เบŠเบฑเปˆเบ™: เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra ...). เบ™เบตเป‰เบ™เบณเปƒเบŠเป‰เบเบฑเบšเบ—เบฑเบ‡เบชเบญเบ‡เบŠเบญเบšเปเบงเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบธเปˆเบกเบเบธเปˆเบกเป‚เบ„เบฃเบณเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบญเบดเบ”เบชเบฐเบซเบผเบฐ (เบ•เบปเบงเบขเปˆเบฒเบ‡, Percona XtraDB เปเบฅเบฐ Cassandra), เปเบฅเบฐเบŠเบญเบšเปเบงเบ—เบตเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบญเบธเบ›เบฐเบเบญเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ (เป€เบŠเบฑเปˆเบ™: Redis, MySQL, PostgreSQL...).

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

เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ CoreOS

เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐ "เป‚เบ„เบ‡เบเบฒเบ™" เบ„เบงเบฒเบกเบฎเบนเป‰เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™, เบ—เป‰เบฒเบเบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเป‚เบ„เบ‡เบเบฒเบ™ CoreOS เปเบ™เบฐ เบ™เบณ "เบŠเบญเบšเปเบงเบŠเบฑเป‰เบ™เปƒเบซเบกเปˆ" เบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Kubernetes - เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™ (เบˆเบฒเบเบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ” "เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™", i.e. "เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™").

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

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

เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™

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

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

เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™ เบ—เบฑเบ‡เปเบปเบ”เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เปเบกเปˆเบ™ daemon เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบ—เบตเปˆ:

  1. เบชเบฐเปเบฑเบเปƒเบŠเป‰ API เป€เบซเบ”เบเบฒเบ™เปƒเบ™ Kubernetes;
  2. เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบกเบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบšเบปเบš (เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™ เบŠเบธเบ”เบˆเบณเบฅเบญเบ‡, เบซเบกเบฒเบเป€เบ›เบฑเบ™เบเบฑเบ, เบšเปเบฅเบดเบเบฒเบ™ เปเบฅเบฐ เบญเบทเปˆเบ™เป†.);
  3. เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบš เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก (เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰);
  4. เบ›เบฐเบ•เบดเบเบดเบฅเบดเบเบฒเบ•เปเปˆเบฎเบนเบšเบฅเบฑเบเบชเบฐเบ™เบฐ / เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ›เปˆเบฝเบ™เบ‚เบฐเบซเบ™เบฒเบ”, เบ›เปˆเบฝเบ™เบชเบฐเบšเบฑเบš, เปเบฅเบฐเบญเบทเปˆเบ™เป†);
  5. reacts เบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš (เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™ เบŠเบธเบ”เบˆเบณเบฅเบญเบ‡, เบซเบกเบฒเบเป€เบ›เบฑเบ™เบเบฑเบ, เบšเปเบฅเบดเบเบฒเบ™ เปเบฅเบฐ เบญเบทเปˆเบ™เป†.);
  6. เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”:
    1. เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰ Kubernetes API เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ (เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡ เบŠเบธเบ”เบˆเบณเบฅเบญเบ‡, เบซเบกเบฒเบเป€เบ›เบฑเบ™เบเบฑเบ, เบšเปเบฅเบดเบเบฒเบ™... ),
    2. เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ magic เบšเบฒเบ‡เบขเปˆเบฒเบ‡ (เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบ‡เปˆเบฒเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบดเบ”เบงเปˆเบฒ Operator เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ pods เบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐเป‚เบ—เบซเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบเบธเปˆเบกเบซเบผเบทเบเบปเบเบฅเบฐเบ”เบฑเบšเบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบชเบฐเบšเบฑเบš).

เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบชเปเบฒเบฅเบฑเบš Kubernetes: เบงเบดเบ—เบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบฅเบฑเบ”
เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบซเบฑเบ™เป„เบ”เป‰เบˆเบฒเบเบฎเบนเบš, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบกเปˆเบ™เป€เบžเบตเปˆเบกเบžเบฝเบ‡เปเบ•เปˆ Kubernetes (เบ›เบปเบเบเบฐเบ•เบด เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” ั เบŠเบธเบ”เบˆเบณเบฅเบญเบ‡), เป€เบŠเบดเปˆเบ‡เป€เบญเบตเป‰เบ™เบงเปˆเบฒ Operator. เบกเบฑเบ™เบญเบฒเป„เบชเบขเบนเปˆเปƒเบ™เบเบฑเบเบ—เปเบฒเบกเบฐเบ”เบฒ (เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡) เปเบฅเบฐ, เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš, เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™ Namespace. เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบ™เบตเป‰เบ›เบฐเบ•เบดเบšเบฑเบ” API เบ‚เบญเบ‡เบกเบฑเบ™ - เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเปเบกเปˆเบ™เป‚เบ”เบเบเบปเบ‡, เปเบ•เปˆเบœเปˆเบฒเบ™ เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก เปƒเบ™ Kubernetes.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เปƒเบ™ Namespace เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบกเบฑเบ™ เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเปเบฒเบฅเบฑเบšเปเบฅเบฐเบญเบทเปˆเบ™เป† (เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”):

apiVersion: etcd.coreos.com/v1beta1
kind: Cluster
metadata:
  name: example-etcd-cluster
spec:
  size: 3
  version: 3.1.0

เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเปเบฒเบฅเบฑเบš Elasticsearch:

apiVersion: enterprises.upmc.com/v1
kind: ElasticsearchCluster
metadata:
  name: example-es-cluster
spec:
  client-node-replicas: 3
  master-node-replicas: 2
  data-node-replicas: 3
  zones:
  - us-east-1c
  - us-east-1d
  - us-east-1e
  data-volume-size: 10Gi
  java-options: "-Xms1024m -Xmx1024m"
  snapshot:
    scheduler-enabled: true
    bucket-name: elasticsnapshots99
    cron-schedule: "@every 2m"
  storage:
    type: gp2
    storage-class-provisioner: kubernetes.io/aws-ebs

เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™

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

  1. เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบฎเบฑเบ”เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบ”เบฝเบง เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”: kubectl เบชเป‰เบฒเบ‡ -f SOME_OPERATOR_URL/deployment.yaml - เปเบฅเบฐเบšเปเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.
  2. เป€เบกเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡ Operator เปƒเบ™ Kubernetes, เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบ›เบฐเป€เบžเบ”เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบกเปƒเบซเบกเปˆ (เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก). เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบธเปˆเบก) เปเบฅเบฐเบˆเบฑเบ”เบเบฒเบ™เบžเบงเบเบกเบฑเบ™เบ•เบทเปˆเบกเบญเบตเบ (เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เป€เบงเบตเบŠเบฑเบ™, เบ›เบฑเบšเบ‚เบฐเปœเบฒเบ”, เปเบฅเบฐเบญเบทเปˆเบ™เป†), เบœเบนเป‰เปƒเบŠเป‰เบˆเบฐเปƒเบŠเป‰เบ›เบฐเป€เบžเบ”เบ™เบตเป‰.
  3. เป€เบกเบทเปˆเบญเปƒเบ”เบเปเปˆเบ•เบฒเบกเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบ—เปˆเบฒเบ™เบ„เบงเบ™เปƒเบŠเป‰ primitives เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™ Kubernetes, เป€เบŠเบฑเปˆเบ™: เบšเปเบฅเบดเบเบฒเบ™ ะธ เบŠเบธเบ”เบˆเบณเบฅเบญเบ‡เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ—เบปเบ”เบชเบญเบšเป„เบ”เป‰เบ”เบต เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเป„เบ”เป‰.
  4. เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เปƒเบซเป‰โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เป„เบ›โ€‹เบšเปˆเบญเบ™โ€‹เบ‚เบญเบ‡โ€‹เบœเบนเป‰โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เป€เบเบปเปˆเบฒโ€‹เบ‚เบญเบ‡โ€‹เบŠเบฑเบšโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹เบชเป‰เบฒเบ‡โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ‚เบถเป‰เบ™โ€‹.
  5. เบ–เป‰เบฒเบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ–เบทเบเป‚เบเบเบเป‰เบฒเบ, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบ„เบงเบ™เบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡.
  6. เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹เบ„เบงเบ™โ€‹เบˆเบฐโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เบ—เบตเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เปเบฅเบฐ orchestrate เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹. เบเบฒเบ™เบ‚เบฒเบ”เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบŠเบญเบšเปเบงเปเบกเปˆเบ™เปเบซเบผเปˆเบ‡เบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เปเบฅเบฐเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ•เป‰เบญเบ‡เบŠเปˆเบงเบเบœเบนเป‰เปƒเบŠเป‰เปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰.
  7. เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ„เบงเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ”เป‰เบงเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบŠเบฑเปˆเบ™ Chaos Monkey, เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบงเบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบเบฑเบ, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบฅเบฐเป€เบ„เบทเบญเบ‚เปˆเบฒเบ.

เปเบฅเบฐเบญเบทเปˆเบ™เป† เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™

เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ - เบœเบนเป‰โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบญเบทเปˆเบ™เป†โ€‹, เบเบฐเบเบฝเบก เปƒเบ™เบกเบทเป‰เบ›เบฐเบเบฒเบ”เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰. เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบธเปˆเบก etcd เบชเบฒเบกเบฒเบ”เบชเบฑเบšเบชเบปเบ™เป„เบ”เป‰เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบฎเบฑเบเบชเบฒเบเบธเปˆเบก, เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐ configure เบชเบฐเบกเบฒเบŠเบดเบเบเบธเปˆเบก, เบชเป‰เบฒเบ‡เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบเบธเปˆเบก etcd เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบŠเบทเปˆ DNS เบชเปเบฒเบฅเบฑเบšเบชเบฐเบกเบฒเบŠเบดเบเบเบธเปˆเบกเปƒเบซเบกเปˆ, เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบซเบกเปˆ entity etcd, เปเบฅเบฐเป€เบ•เบทเบญเบ™เบเบธเปˆเบกเบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบกเบฒเบŠเบดเบเปƒเบซเบกเปˆ (เบ•เบทเปˆเบกเบชเบฐเบกเบฒเบŠเบดเบ etcdctl). เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ Operator, เบœเบนเป‰เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบเบธเปˆเบก - เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™เบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.

เปเบฅเบฐเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ etcd เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปƒเบ™ CoreOS, เบกเบฑเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เบ—เบตเปˆเบˆเบฐเป€เบซเบฑเบ™ Operator เบ‚เบญเบ‡เบกเบฑเบ™เบ›เบฒเบเบปเบ”เป€เบ›เบฑเบ™เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”. เบฅเบฒเบงเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™ เปเบฅเบฐเบญเบทเปˆเบ™เป† เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบชเบฒเบกเบญเบปเบ‡เบ›เบฐเบเบญเบš:

  1. เบชเบฑเบ‡เป€เบเบ”. เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบธเปˆเบกเป‚เบ”เบเปƒเบŠเป‰ Kubernetes API.
  2. เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ. เบŠเบญเบเบซเบฒเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบฅเบฐเบญเบฑเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ (เบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบœเบนเป‰เปƒเบŠเป‰).
  3. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบเป‰เป„เบ‚เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ—เบตเปˆเบเบงเบ”เบžเบปเบšเป‚เบ”เบเปƒเบŠเป‰ APIs เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ etcd เปเบฅเบฐ/เบซเบผเบท Kubernetes.

เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบชเปเบฒเบฅเบฑเบš Kubernetes: เบงเบดเบ—เบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบฅเบฑเบ”

เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบซเบ”เบœเบปเบ™เบ™เบตเป‰, เบซเบ™เป‰เบฒเบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเบขเบนเปˆเปƒเบ™ Operator เบชเป‰เบฒเบ‡/เบ—เปเบฒเบฅเบฒเบ (เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เปเบฅเบฐโ€‹เบฅเบถเบšโ€‹เบชเบฐโ€‹เบกเบฒโ€‹เบŠเบดเบโ€‹เบเบธเปˆเบก etcdโ€‹) เปเบฅเบฐโ€‹ Resize (เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบˆเปเบฒเบ™เบงเบ™เบชเบฐเบกเบฒเบŠเบดเบเบเบธเปˆเบก). เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบเบงเบ”เบชเบญเบšเป‚เบ”เบเปƒเบŠเป‰เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡ Chaos Monkey เบˆเบฒเบ Netflix, i.e. เบ‚เป‰เบฒ etcd เบเบฑเบเปเบšเบšเบชเบธเปˆเบก.

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบ‚เบญเบ‡ etcd, Operator เบชเบฐเบซเบ™เบญเบ‡เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก: Backup (เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบšเปเปˆเป€เบซเบฑเบ™เบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบชเป‰เบฒเบ‡เบชเปเบฒเป€เบ™เบปเบฒเบชเปเบฒเบฎเบญเบ‡ - เปƒเบ™ config เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบฅเบทเป‰เบญเบเป†เปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ - เปเบฅเบฐเบเบฒเบ™เบŸเบทเป‰เบ™เบŸเบนเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบžเบงเบเบกเบฑเบ™เบ•เปเปˆเบกเบฒ) เปเบฅเบฐ เบเบฒเบ™เบเบปเบเบฅเบฐเบ”เบฑเบš (เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡ etcd เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™ downtimeโ€‹)โ€‹.

เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Operator เบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเปเบ™เบงเปƒเบ”?

$ kubectl create -f https://coreos.com/operators/etcd/latest/deployment.yaml
$ kubectl create -f https://coreos.com/operators/etcd/latest/example-etcd-cluster.yaml
$ kubectl get pods
NAME                             READY     STATUS    RESTARTS   AGE
etcd-cluster-0000                1/1       Running   0          23s
etcd-cluster-0001                1/1       Running   0          16s
etcd-cluster-0002                1/1       Running   0          8s
etcd-cluster-backup-tool-rhygq   1/1       Running   0          18s

เบชเบฐเบ–เบฒเบ™เบฐเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡ etcd Operator เป€เบ›เบฑเบ™เป€เบงเบตเบŠเบฑเบ™เป€เบšเบ•เป‰เบฒ, เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰ Kubernetes 1.5.3+ เปเบฅเบฐ etcd 3.0+ เปเบฅเปˆเบ™. เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เปเบฅเบฐเป€เบญเบเบฐเบชเบฒเบ™ (เบฅเบงเบกเบ—เบฑเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰) เปเบกเปˆเบ™เบกเบตเบขเบนเปˆ GitHub.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™เบˆเบฒเบ CoreOS เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™ - เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™ Prometheus, เปเบ•เปˆเบกเบฑเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™เบชเบฐเบšเบฑเบš alpha (เบšเปเปˆเปเบกเปˆเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบงเบฒเบ‡เปเบœเบ™เป„เบงเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”).

เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเปเบฅเบฐเบ„เบงเบฒเบกเบชเบปเบ”เปƒเบชเบ”เป‰เบฒเบ™

5 เป€เบ”เบทเบญเบ™เป„เบ”เป‰เบœเปˆเบฒเบ™เป„เบ›เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ‚เบญเบ‡ Kubernetes Operators. เบเบฑเบ‡เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ CoreOS เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™ (เบชเปเบฒเบฅเบฑเบš etcd เปเบฅเบฐ Prometheus). เบ—เบฑเบ‡เบชเบญเบ‡เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบšเบฑเบ™เบฅเบธเบชเบฐเบšเบฑเบšเบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เปเบ•เปˆเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเปเบกเปˆเบ™เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบ›เบฐเบˆเปเบฒเบงเบฑเบ™.

เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™ "เบญเบฐเบ™เบฒเบ„เบปเบ”เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Postgres Operators, Cassandra Operators เบซเบผเบท Redis Operators เบขเบนเปˆเปƒเบ™เบเบธเปˆเบก Kubernetes เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเป„เบ”เป‰เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เบ‡เปˆเบฒเบเป€เบ—เบปเปˆเบฒเบเบฑเบšเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเบ—เบตเปˆเบšเปเปˆเบกเบตเบฅเบฑเบ”เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™." เบ—เปเบฒเบญเบดเบ” เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบˆเบฒเบเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก เบเปเปˆเป€เบฅเบตเปˆเบกเบ›เบฐเบเบปเบ”เบงเปˆเบฒ:

  • เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ Elasticsearch เบˆเบฒเบเบงเบดเบชเบฒเบซเบฐเบเบดเบ” UPMC;
  • PostgreSQL Operator เบˆเบฒเบ Crunchy Data (เบ›เบฐเบเบฒเบ”เปƒเบ™เบ—เป‰เบฒเบเป€เบ”เบทเบญเบ™เบกเบตเบ™เบฒ 2017);
  • Rook Operator เบˆเบฒเบเบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเปเบˆเบเบขเบฒเบเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ Ceph (Rook เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบญเบฑเบ™เบŸเบฒ);
  • เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™ Openstack เบˆเบฒเบ SAP CCloud.

เปƒเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบŠเบญเบšเปเบงเบŸเบฃเบตเบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เป€เบญเบตเบฃเบปเบš FOSDEM, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบˆเบฑเบ”เบ‚เบถเป‰เบ™เปƒเบ™เป€เบ”เบทเบญเบ™เบเบธเบกเบžเบฒ 2017 เปƒเบ™ Brussels, Josh Wood เบˆเบฒเบ CoreOS เป„เบ”เป‰เบ›เบฐเบเบฒเบ”เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เปƒเบ™ เบฅเบฒเบเบ‡เบฒเบ™ (เบงเบดเบ”เบตเป‚เบญเบกเบตเบขเบนเปˆเปƒเบ™เบฅเบดเป‰เบ‡!), เป€เบŠเบดเปˆเบ‡เบ„เบงเบ™เบ›เบฐเบเบญเบšเบชเปˆเบงเบ™เป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบ‚เบญเบ‡เบ„เบงเบฒเบกเบ™เบดเบเบปเบกเบ‚เบญเบ‡เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰เปƒเบ™เบŠเบธเบกเบŠเบปเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบเป‰เบงเบฒเบ‡.

PS เบ‚เบญเบšเปƒเบˆเบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบก! เบˆเบญเบ‡เบชเบนเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบžเบฒเบ”เบญเบธเบ›เบฐเบเบญเบ™ เปเบฅเบฐเบชเบนเบ”เบญเบฒเบซเบฒเบ™เปƒเปเปˆเปƒเบ™ DevOps เปเบฅเบฐเบฅเบฐเบšเบปเบš GNU/Linux เบšเปเบฅเบดเบซเบฒเบ™ - เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบœเบตเบเปเบœเปˆเบžเบงเบเบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเบˆเบณ!

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

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