La виртуализация стала очень распространенной практикой, особенно в облачных сервисах, чтобы получить максимальную отдачу от серверов в центрах обработки данных. Но в последнее время навязывается виртуализация на основе контейнеров, поскольку она позволяет гораздо более эффективное управление (за счет отсутствия необходимости дублировать определенные процессы). И именно на этом пике возникают битвы между Docker и Kubernetes.
Два очень популярных проекта, о которых вы, наверное, уже знаете. Оба с его достоинства и недостатки, а также с отличиями это может быть ключевым моментом, когда нужно помочь вам выбрать проект в соответствии с вашими потребностями ...
Что такое виртуализация на основе контейнеров?
Как известно, есть несколько типы виртуализациитакие как полная виртуализация, паравиртуализация и т. д. Что ж, в этом разделе я сосредоточусь на полной виртуализации, которая обычно используется при монтировании виртуальных машин и контейнеров, чтобы не вводить другие переменные, которые могут вас запутать.
- Виртуальные машины- Это подход виртуализации, ориентированный на охват. Он основан на гипервизоре, таком как KVM, Xen, или таких программах, как VMWare, VirtualBox и т. Д. С помощью этого программного обеспечения эмулируется вся физическая машина (vCPU, vRAM, дисковые накопители, виртуальные сети, периферийные устройства и т. Д.). Таким образом, операционная система (гость) может быть установлена на этом виртуальном оборудовании, и оттуда приложения могут быть установлены и запущены таким же образом, как и в операционной системе хоста.
- контейнеры: Это еще одна технология, в которой соединяется своего рода клетка или песочница, в которой можно обойтись без некоторых частей этой полной системы, что более эффективно и имеет некоторые преимущества переносимости и дополнительной безопасности (хотя и не лишено уязвимостей). . Фактически, вместо гипервизора в этих случаях есть программное обеспечение, такое как Docker и Kubernetes, которое будет использовать саму хост-систему для запуска изолированных приложений. Обратной стороной является то, что он позволяет развертывать собственные приложения только из самой ОС хоста. То есть, в то время как в виртуальной машине вы можете виртуализировать Windows, например, в дистрибутиве Linux, и в этой Windows вы можете запускать для нее любое собственное приложение, в контейнере вы можете делать это только с приложениями, поддерживаемыми хост-системой, в этом случай с линуксом ...
Помните, что расширения или поддержка аппаратная виртуализацияПодобно Intel VT и AMD-V, им удалось немного улучшить производительность, предполагая лишь 2% накладных расходов процессора. Но это не относится к другим ресурсам, таким как память или само хранилище, выделенное для полной виртуализации, что означает значительную потребность в ресурсах.
Все это решают контейнеры, которые не нужно дублировать определенные процессы чтобы иметь возможность развернуть приложение. Например, если вы хотите создать контейнер с сервером Apache, с полной виртуальной машиной, у вас будет операционная система хоста, гипервизор, гостевая операционная система и программное обеспечение для этой службы. С другой стороны, с контейнером у вас должно быть только программное обеспечение, реализующее эту службу, поскольку оно будет работать в «ящике» изолированно и с использованием самой операционной системы хоста. Кроме того, запуск приложения происходит намного быстрее за счет исключения гостевой ОС.
Что такое докер?
Docker - это проект с открытым исходным кодом под лицензией Apache, написанный на языке программирования Go и используемый для автоматизации развертывания приложений в контейнерах. То есть эта программа позволит вам управлять контейнерами в разных операционных системах, так как работает на нескольких платформах.
Когда появился Докер, у него было много преимуществ, и он быстро распространился. Его изолированное видение операционной системы и простота позволили создавать контейнеры с приложениями, развертывать их, масштабировать и быстро выполнять. Способ запускать все необходимые приложения с минимальным потреблением ресурсов.
Таким образом, Docker предлагает следующее характер ключ:
- Изоляция от окружающей среды.
- Управление контейнерами.
- Управление версиями.
- Расположение / близость.
- Ловкость.
- Производительность.
- Эффективность.
Перо это было не без определенных проблемНапример, когда эти контейнеры должны были координироваться, общаться друг с другом. Это была одна из причин, которые привели к созданию Kubernetes ...
Как я прокомментирую позже Докер Рой, Я хотел бы отметить, что это программное обеспечение, созданное одними и теми же разработчиками Docker, чтобы иметь возможность группировать серию хостов Docker в кластер и, таким образом, централизованно управлять кластерами в дополнение к оркестровке контейнеров.
Что такое Kubernetes?
Первоначально он был создан Google, а затем передан в фонд Cloud Native Computing Foundation. Kubernetes Это также система, похожая на Docker, с открытым исходным кодом, лицензированная под Apache и написанная с использованием языка программирования Go. Он используется для автоматизации развертывания контейнерных приложений и управления ими. Кроме того, он поддерживает разные среды для запуска контейнеров, включая Docker.
В конечном итоге Kubernetes - это оркестровая установка контейнер, который отвечает за помощь различным контейнерам разных машин, управление ими и распределение груза между ними. Именно эта организация сделала этот проект неотъемлемой частью подобных сценариев ...
- Автоматизированное планирование.
- Возможности самовосстановления.
- Автоматическое развертывание и развертывание.
- Балансировка нагрузки и горизонтальная шкала.
- Более высокая плотность использования ресурсов.
- Функции, ориентированные на бизнес-среду.
- Централизованное управление приложениями.
- Самомасштабируемая инфраструктура.
- Декларативная конфигурация.
- Надежность.
Докер против Kubernetes
Как вы можете видеть из определения, оба во многом очень похожи, но у вас есть их отличия, а также наличие достоинств и недостатков все нравится. Вы можете подумать, что зная эти детали, у вас будет все, чтобы знать, какой из них выбрать, в зависимости от вашей цели.
Однако проблема это что-то более сложное, чем это. Речь идет не о Docker vs Kuernetes, поскольку это было бы похоже на сравнение очень разных вещей, и вы ошиблись бы, полагая, что вам нужно выбирать между одним и другим. Результат Docker vs Kubernetes абсурден, скорее вам следует связать обе технологии вместе, чтобы иметь возможность доставлять и масштабировать контейнерные приложения более эффективным способом.
Самым подходящим будет сравнение Docker Swarm с Kubernetes. Это было бы более успешным, поскольку Docker Swarm - это технология оркестровки Docker для создания кластеров для контейнеров. Хотя даже в этом случае это не будет полностью успешным ... Фактически, Kubernetes был разработан для работы в кластере, имея возможность эффективно координировать кластеры узлов в масштабе в производственной среде, в то время как Docker делает это в одном режиме.
Различия между Docker и Kubernetes
Сохраняя эти разные, если вы хотите знать расхождения между Docker Swarm и Kubernetes они будут:
- Kubernetes включает множество опций для воплощение отсутствует в Docker Swarm.
- Docker Swarm - это более легко настраивать за счет простоты. Кроме того, его также проще интегрировать в экосистему Docker.
- Вместо этого Отказоустойчивость Kubernetes выше, что может быть более позитивным в таких средах, как серверы с высокой доступностью.
- Docker Swarm - это быстрее относительно развертывания и расширения контейнеров.
- Kubernetes со своей стороны предлагает большие гарантии к состояниям кластера.
- El балансировки нагрузки в Kubernetes это позволяет лучше балансировать, хотя и не является автоматическим, как в Docker.
- Kubernetes предлагает лучшая гибкостьдаже в сложных приложениях.
- Docker Swarm будет поддерживать до 2000 узлыпо сравнению с 5000 в Kubernetes.
- Kubernetes - это оптимизированный для многих небольших кластеров, а Dockers - для большого кластера.
- Kubernetes - это сложный, Упрощенный докер.
- Kubernetes может позволить разделять места для хранения между любым контейнером, в то время как Docker более ограничен и используется только между контейнерами в одном модуле.
- Docker Swarm позволяет использовать стороннее программное обеспечение для регистрации и мониторинга Kubernetes включает собственные встроенные инструменты.
- Docker Swarm ограничен до 95.000 единиц. контейнеры, в то время как Kubernetes может поддерживать до 300.000.
- Хотя у Docker есть большое сообщество Kubernetes также поддерживают такие компании, как Microsoft, Amazon, Google и IBM.
- Докер используется компании например Spotify, Pinterest, eBay, Twitter и т. д. В то время как Kubernetes предпочитает 9GAG, Intuit, Buffer, Evernote и т. Д.
преимущество
Увидев некоторые расхождения, теперь очередь преимущества каждый:
- Kubernetes:
- Простая организация обслуживания с капсулами.
- Разработано Google с большим опытом работы в облачной индустрии.
- Огромное сообщество и инструменты оркестровки контейнеров.
- Разнообразные варианты хранения, включая локальные сети SAN и общедоступные облака.
- Docker:
- Эффективная и простая первоначальная настройка.
- Позволяет отслеживать версии контейнера для изучения вариантов.
- Быстро.
- Очень хорошая документация.
- Хорошая изоляция между приложениями.
недостатки
О недостатки:
- Kubernetes:
- Более сложные миграции.
- Сложный процесс установки и настройки.
- Несовместимо с существующими инструментами Docker.
- Реализовать ручной кластер сложно.
- Docker:
- Он не предоставляет возможности для хранения.
- Плохое продолжение.
- Нет автоматического перепрограммирования неактивных узлов.
- Действия необходимо выполнять в CLI.
- Ручное управление несколькими экземплярами.
- Вам нужна поддержка других инструментов.
- Сложное ручное развертывание кластера.
- Нет поддержки проверки работоспособности.
- Docker - это коммерческая компания, и некоторые из ее критических компонентов, таких как Docker Engine и Docker Desktop, не имеют открытого исходного кода.
Докер против Kubernetes: заключение
Как вы понимаете, не так-то просто выбрать между одним или другим. Битва Docker vs Kubernetes сложнее, чем может показаться. И все будет зависеть от поставленной перед вами цели. Тот или другой подойдет лучше, и это должно быть вашим выбором.
Во многих других случаях использование Kubernetes с Docker будет лучшим из всех вариантов. Оба проекта хорошо работают вместе. Это может улучшить безопасность инфраструктуры и высокую доступность приложений. Вы даже можете сделать приложения более масштабируемыми.
Большое спасибо ! Мне становится все яснее, и прежде всего я понимаю, что, как и во многих случаях, нет ничего лучше или хуже, если не о выборе наиболее подходящего.
Может быть, мне просто нужен более ясный пример, чтобы понять, в каком сценарии тот или иной работает лучше, а в каком - использовать их вместе.
Кроме того, какие у нас есть альтернативы этому типу программного обеспечения?
И что может использовать мы, начинающие разбираться в контейнерах, чтобы увидеть реальные кейсы, не дожидаясь работы в крупных компаниях?
Думаю, здесь что-то неправильно определено, докер - это диспетчер контейнеров, его нельзя сравнивать с оркестратором.
Сравнение будет между Docker Swarm и Kubernetes.
Видимо, при создании этого великолепного поста (на мой взгляд, действительно интересного) некоторые термины были пересечены.