Много слышали о Kubernetes, но не уверены, что это такое?
Что такое Kubernetes?
Kubernetes – это инструмент с открытым исходным кодом, который заботится о оркестровке контейнеров.
Он автоматизирует развертывание контейнера, непрерывное масштабирование и удаление, балансировку нагрузки контейнеров и т. д.
Google изначально разработал Kubernetes на языке программирования Go.
В настоящее время это лидер на рынке оркестрации контейнеров. Kubernetes – это идеальная платформа для размещения приложений микросервисов, которые динамически масштабируются.
Когда вы работаете в производственной среде, Kubernetes является наиболее предпочтительной и безопасной платформой для оркестрации контейнеров.
Поскольку в производственной среде вы ожидаете нулевого времени простоя, ваш кластер всегда должен быть в рабочем состоянии.
Облачная платформа Google (GCP) позволяет запускать Kubernetes всего за несколько кликов.
Она поддерживается другими облачными провайдерами, такими как AWS и Azure.
И есть несколько доступных управляемых платформ Kubernetes.
Почему Kubernetes ?
Ранее борьба между разработчиками и тестировщиками была обычным делом.
Среды раньше были разными для всех; то, что работало в системе разработчика, не работало в системе тестеров.
Теперь, когда большинство организаций используют контейнеры, проблемы, возникающие из-за различий в среде, больше не возникают.
Но организация и запуск нескольких контейнеров также не простая задача.
Когда вы работаете с динамическими приложениями, масштабируя их вверх / вниз, количество контейнеров является обычным делом.
Выполнение таких задач вручную может быть сложным и рискованным.
Следовательно, необходим инструмент оркестрации контейнеров, и именно поэтому нужен Kubernetes.
Особенности Kubernetes
Их много, но ниже приведены некоторые из лучших.
# Автоматическая упаковка
Kubernetes упаковывает ваше приложение и автоматически размещает контейнеры в соответствии с их требованиями и доступными ресурсами
# Обнаружение службы и балансировка нагрузки
Kubernetes автоматически устанавливает систему хранения по вашему выбору.
# Оркестровка хранилищ
Это может быть локальное хранилище или провайдер общедоступного облака, такой как AWS.
# Самовосстановление
Всякий раз, когда Kubernetes обнаруживает, что один из ваших контейнеров вышел из строя, он самостоятельно перезапускает этот контейнер и создает новый контейнер вместо сломаного.
В случае сбоя вашего узла контейнеры, работающие на этом узле, будут запущены на другом работающем узле в кластере.
# Горизонтальное масштабирование
Вы можете быстро масштабировать свои приложения с помощью простой команды.
Эта команда может быть запущена на CLI или через панель управления Kubernetes.
Также возможно автоматическое масштабирование, в зависимости от загрузки процессора, ваши контейнеры будут автоматически увеличиваться или уменьшаться.
# Автоматический откат
Всякий раз, когда происходит обновление вашего приложения, Kubernetes постепенно разворачивает эти изменения и обновления для приложения или его конфигураций.
Не все экземпляры обновляются одновременно, что обеспечивает высокую доступность.
Если что-то пойдет не так, то Kubernetes немедленно откатит то, что изменится.
Kubernetes терминология
Прежде чем вы запачкаете руки, вам необходимо знать несколько терминов, используемых в Kubernetes регулярно.
# Pod
# Service
# Namespace
# Node
Узел кластера Kubernetes
# Cluster
# Annotation
Метка для хранения данных, необходимых для ресурсов.
# Volume
# ReplicaSet
# Label
# Kubelet
# Kubectl
# Kube-proxy
Сетевой прокси, который содержит все сетевые правила на каждом узле в кластере.
Kubernetes и Docker
Docker – это платформа, которая упаковывает ОС, библиотеки и приложения внутри контейнера.
Но с Kubernetes все становится автоматизированным.
Kubernetes может планировать поды, в которых есть контейнеры, а затем Kubelet говорит Docker запускать или останавливать контейнеры.
Итак, основное отличие состоит в том, что вместо администраторов, которые говорят Docker, что делать, в Kubernetes все автоматизировано.
Для оркестрации контейнеров используется еще один инструмент – Docker Swarm.
Kubernetes vs. Docker Swarm
Kubernetes | Docker Swarm |
Установка сложна | Установка проста |
Большое комьюнити | Маленькое комьюнити |
Может легко организовать сотни контейнеров
|
Хорош для оркестровки 10-20 контейнеров
|
Kubernetes Dashboard предоставляет графический интерфейс
|
Нет графического интерфейса (Можно конечно доставить Portainer)
|
Поддерживает автоматическое масштабирование
|
Не поддерживает автоматическое масштабирование
|
Поддерживает непрерывные обновления с автоматическим откатом
|
Поддерживает непрерывные обновления, но не автоматический откат
|
Ведение журналов и мониторинг доступны и встроенные |
Требуется сторонние приложения, такое как ELK для ведения журнала и мониторинга
|
Можно разделить хранилище контейнерам в одном поде
|
Может разделить хранилище любым контейнерам в кластере
|
Заключение
Я надеюсь, что теперь у вас есть общее представление о том, что такое Kubernetes и как он помогает в DevOps.