Миграция проекта из AWS на Bare Metal (часть 3)
MetalLB
MetalLB - это инструмент для Kubernetes, который предоставляет LoadBalancer-ы для кластеров, которые используют собственный сетевой стек вместо облачных провайдеров. В этом посте мы рассмотрим, как MetalLB работает и как его использовать.
Одной из главных особенностей MetalLB является то, что он может использовать протоколы BGP и ARP для связи с сетью кластера. Это означает, что он может предоставлять IP-адреса и маршрутизацию для сервисов Kubernetes, которые используют тип LoadBalancer. Кроме того, MetalLB может быть настроен для использования нескольких конфигураций, чтобы обеспечить отказоустойчивость и балансировку нагрузки.
Его ставим в кластер, чтоб можно было проще экпортить сервисы в мир.
Traefik
Traefik - это обратный прокси и балансировщик нагрузки, который может использоваться для управления трафиком в среде контейнеризации, включая Kubernetes. Traefik может автоматически обнаруживать новые сервисы, создавать для них маршруты и балансировать нагрузку между экземплярами сервисов. Он также обладает множеством функций, таких как TLS-шифрование, поддержка WebSockets, мониторинг и другие, которые делают его полезным инструментом для развёртывания микросервисных приложений.
С этим все понятно. Но тут при подключении TLS нужно быть внимательным. Я наткнулся на парочку сайд-эффектов.
External DNS
ExternalDNS - это инструмент, который автоматически управляет записями DNS для сервисов Kubernetes в облачных провайдерах, таких как AWS, Google Cloud и других. ExternalDNS позволяет автоматически создавать и обновлять записи DNS для сервисов Kubernetes, обеспечивая удобный доступ к приложениям и сервисам через доменные имена. Это удобно для управления динамическими IP-адресами и обеспечивает автоматическое масштабирование и управление сервисами Kubernetes в облаке.
В нашем случае эта тулза автоматически заводит сабдомены в CloudFlare.
Metrics server
Metrics Server - это компонент Kubernetes, который автоматически собирает и хранит метрики производительности в режиме реального времени для всех узлов и контейнеров в кластере. Metrics Server позволяет операторам и разработчикам мониторить производительность и использование ресурсов, таких как CPU, память и сеть, для эффективного управления кластером и его ресурсами. Этот инструмент широко используется для масштабирования и оптимизации приложений в Kubernetes.
Просто Must Have для кластера, если вы хотите понимать, что у вас с ресурсами в подах и на основе этих данных скейлиться.
NodeLocalDNS
NodeLocalDNS - это функция, добавленная в Kubernetes, которая обеспечивает локальное кэширование DNS-запросов для узлов кластера. Это позволяет узлам быстро решать DNS-запросы без обращения к глобальным DNS-серверам в интернете, что улучшает производительность и надежность сети. NodeLocalDNS работает вместе с CoreDNS, основным DNS-сервером Kubernetes, и позволяет узлам быстро получать доступ к сервисам в кластере, что особенно важно при работе с множеством микросервисов и контейнеров.
Обычное дело, когда у вас много сервисов и DNS начинает в кластере подтупливать. Ставим эту штуку и нагрузка на CoreDNS падает в разы.
Все эти компоненты установлены и настроены. Потом деплоим тестовый WhoAmI или какой-нибудь Nginx, чтобы проверить как все работает. На данном этапе базовая функциональность кластера проверена и пока все идет хорошо.
Дальше будет ArgoCD и попытка задеплоить образы из реджистри Амазона.
Комментарии: