== Плюсы контейнеров == * Простота и эффективность создания образа контейнера по сравнению с виртуальной машиной * Надёжный deploy и rollback. Можно обеспечить надёжную и частую сборку, развёртывания приложения с лёгким и простым откатом благодаря неизменному образу. * Разделение задач между Dev и Ops. Можно создавать образ контейнеров приложения во время сборки а не во время развёртывания приложения тем самым отделяя приложения от инфраструктуры. * Идентичная окружающая среда при разработке, тестирование и релизе. На ноутбуке работает всё также как и в облаке. * Изоляция ресурсов: предсказуемая производительность приложения. Производительной среде надо управлять контейнерами, перезапустить другой контейнер в случае отказа одного, контролировать чтоб не было простоев не было бы проще если это поведение обрабатывалось системой? Здесь приходит kubernetes на помощь, это отличный способ создавать и запускать приложения. **Kubernetes** даёт нам **Framework** для гибкой работы распределённых систем. Он занимается масштабированием и обработки ошибок в приложение, предоставляет шаблоны развёртывание и.м.д.. Например Kubernetes может легко управлять канареечным развёртыванием вашей системы.
== Kubernetes предоставляет нам == * service discovery и распределение нагрузки. При запуске приложения в кластере Kubernetes знает его IP-Адресс и сможет обратится к нему по DNS имени сервиса. * управление хранилищами. Kubernetes позволяет при монтировать любой локальный диск,[[https://documentation.ubuntu.com/lxd/en/latest/reference/storage_ceph/|RBD хранилище Ceph]], [[https://aws.amazon.com/ebs/|Amazon EBS]] и многие другие хранилища к одному или нескольким контейнеров * автоматическое распределение нагрузки. При описание контейнера задаются нужные ресурсы (CPU,RAM) и kubernetes запустит приложение на узлах так что получается наилучшие использования ресурсов * автоматическое обновление и rollback. * самовосстановление. Kubernetes пере запускает отказавшие контейнеры, останавливает не работоспособные контейнеры и не даёт их запуска.