Эта статья написанаКоманда Tencent по технологии облачных контейнеровВпервые опубликовано в Tencent Cloud + Community
1. Предпосылки
Kubernetes очень популярен, и большое количество интернет-компаний уже сделали шаг вперед и создали проприетарные платформы PaaS.Традиционные предприятия увидели тенденцию Kubernetes, и они не сильно отстают, и они все время движутся по дороге. проверить воду...
Хотя Kubernetes очень популярен, это не значит, что его можно «готовить к использованию», а оркестрация контейнеров на основе Kubernetes — это не простое «использование». В кругу контейнеров, помимо Kubernetes, также есть инструменты управления контейнерными кластерами, принадлежащие к разным лагерям, такие как Mesos и Swarm, а также несколько поставщиков облачных контейнеров, основанных на этих инструментах.
В конце 2016 года компания Tencent Cloud решила разработать контейнерные продукты, а затем создала команду контейнерных технологий и провела технический отбор.Посредством анализа и сравнения различных инструментов оркестрации Kubernetes был окончательно выбран в качестве механизма оркестрации контейнеров, а контейнер Решение CCS было быстро запущено в начале 2017 года. Пользователям предоставляется универсальный сервис для хостинга Kubernetes.
С увеличением объема бизнеса, основанного на Kubernetes, команда контейнеров Tencent Cloud постоянно добавляла и улучшала ключевые функции, такие как мониторинг контейнеров, обработка журналов и реестр контейнеров, чтобы обеспечить бесперебойную работу бизнеса пользователей. На протяжении всей своей деятельности в 2017 году компания управляла тысячами кластеров, сотнями тысяч контейнеров и удваивала свои мощности в часы пик.
Тогда, в конце 2016 года, когда Kubernetes не был очень популярен, почему Tencent Cloud выбрала Kubernetes среди многих основных механизмов оркестровки? Какова архитектура Tencent Cloud Kubernetes и принцип планирования ресурсов? В службе размещения пользователей зачем использовать Kubernetes для размещения мастера пользовательского кластера Kubernetes? Как крупнейший поставщик контейнерных услуг на основе Kubernetes в Китае, какие еще практики применения Tencent Cloud использует для Kubernetes... В этой статье мы ответим на эти вопросы, чтобы один за другим раскрыть тайну PaaS-платформы Tencent Cloud на основе Kubernetes.
2. Почему стоит выбрать Kubernetes?
Контейнерная технология, несомненно, является одной из самых популярных технологий в последние годы.Многие компании или отрасли использовали контейнеры в качестве собственной среды тестирования и формальной среды для официального ведения некоторых предприятий. Tencent следует тенденции развития внешних технологий.Три года назад отдел базовой платформы Tencent Cloud начал техническую практику контейнеров.После трех лет накопления Tencent Cloud теперь имеет много предприятий, работающих на контейнерной платформе.
На начальном этапе выбора технологии контейнерных продуктов Tencent Cloud также сравнила Kubernetes, Docker Swarm и Mesos:
Суть Kubernetes заключается в том, как автоматически развертывать, масштабировать и управлять контейнерными приложениями. Он поддерживает планирование ресурсов, обнаружение служб, оркестровку служб, логическую изоляцию ресурсов, самовосстановление служб, управление конфигурацией безопасности и т. д.
Mesos представляет собой распределенное ядро.Основной концепцией является операционная система центра обработки данных (DCOS).Чтобы решить проблемы сети, вычислений и хранения на уровне IaaS, ядром Mesos является решение проблемы уровня физических ресурсов. Он также поддерживает несколько фреймворков, таких как Marathon, Kubernetes и Swarm, а Mesosphere также является членом экосистемы Kubernetes.
Swarm: Начиная с версии Docker 1.12, Swarm устанавливается и выпускается вместе с Docker по умолчанию, а поскольку он выпускается с движком Docker, дополнительная установка не требуется, а настройка проста. Он поддерживает регистрацию служб, обнаружение служб, встроенную оверлейную сеть и балансировщик нагрузки. Swarm — это рабочая команда, очень похожая на Docker CLI, которую очень легко освоить тем, кто знаком с Docker.
Подводя итог, каждый инструмент имеет свою собственную основную концепцию.
Тем не менее, Tencent Cloud наконец выбрала Kubernetes, и теперь это кажется правильным выбором. С точки зрения выбора технологии, в дополнение к основным функциям самого механизма оркестровки, Tencent Cloud также в основном оценивается по следующим аспектам.
Примечание. Материалы в таблице основаны на исследованиях на момент первоначального выбора, а характеристики вышеупомянутых инструментов компоновки были изменены.
С точки зрения всей отрасли, отраслевая техническая архитектура переносится на микросервисы в больших масштабах.Контейнерная технология по своей сути является лучшим способом развертывания микросервисов.Tencent Cloud предлагает большое количество бизнес-архитектур, а использование Kubernetes упрощает для развертывания крупномасштабных микросервисов. Легко, это основная причина, по которой Tencent Cloud выбирает Kubernetes. Кроме того, Tencent Cloud также учитывает другие преимущества при выборе Kubernetes, такие как:
Рожденный в знаменитом Google, на его разработку и дизайн повлияла знаменитая система Google Borg;
Есть много разработчиков, которые следят за проектами Kubernetes и отправляют код на GitHub, и сообщество активно.Если вы столкнетесь с проблемами, скорость консультации и решения проблем через сообщество будет выше.
Kubernetes очень хорошо поддерживает сервисы с отслеживанием состояния.
Kubernetes — самый популярный проект в сообществе за последние три года.Linux Foundation также учредила CNCF для укрепления деятельности сообщества, не только для управления Kubernetes, но и для упорядоченного управления связанными проектами, обеспечивая стабильную и активную разработку. всего стека технологий. По сравнению с Docker swarm и Mesos, технологию Kubernetes сложнее освоить. Tencent Cloud предоставляет бесплатную лабораторию контейнеров, чтобы помочь разработчикам быстро изучить kubernetes. Заинтересованные читатели могут нажать [прочитать исходный текст], чтобы узнать подробности.
3. Какие контейнерные решения в настоящее время предлагает Tencent Cloud?
Платформа Tencent Cloud PaaS разработала множество контейнерных решений, включая, помимо прочего: управляемую службу Tencent Cloud Kubernetes, службу одного экземпляра контейнера, службу TencentHub, службу Flow Engine, службу непрерывной интеграции CCI и т. д., а также на основе Kuberentes. Решение TensorFlow и Spark, помогающее пользователям выполнять вычисления данных и обучение моделей при использовании контейнерных решений.
Сервис Tencent Cloud Kubernetes: предоставляет ориентированные на контейнеры высокомасштабируемые и высокопроизводительные сервисы управления контейнерами на основе собственного kubernetes. Tencent Cloud Container Service полностью совместим с родным API kubernetes, расширяя CBS, CLB и другие плагины kubernetes от Tencent Cloud, предоставляя ряд полных функций, таких как эффективное развертывание, планирование ресурсов, обнаружение сервисов и динамическое масштабирование для контейнерных приложений, решение пользовательских задач. разработки и тестирования.Это может повысить удобство управления крупномасштабным контейнерным кластером, помочь пользователям сократить расходы и повысить эффективность.
Служба экземпляра с одним контейнером: на основе решения с экземпляром с одним контейнером, предоставляемого технологией Clear Linux, вы можете наслаждаться удобством контейнеров и изоляции на уровне виртуальной машины с помощью службы экземпляра с одним контейнером и использовать контейнеры так же гладко, как виртуальный Очень пробная машина Подходит для пакетных вычислений через контейнеры и быстрого развертывания личных сайтов через контейнеры. Контейнеры, которые не полагаются на виртуальные машины, более гибки в настройке и времени использования, а также предоставляют более дешевый вычислительный ресурс. В настоящее время служба экземпляра контейнера находится в стадии бета-тестирования.
Служба TencentHub: с преобладанием облачных приложений концентратор, который предоставляет только службу Git или хранилище образов контейнеров, больше не может удовлетворять потребности пользователей в ежедневном процессе разработки, эксплуатации и обслуживания. Создание собственного облачного концентратора, который поддерживает несколько форматов файлов, форматов образов контейнеров и схем оркестровки, может лучше сократить миграцию пользовательской архитектуры на облачную. TencentHub не только предоставляет хранилище для частного образа, но также предоставляет хранилище файлов, таких как пакеты Helm и двоичные файлы.
Продукты DevOps: задачи DevOps контейнеризированы, ресурсы и выполнение полностью управляются в Kubernetes, предоставляют пользователям рабочий процесс полного жизненного цикла, полные процессы DevOps, такие как создание контейнера, тестирование и развертывание, поддержка пользователей для определения рабочего процесса с помощью перетаскивания интерфейса, и поддержка файлов определения рабочего процесса. Импорт и другие функции связаны с существующими базовыми службами и службами DevOps Tencent Cloud. Исходный код основного движка открыт для сообщества контейнеров, а библиотека компонентов открыта в качестве вспомогательной функции.
4. Как Tencent Cloud управляет контейнерными кластерами на базе K8S?
Оркестрация приложений Tencent Cloud Container Service
В нативном решении Kubernetes системные компоненты управляются на основе детализации сервисов, а также поддерживаются обнаружение регистрации сервисов и управление маршрутизацией. Предоставляет множество различных типов описания ресурсов для службы, наиболее часто используемыми из которых являются Deployment, Job, CronJob, Stateful и Daemonset.
Tencent Cloud Container Service относится к форме реализации Helm сообщества и реализует полную функцию управления оркестровкой приложений в службе контейнеров. Служба оркестрации Tencent Cloud Container Service в основном делится на управление конфигурацией, управление шаблонами приложений и управление группами служб на основе приложений.
Управление конфигурацией
Управление конфигурацией относится к замене часто меняющихся значений в приложениях переменными.Элементы конфигурации поддерживают несколько версий, что удобно пользователям для обновления и отката приложений. Что касается реализации управления конфигурацией, Tencent Cloud поддерживает три метода реализации:
Файлы шаблонов Helm поддерживают переменный рендеринг
Переменные среды в ConfigMap Kubernetes
ConfigMap Kubernetes заполняет данные через Volume
К его основным функциям относятся:
Извлекая различные части нескольких сред, одну и ту же систему можно развернуть в нескольких средах.
Часто изменяемая часть услуги извлекается для реализации гибкого изменения услуги. А благодаря управлению версиями конфигурационных файлов изменения можно хорошо отследить и откатить.
С помощью элементов конфигурации можно неявно реализовать управление прямыми зависимостями нескольких сервисов. Например, если службе A требуется доступ к службе B, это обычно зависит от имени службы B. В этом случае имя службы B извлекается как элемент конфигурации, и элемент конфигурации передается службе A. Таким образом, в разных средах при изменении имени службы B служба A может автоматически это воспринимать, и нет необходимости изменять параметры службы A отдельно.
шаблон приложения
Шаблон приложения включает в себя определение нескольких служб, а также конфигурацию по умолчанию.Благодаря сочетанию шаблона приложения и элементов конфигурации пользователям удобно развертывать одно и то же приложение в разных средах. Он в основном используется для описания определения одного или нескольких сервисов.Определение сервиса поддерживает собственный синтаксис Yaml, но соответствующие переменные могут быть определены с помощью GoTemplate. Его основные функции:
Позволяет быстро клонировать приложения. Поскольку соответствующая информация о приложении описана в соответствующем файле шаблона, в процессе копирования приложения необходимо только изменить конфигурацию приложения, а другую структурную информацию изменять не нужно.
Развертывание приложений в нескольких средах. В нескольких средах развертывание приложений не должно быть связано с конкретной информацией о развертывании каждой службы. Необходимо только изменить конфигурацию, соответствующую среде в разных средах, то есть быстрое развертывание приложений в новых средах. может быть достигнуто с помощью шаблонов приложений.
Для функций более высокого уровня общие шаблоны можно загрузить через рынок приложений для быстрого развертывания приложений. Например: В маркете приложений Helm (Charts) https://kubeapps.com/ упакованы файлы шаблонов для 100+ приложений. Развертывание приложения можно выполнить путем прямой загрузки соответствующего шаблона приложения.
заявление
Приложение включает в себя описание нескольких служб и взаимосвязей вызовов между этими службами, что удобно для пользователей при управлении несколькими службами. Приложение можно понимать как комбинацию нескольких сервисов, несколько сервисов будут отображаться унифицированным образом, а сервисы поддерживают поиск по приложениям. Элементы конфигурации нескольких служб управляются единообразно с помощью одной и той же конфигурации. Управляйте несколькими услугами с помощью групп услуг. Сложность управления несколькими службами может быть упрощена.
Службы в приложении поддерживают индивидуальное редактирование, развертывание и обновление. При этом сервис поддерживает дифференциальное сравнение, что удобно пользователям для просмотра различий между двумя ревизиями. Когда сервис редактируется, соответствующие переменные извлекаются автоматически, чтобы упростить процесс настройки. И функция отката службы поддержки, откат службы поддержки к предыдущей версии.
Хостинг пользователей с помощью K8S Master кластера K8S
В отличие от других поставщиков облачных услуг, Tencent Cloud управляет главным узлом для пользователей.Наиболее важной задачей является обеспечение высокой доступности пользовательского кластера Kubernetes, запуск процесса главного узла пользовательского кластера Kubernetes в качестве контейнера и предоставление полное использование преимуществ Kubernetes Гарантия стабильности.
В ходе этого процесса с увеличением количества управляемых кластеров нагрузка на главный узел Kubernetes также становится все выше и выше, а управляемый сервис Kubernetes, предоставляемый Tencent Cloud, сталкивается с огромными проблемами стабильности:
Совместное использование нескольких кластеров ETCD сталкивается с узкими местами в производительности, сложностью эксплуатации и обслуживания, а также трудностями в обеспечении постоянной доступности.
Большое количество небольших кластеров увеличивает стоимость главного сервера, и сложно гарантировать доступность и производительность.
Использование агента для управления узлами, добавление инсталляционных пакетов, сертификатов и конфигураций в кластер становится все более и более сложным в обслуживании, а обновление и откат затрудняются
Мониторинг, предоставляемый пользователю, и мониторинг, используемый в фоновом режиме, — это совершенно разные наборы, объекты мониторинга и среда не унифицированы, а обслуживание затруднено.
Kubernetes был создан для эффективной эксплуатации и обслуживания, почему его так сложно эксплуатировать и поддерживать? Tencent Cloud предоставляет пользователям эффективные сервисы Kubernetes, почему они не могут сделать это сами?После многих коллизий технических решений Tencent Cloud наконец решила использовать Kubernetes для управления Kubernetes, став первым пользователем.
Как показано на рисунке выше, Tencent Cloud развертывает все компоненты мастер-узла пользовательского кластера в кластере Kubernetes для управления с помощью контейнеров, что позволяет максимально использовать преимущества контейнеров и возможности самого Kubernetes.Благодаря этой схеме развертывания:
Мастер пользовательского кластера больше не монополизирует облачные хосты для решения проблем с затратами.
Базовая высокая доступность может быть достигнута с помощью проверок работоспособности, а несколько реплик могут обеспечить более высокую доступность.
Данные, относящиеся к мастеру одного пользовательского кластера, размещаются в том же пространстве имен.
Нет необходимости в дополнительной базе данных для хранения информации о версии пользовательского кластера.
Резервное копирование данных в пространстве имен во время обновления для быстрого отката
Нет необходимости разрабатывать и поддерживать дополнительные агенты
Анализ управляемой архитектуры высокой доступности Tencent Cloud Kubernetes
Управлять решением K8S с помощью K8S просто, но непросто развернуть все компоненты всех мастер-узлов пользователя в кластере Kubernetes с помощью контейнеров. В частности, как Tencent Cloud делает это на практике? На рисунке ниже показана архитектура высокодоступного хостинга Kubernetes от Tencent Cloud.
В службе хостинга вся платформа разделена на два уровня: плоскость управления и плоскость данных. Узлы плоскости управления находятся в связанных с мастером контейнерах пользовательского кластера Kubernetes и узлах службы управления службами Tencent Cloud Container Service; узлы плоскости данных — это узлы, на которых клиенты запускают службы.
Узел управления сервисом состоит из набора высокодоступных мастер-узлов Kubernetes и набора высокодоступных кластеров etcd. Другие машины, кроме узла управления службами, принадлежат узлу Node в Kubernetes. Когда пользователь подает заявку на создание кластера Kubernetes на консоли Tencent Cloud, необходимые компоненты Kubernetes Master, такие как etcd/api-server/controller/scheduler, развертываются в кластере в форме контроллера Kubernetes на этих узлах Node и становятся доступными для VPC. через вход. Узлы User Node указывают кластер Kubernetes для присоединения во время инициализации.
С помощью вышеуказанного архитектурного решения, когда нагрузка на пользовательский кластер увеличивается, можно быстро запустить больше контейнеров, чтобы справиться с давлением доступа. В то же время нет необходимости разрабатывать дополнительный агент для управления Мастер-узлом, сокращая звено управления и эффективно снижая сложность эксплуатации и обслуживания. Tencent Cloud может быстро обновить пользователей до последней версии Kubernetes и пользоваться новейшими функциями благодаря последовательному обновлению контейнеров. Удобно развертывать несколько версий Kubernetes для клиентов и даже индивидуальные версии для пользователей.
5. Как развернуть микросервисы с помощью Tencent Cloud Container Solution?
Введение в решение Tencent Cloud CCS
Архитектура микросервисов подходит для создания сложных приложений.Контейнерное решение Tencent Cloud CCS разбивает монолитное приложение на несколько микросервисов из разных измерений, а содержимым каждого микросервиса управляет образ Docker. С той же функцией приложение разделено на несколько управляемых служб, что упрощает понимание, разработку и обслуживание каждой отдельной службы.
Разные микросервисы также могут разрабатываться разными командами.Команда разработчиков может свободно выбирать технологии разработки и языки программирования, и каждый сервис может развертываться и расширяться независимо. Например, веб-приложение можно разделить на более простой набор внешних служб и несколько наборов внутренних служб.
Практика Xiaohongshu по преобразованию микросервисов на основе облака Tencent
Xiaohongshu — очень быстрорастущая компания, в то время как техническая команда быстро растет, технологический стек также постоянно меняется. В прошлом команда R&D Xiaohongshu использовала чистую техническую среду Python.С развитием бизнеса разные команды пробуют разные направления, такие как Java, Go и Node.В то же время во время ежегодного продвижения электронной коммерции , существующие шаблоны также требуют много времени и труда. Для поддержки развития бизнеса Xiaohongshu использует решение Tencent Cloud CCS для преобразования бизнес-системы в микросервисы.
В процессе преобразования микросервисов Xiaohongshu опирается на Tencent Cloud Container Service с такими компонентами с открытым исходным кодом, как Jenkins, GitLab, Prometheus и Spinnaker, для быстрого внедрения контейнерной микросервисной архитектуры с минимальными инвестициями и разработкой.
На картинке выше показан процесс запуска приложения до Xiaohongshu.Для разработки требуется эксплуатация и техническое обслуживание, а также количество необходимых серверов.Эксплуатация и техническое обслуживание инициализируют и доставят его в разработку в соответствии с требованиями. Теперь у Xiaohongshu есть платформа для эксплуатации и обслуживания. Все развертывания серверов выполняются этой платформой. Платформа вызывает Tencent Cloud API для создания серверов, инициализирует среду, настраивает мониторинг и сигналы тревоги и предоставляет стандартизированный сервер для разработки.
Как показано на рисунке выше, способ, которым разработчик использует Jenkins для запуска сценария, когда он получает сервер и готовит его к онлайн-выпуску: используйте сценарий Jenkins для тестирования и выполнения отправки кода. Когда вам нужно добавить новый сервер или отключить сервер, вам нужно изменить сценарий выпуска. Процесс выпуска примерно следующий: скрипты Jenkins сначала распространяются в бета-среде, разработчики проводят самотестирование в бета-среде, и среда самотестирования полностью распространяется, если нет проблем.
После серии практик преобразования микросервисов в архитектуре использование ресурсов Xiaohongshu увеличилось на 100%, а вычислительные ресурсы сократились почти в 1 раз, что стабильно поддерживает масштабные акции, такие как Double 11. Решение CCS применяется не только для преобразования микросервисной архитектуры, но и обеспечивает возможности гибкого масштабирования на двух уровнях кластера и сервиса в соответствии с бизнес-операциями, а также обеспечивает эффективную среду DevOps для непрерывной интеграции и непрерывной доставки.
6. Планирование будущего
При планировании платформы PaaS в будущем Tencent Cloud предоставит более простые решения для контейнеров, поддерживающие механизмы контейнеров и форматы образов, включая Docker, OCI и Kata. В то же время будет запущено больше вспомогательных услуг DevOps, чтобы предоставить пользователям полную среду разработки и развертывания PaaS + DevOps.
Сообщается, что решение CIS для одного контейнера от Tencent Cloud планирует выпустить общедоступную бета-версию в конце мая Пользователи могут быстро создавать экземпляры контейнера из образов контейнеров через CIS. Запущена часть Tencent Hub, которая также предоставляет движок оркестровки DevOps, и планируется официально выпустить публичную бета-версию в конце мая, в то время как та, что развернута на BlackstoneРешения CCSВ сети.
вопросы и ответы
Как запустить команду в уже существующем контейнере Docker?
Связанное Чтение
Технология контейнеров Docker
Развертывание DevOps в эпоху контейнеров
Разрушение мифов: контейнеры против виртуальных машин
Эта статья была разрешена автором для публикации сообщества Tencent Cloud +,Оригинальная ссылка: https://cloud.Tencent.com/developer/article/1077383?from source=extrapolation