Kubernetes
Kubernetes — это платформа с открытым исходным кодом, которая автоматизирует операции с контейнерами. Она упрощает многие ручные процессы, связанные с развертыванием и масштабированием упакованных в контейнеры приложений. Таким образом, можно объединять группы хостов, работающих под управлением контейнеров Linux, и Kubernetes поможет эффективно управлять этими кластерами, которые могут охватывать узлы в общедоступных, частных или гибридных облаках. Поэтому Kubernetes является идеальной платформой для размещения облачных приложений, требующих быстрого масштабирования, таких как потоковая передача данных в реальном времени через Apache Kafka.
Kubernetes первоначально был разработан инженерами Google. Компания одной из первых начала работу с контейнерами и публично заявляла, что всё в Google работает в контейнерах. Google генерирует более 2 миллиардов развертываний в неделю – все они работают на внутренней платформе Borg. Borg был предшественником Kubernetes, и уроки, извлеченные из его разработки на протяжении многих лет, значительно повлияли на технологию Kubernetes.
Возможности Kubernetes
Основное преимущество использования Kubernetes, особенно, если необходимо оптимизировать рабочую версию приложения для облака, заключается в получении платформы для планирования и запуска контейнеров на кластерах физических или виртуальных машин. В более широком смысле это помогает полностью реализовать надежную инфраструктуру на основе контейнеров в производственных средах.
С Kubernetes можно:
- организовать контейнеры на нескольких хостах;
- максимально эффективно использовать ресурсы, необходимые для запуска корпоративных приложений;
- управлять и автоматизировать развертывание и обновление приложений;
- монтировать и добавлять хранилища для запуска приложений с отслеживанием состояния;
- масштабировать контейнерные приложения и их ресурсы “на лету”;
- проверять работоспособность и самовосстановление приложений с помощью автозаполнения, автозапуска, авторепликации и автомасштабирования.
Однако Kubernetes полагается на другие проекты, чтобы полностью обеспечить все возможности. С помощью других open-source проектов можно реализовать весь потенциал Kubernetes:
- реестр – через проекты Atomic Registry или Docker Registry;
- сети – через OpenvSwitch and intelligent edge routing;
- телеметрия – через heapster, kibana, hawkular и elastic;
- безопасность – через LDAP, SELinux, RBAC и OAUTH;
- автоматизация – с добавлением Ansible playbooks для управления жизненным циклом установки и кластера.
Некоторые наиболее распространенные термины, которые помогут понять Kubernetes:
- Master – машина, управляющая узлами (нодами) Kubernetes.
- Узел (нода) – машины, выполняющие назначенные задачи. В Kubernetes их контролирует мастер.
- Pod – группа из одного или нескольких контейнеров, развернутых на одном узле. Все контейнеры в поде совместно используют IP-адрес, IPC, имя хоста и другие ресурсы. Поды абстрагируют сеть и хранилище от базового контейнера. Это позволяет более легко перемещать контейнеры внутри кластера.
- Replication controller – определяет, сколько идентичных копий пода должно быть запущено внутри кластера.
- Service – отделяет рабочие определения от подов. Прокси-серверы службы Kubernetes автоматически получают запросы на обслуживание нужного пода независимо от того, куда он перемещается в кластере.
- Kubelet – эта служба работает на нодах и считывает манифесты контейнеров, а также обеспечивает их запуск и выполнение.
- Kubectl – средство настройки командной строки для Kubernetes.