Что будет делать Kubernetes, когда будет создан вход?

Эта статья опубликована в облачном сообществе Huawei « Что будет публиковать Kubernetes при создании входа?» ", автор: Ты можешь завести друга.

1. Обзор входа

Ingress — это набор правил маршрутизации и пересылки, который предоставляет пользователям внутренние службы кластера через протоколы уровня 7. Это ресурс по умолчанию для k8s. Объект ресурса Ingress используется для определения правил HTTP и HTTPS из внешней сети. Маршрутизация трафика контролируется правилами, определенными в ресурсе Ingress. Это позволяет достичь цели управления и контроля трафика, входящего в кластер.

2. Определения, связанные с входом

Входной ресурс : Ingress — это объект API, обычно настраиваемый через yaml. Его функция заключается в определении правил пересылки запросов в службу, что можно понимать как шаблон конфигурации.

Компонент входного контроллера : входной контроллер (входящий контроллер) управляет трафиком север-юг, запрошенным уровнями L4 и L7, что относится к трафику, входящему в кластер или исходящему из него из-за пределов кластера. Это программа, которая специально реализует обратный прокси-сервер и балансировку нагрузки.Она анализирует правила, определенные Ingress, и реализует пересылку запросов в соответствии с настроенными правилами.

3. Контроллер Ingress «Пусть расцветают сотни цветов»

В настоящее время Ingress признан лучшим способом предоставления сервисов в кластере. Из-за его важного положения в мире существует множество Ingress-контроллеров. Распространенными из них являются:

  • Kubernetes Ingress Nginx 

    Официально рекомендуемый контроллер Ingress для Kubernetes Ingress, основанный на веб-сервере nginx и дополненный набором Lua-плагинов для дополнительной функциональности. Из-за популярного использования Nginx после миграции приложения на K8S контроллер Ingress является самым простым в использовании контроллером, а стоимость обучения относительно невелика, поэтому рекомендуется использовать его. Однако если файлов конфигурации слишком много, перезагрузка будет очень медленной.

  • Вход Nginx

    Nginx Ingress - официальная версия, разработанная NGINX. Она основана на коммерческой версии NGINX Plus. Контроллер NGINX обладает высокой стабильностью, постоянной обратной совместимостью, не имеет сторонних модулей и гарантирует высокую производительность за счет исключения Lua. код.скорость (по сравнению с официальным контроллером). Поддерживает пересылку трафика TCP/UDP. Платная версия имеет широкий набор дополнительных функций. Основным недостатком является отсутствие других функций, таких как методы аутентификации и планирование трафика.

  • Конг Ингресс

    Kong Ingress построен на базе NGINX и добавляет модули Lua, расширяющие его функциональность. Раньше Kong концентрировался на шлюзах API, но теперь он стал зрелым контроллером Ingress. По сравнению с официальным контроллером он имеет улучшенные правила сопоставления маршрутизации, восходящие зонды и аутентификацию, а также поддерживает большое количество подключаемых модулей модулей, что делает его легко интегрируется с конфигурацией. Он предоставляет некоторые определения API и сервисов, которые можно абстрагировать в Kubernetes CRD, а статус синхронизации можно передать в кластер Kong посредством конфигурации Kubernetes Ingress.

  • Траефик Ингресс

    traefik Ingress — это очень комплексный Ingress, официально называемый: Traefik — это Edge Router, который делает публикацию ваших сервисов увлекательным и простым занятием. Он имеет множество полезных функций: постоянно обновляет конфигурацию (без перезапуска), поддерживает несколько алгоритмов балансировки нагрузки, веб-интерфейс, экспорт метрик, поддерживает различные протоколы, REST API, Canary-версию и т. д. Еще одна приятная особенность — встроенная поддержка Let'sEncrypt. Более того, версия 2.0 уже поддерживает TCP/SSL, канареечное развертывание, зеркалирование/затенение трафика и другие функции, и сообщество очень активно.

  • HAProxy Ingress

    Самым большим преимуществом HAProxy среди многих контроллеров является балансировка нагрузки. Он обеспечивает «мягкие» обновления конфигурации (без потери трафика), обнаружение служб на основе DNS и динамическую настройку через API. HAProxy также поддерживает полную настройку шаблонов файлов конфигурации (путем замены ConfigMap) и использование в них функций Spring Boot.

  • АПИСИКС Ингресс

    ApiSix Ingress — это новый контроллер Ingress, который в основном ориентирован на Kong Ingress. Он имеет очень мощные возможности маршрутизации, гибкие возможности расширения с помощью плагинов и отличную производительность. В то же время его недостатки также весьма очевидны: хотя APISIX имеет множество функций после открытия исходного кода, ему не хватает примеров реализации и соответствующих документов, которые бы помогали всем, как использовать эти функции.

4. Анализ ингресса по принципу nginx

Модуль nginx-ingress во время выполнения в основном включает в себя три объекта: NginxController, Store и SyncQueue.

Store  в основном отвечает за сбор информации о времени выполнения от API-сервера kubernetes, обнаружение изменений в различных ресурсах (таких как вход, сервис и т. д.) и своевременную запись сообщений о событиях обновления (событий) в кольцевой конвейер;

В качестве промежуточного контакта NginxController  прослушивает updateChannel и, получив событие обновления конфигурации, записывает запрос на обновление в очередь синхронизации syncQueue.

СинкКеуе  :

  1. Сопрограмма регулярно сканирует очередь syncQueue и выполняет операции обновления при обнаружении задач.
  2. Используйте хранилище для завершения получения последних текущих данных (обычно недавно записанной информации).

Затем сгенерируйте новую конфигурацию nginx по определенным правилам (некоторые обновления должны быть перезагружены, поэтому напишите новую конфигурацию локально и выполните перезагрузку), а затем выполните операцию динамического обновления, то есть создайте POST-данные, отправьте почтовый запрос на локальный сервер. Сервисный модуль Nginx Lua и внедрение обновлений конфигурации;

Lua — это легкий и компактный язык сценариев, написанный на стандартном языке C и открытый в виде исходного кода.Он предназначен для встраивания в приложения и обеспечивает гибкие функции расширения и настройки приложений. Входной контроллер nginx встраивает несколько сценариев Lua. Ниже приводится краткий обзор всего процесса обработки сценариев Lua.

  • init_by_lua*: инициализировать nginx и предварительно загрузить lua (выполняется при запуске и перезагрузке nginx);

  • init_worker_by_lua* : выполняется при создании каждого рабочего процесса (worker_processes), используется для запуска некоторых запланированных задач.

    Например, проверка пульса, проверка работоспособности серверных служб, регулярное получение конфигурации сервера и т. д.;

  • ssl_certificate_by_lua* : обработка https-запросов, выполняемая перед запуском SSL-подтверждения нисходящего SSL-соединения (https).Сценарий использования: установка цепочки сертификатов SSL и соответствующего закрытого ключа в соответствии с каждым запросом, выборочное отклонение запросов в соответствии с протокол SSL и т. д.;

  • set_by_lua* : установить переменные nginx;

  • rewrite_by_lua* : перезаписать запрос (введенный на этапе перезаписи собственного nginx), выполнить внутреннюю перезапись URL-адресов или внешнее перенаправление, обычно такое как псевдостатическое перезапись URL-адресов;

  • access_by_lua* : обработка запросов (может выполнять ту же функцию, что и rewrite_by_lua, входя с фазы доступа собственного nginx);

  • content_by_lua* : выполнять бизнес-логику и генерировать ответы, аналогично сервлетам в jsp;

  • Balancer_by_lua* : балансировка нагрузки;

  • header_filter_by_lua* : Заголовки ответа процесса;

  • body_filter_by_lua* : Обработать тело ответа;

  • log_by_lua* : записывать журналы доступа

 

Нажмите, чтобы подписаться и узнать о новых технологиях Huawei Cloud как можно скорее~

 

Дважды произошел сбой Bilibili, авария первого уровня Tencent «3.29»… Подведение итогов десяти крупнейших аварий с простоями в 2023 году. Vue 3.4 «Slam Dunk» выпустил MySQL 5.7, Moqu, Li Tiaotiao… Подведение итогов «остановки» в 2023 году Подробнее (с открытым исходным кодом) проекты и веб-сайты оглядываются на IDE 30-летней давности: только TUI, яркий цвет фона... Выпущен Vim 9.1, посвященный Брэму Муленаару, отцу Redis, "Rapid Review" LLM Programming: Omniscient и Всемогущий&& Глупый «Пост-открытый исходный код». Наступила эра: срок действия лицензии истек, и она не может обслуживать широкую публику. China Unicom Broadband внезапно ограничила скорость загрузки, и большое количество пользователей пожаловались. Руководители Windows пообещали улучшения: сделайте начало Меню снова великолепное. Скончался Никлаус Вирт, отец Паскаля.
{{o.name}}
{{м.имя}}

Supongo que te gusta

Origin my.oschina.net/u/4526289/blog/10583779
Recomendado
Clasificación