эта статьяGitHub.com/smile Arch IT…Записано.
JavaMap — это карта знаний Java, предназначенная для того, чтобы разработчики могли учиться, не теряясь! Изучение Java, пожалуйста, ищите JavaMap.
По мере того, как k8s становится все более и более популярным в качестве решения для оркестрации контейнеров, некоторые люди начинают сравнивать Docker и k8s и не могут не задаться вопросом: разве Docker не вкусный?
k8s — это сокращение от kubernets, а «8» представляет собой восемь символов в середине.
На самом деле Docker и k8s не являются прямыми конкурентами, они взаимозависимы. Docker — это платформа контейнеризации, а k8s — координатор контейнерных платформ, таких как Docker.
Эра контейнеризации наступила
Технология виртуализации прошла через три эпохи, и без эволюции технологии контейнеризации технология Docker не родилась бы.
(1) Эпоха физических машин: на одной машине может работать несколько приложений.
(2) Эпоха виртуальных машин: на одной физической машине устанавливается несколько виртуальных машин (ВМ), а на одной виртуальной машине выполняется несколько программ.
(3) Эпоха контейнеризации: на одной физической машине устанавливается несколько экземпляров контейнера (контейнеров), а на одном контейнере выполняется несколько программ.
Контейнеризация решает очень большую головную боль в процессе разработки программного обеспечения, описанную в диалоге:
Тестировщик: У вас проблема с этой функцией.
Разработчик: Мой местный в порядке.
Разработчики пишут код и развертывают код в тестовой или производственной среде после тестирования в своей локальной среде, часто сталкиваясь с различными проблемами. Есть много причин, по которым код, который отлично работает локально, имеет много ошибок после развертывания: разные операционные системы, разные зависимые библиотеки и т. д. Подводя итог, можно сказать, что локальная среда и удаленная среда несовместимы.
Технология контейнеризации решает эту ключевую проблему, отделяя программу от базовой среды, в которой она работает. После того, как разработчики закончили писать код, они упаковывают программу в образ контейнера, в котором подробно перечислены зависимые среды, и запускают стандартизированные образы в разных контейнерах, что принципиально решает проблему несовместимости сред.
Острое оружие технологии контейнеризации
-
портативность: не зависит от конкретной операционной системы или облачной платформы, например прямой случайной миграции в Alibaba Cloud или Tencent Cloud.
-
Маленький след: Контейнеру нужен только список зависимостей его приложения и всех контейнеров и библиотек, которые ему нужны для запуска, нет необходимости упаковывать все зависимые библиотеки вместе.
-
общий бин и библиотека: разные контейнеры могут совместно использовать bin и lib, что еще больше экономит место.
Докер родился
В 2010 году молодой человек основал компанию [dotCloud] в Сан-Франциско, США, и разработал базовую технологию Docker, открыв тем самым эру контейнерных технологий.
Позже компания dotCloud упростила и стандартизировала собственную контейнерную технологию и назвала ее Docker, что является знакомым логотипом кита.
В 2013 году dotCloud объявила, что исходный код Docker будет открытым.По мере того, как все больше и больше инженеров обнаруживали его преимущества, популярность Docker быстро росла, и в то время он стал одной из самых популярных технологий с открытым исходным кодом.
В настоящее время более 30 % предприятий используют Docker в своих средах AWS, и это число продолжает расти.
Как используется Докер?
На самом деле большинство людей, говорящих о Docker, имеют в виду Docker Engine, который представляет собой просто контейнер для сборки и запуска.
Перед запуском контейнера необходимо написать файл Docker, сгенерировать образ через dockerFile, а затем запустить контейнер Docker.
Файл Docker определяет все необходимое для запуска образа, включая операционную систему и место установки программного обеспечения. В общем, вам не нужно писать Docker File с нуля, в Docker Hub есть образы, написанные инженерами со всего мира, и вы можете модифицировать их на основе этого.
Спрос на систему оркестровки породил k8s
Хотя Docker предоставляет открытый стандарт для контейнерных приложений, с ростом числа контейнеров возникает новый набор проблем:
- Как координировать и планировать эти контейнеры?
- Как я могу обновить приложение без прерывания обслуживания?
- Как следить за работоспособностью приложения?
- Как выполнить пакетный перезапуск программ в контейнерах?
Для решения этих проблем требуется технология оркестрации контейнеров, которая может абстрагировать множество машин и представить большую машину внешнему миру. Сейчас наиболее популярными в отрасли являются: k8s, Mesos, Docker Swarm.
На ранней стадии развития бизнеса микросервисов немного, и в это время достаточно Docker, однако по мере постепенного расширения масштабов бизнеса контейнеров становится все больше, а работа эксплуатационного и обслуживающего персонала становится все более и более значимой. сложнее.В настоящее время для сохранения операторов необходима система оркестрации.
Зрелая система оркестрации контейнеров должна иметь следующие возможности:
-
Обработка большого количества контейнеров и пользователей
-
балансировки нагрузки
-
Аутентификация и безопасность
-
Управление сервисными коммуникациями
-
Мультиплатформенное развертывание
Недовольство между k8s и Docker Swarm
Если вам нужно сравнить Docker с k8s, вам следует сравнить Docker Swarm с k8s.
Docker Swarm — это собственное решение Docker для управления кластерным развертыванием, которое имеет очевидные преимущества и может быть более тесно интегрировано в экосистему Docker.
Хотя Swarm является сыном Docker, он все же не так популярен, как k8s.Непопулярность во многом связана с коммерческими и экологическими причинами, так что особых объяснений нет.
Для чего используется k8s?
K8s — это координатор контейнеров, разработанный Google, который был передан в дар CNCF и теперь имеет открытый исходный код.
Google запустил k8s с многолетним опытом и знаниями в области управления контейнерами, который в основном используется для автоматизации развертывания контейнеров приложений и может поддерживать множество инструментов контейнеризации, включая очень популярный сейчас Docker.
В настоящее время k8s является лидером на рынке оркестрации контейнеров: компания открыла исходный код и анонсировала ряд стандартизированных методов, а основные общедоступные облачные платформы объявили о своей поддержке.
Первоклассные производители захватывают командные высоты стандарта, а кучка мелких производителей подыгрывает, что называется экология. Что делают крупные отечественные производители? Возьмите рынок покупок групп сообщества и играйте в капитальные игры, а? !
Архитектура и компоненты K8s
k8s состоит из множества компонентов, которые взаимодействуют друг с другом через API и в основном разделены на три части:
- controller manager
- nodes
- pods
-
Controller Manager, плоскость управления, используемая для планировщика и определения состояния узла.
-
Nodes, который представляет собой коллективную вычислительную мощность кластера Kubernetes, где фактически развертываются контейнеры для работы.
-
Pods, наименьшая единица ресурсов в кластере Kubernetes.
Docker и k8s неразделимы
Docker и k8s очень популярны в отрасли и уже являются стандартами де-факто.
Docker — это платформа и инструмент для создания, распространения и запуска контейнеров.
На самом деле k8s — это система, которая использует контейнеры Docker для оркестровки, в основном работая с модулями. Поды — это наименьшая единица планирования в экосистеме k8s, которая может содержать один или несколько контейнеров.
Docker и k8s — это принципиально разные технологии, которые хорошо работают вместе.
Практика развития, исследование души
(1) Можно ли использовать докер без k8s?
Может. Фактически, некоторые небольшие компании используют Docker напрямую, когда их бизнес не слишком сложен. Хотя k8s имеет много преимуществ, хорошо известно, что он очень сложен, а бизнес относительно прост и от использования k8s можно отказаться.
(2) Можно ли использовать k8s без Docker?
k8s — это просто оркестратор контейнеров, что такое оркестровка без контейнера? !
k8s часто используется с Docker, но можно использовать и другие контейнеры, такие как RunC, Containerted и т. д.
(3) Как выбрать Docker Swarm и k8s?
Выбирайте к8с. В конце 2019 года Docker Enterprise была продана Mirantis.Mirantis объявила, что Docker Swarm будет прекращен, а k8s будет использоваться в качестве инструмента оркестровки по умолчанию в будущем.
последний вопрос
Разве Докер не вкусный? Зачем использовать k8s
Docker очень ароматный, но k8s нужно включать после того, как бизнес достигнет определенного масштаба. Вы узнали это?
-- END --
Ежедневные нахальные просьбы о похвале: Привет, технари, сначала похвали, а потом смотри, выработай привычку, не занимайся проституцией по пустякам.
Об авторе: ☕Я читаю книги уже несколько лет: окончил Хуачжунский университет науки и технологий со степенью магистра;
😂 Проехал мимо нескольких крупных заводов: Huawei, NetEase, Baidu...
😘 Я всегда верил, что технологии могут изменить жизнь, я готов сохранить первоначальный замысел и давай техников!Wechat поищите общедоступный номер [Архитектор, который любит смеяться] и обратите внимание на этого технического человека, который преследует технологии и жизнь.
Наконец, я рекомендую проект с открытым исходным кодом,GitHub.com/smile Arch IT…
JavaMap — это карта знаний Java, позволяющая разработчикам учиться, не теряясь! Изучение Java, пожалуйста, ищите JavaMap.
Завершение базовых знаний JAVA (283 страницы, очень подробно) бесплатно.