Вопрос или проблема
Мы разрабатываем приложение на php/mysql, которое будет включать в себя множество API и использоваться большой группой сотрудников, однако это не веб-сайт интернет-масштаба для внешней аудитории.
Мы используем контейнеры (Dockers), поэтому хотели настроить систему так, чтобы она была готова к HA/Балансировке нагрузки/Масштабированию с самого начала.
Мы оценили Docker Swarm, но кажется, что Docker представил полуготовый режим Swarm, и ему нужно время, чтобы стать стабильным/используемым.
Мы хотели попробовать Kubernetes и, так как наши серверы все на Vmware ESXI, попробовали развернуть его на Vsphere, но он не работал как рекламировалось, и также, судя по их проблемам на GitHub, кажется, что это поддерживает один человек, так что не уверен, что это верный путь.
Теперь мы планируем оценить Baremetal Kubernetes, но вместо этого запускать его в виртуальных машинах, но мы не видим, как настроить балансировщик нагрузки?
Это вообще возможно?
Также, как вы думаете, Kubernetes будет поддерживать VMware/на металлическом сервере и другие развертывания в будущем, или они будут поддерживать только GCE, AWS, DO?
Я не могу ответить за Kubernetes, но взгляните на vSphere Integrated Containers, хотя это интересно, что у вас могут быть те же проблемы с текущим состоянием контейнеризации в отношении виртуализации, как у многих из нас. Возможно, VIC достаточно для вас на данный момент.
Kubernetes поддерживает работу на физическом оборудовании. У них также есть документация по созданию кластера на vSphere.
В настоящее время в кластере на физическом оборудовании/самостоятельно размещенном кластере вы не используете тип LoadBalancer для публикации своих сервисов. Проводится работа над тем, чтобы сделать поддерживаемый самонастраиваемый балансировщик нагрузки, но пока ничего нет. Вместо этого, когда вы публикуете сервисы, вы можете использовать тип NodePort, который откроет ваш сервис на всех узлах вашего кластера на случайном или определенном порту. Для веб-сервисов (порты 80 и 443) вы, вероятно, захотите использовать контроллер входа, который может балансировать нагрузку на ваши веб-сервисы на основе запрашиваемого имени хоста заголовка запроса.
Не хочу оказываться слишком саморекламирующим, но я написал пост в блоге о публикации сервисов с помощью кластеров Kubernetes на месте. Надеюсь, это будет полезно.
Вы можете создать кластер Kubernetes из виртуальных машин VMware. Сам Kubernetes достаточно нейтрален по отношению к тому, где он работает. Поддержка определенных типов операционных систем и архитектур в основном зависит от того, что вы используете для организации кластера.
Мы полагались на Kubespray в течение нескольких лет, пока, наконец, не решили купить VMware Tanzu. SUSE Rancher также является отличным выбором и очень дружелюбен к пользователю.
Что касается балансировщиков нагрузки, если вы не платите облачному провайдеру, имейте в виду, что общественные инструменты, такие как Rancher или Kubespray, не дадут вам этого. Нам пришлось импровизировать, используя Nginx как обратный прокси для сети хостов узлов, или использовать CNI, такие как Cilium, для предоставления внешних IP-адресов для служб LoadBalancer.
Если вы не можете позволить себе крупномасштабные решения, такие как VMware NSX AVI Load Balancer, вы можете использовать Cilium или даже metallb для публикации ваших служб LoadBalancer. Они не идеальны, но должны хорошо работать для простых задач.
.
Ответ или решение
Теория
Kubernetes — это мощная система оркестрации контейнеров, которая предоставляет возможности автоматического развертывания, масштабирования и управления контейнерными приложениями. Его цель заключается в создании единой платформы для автоматизации выполнения контейнеров в производственной среде. Kubernetes предлагает разработки для различных сред — от облачных решений вроде AWS, GCE, Digital Ocean до локальных и виртуальных инфраструктур, таких как bare-metal или VMware vSphere.
В мире виртуализации VMware широко используется для управления виртуальными машинами, и интеграция Kubernetes с инфраструктурой VMware помогает объединять преимущества контейнеризации и виртуализации. Однако, при внедрении подобных решений возникает ряд технических вызовов и нюансов.
Пример
VMware vSphere Integrated Containers (VIC) и другие подходы к интеграции Kubernetes с VMware имеют свои особенности. VIC позволяет легко запускать контейнеры рядом с уже существующими виртуальными машинами в среде VMware, что дает возможность более простого управления и разграничения ресурсов.
Тем не менее, были сообщены определенные проблемные моменты при использовании vSphere в связке с Kubernetes, включая вопросы стабильности и поддержки. Это ставит пользователей перед выбором: либо ожидать улучшений и обновлений, либо использовать альтернативные решения.
Например, Rancher, SUSE, Tanzu или Kubespray, которые предлагают варианты интеграции Kubernetes на базе VMware. Эти решения позволяют развертывать и управлять Kubernetes-кластерами на виртуальных машинах VMware и предоставляют инструментарий для упрощения этой задачи.
Применение
Для вашего приложения PHP/MySQL с высокой нагрузкой и множественными API-сервисами использование Kubernetes на VMware может обеспечить необходимые HA (High Availability) и LB (Load Balancer), особенно если вы планируете значительные горизонтальные масштабирования. Однако ваши текущие проблемы могут быть связаны с недоработками в управлении системой, что требует более детального подхода.
Настройка балансировки нагрузки
Одним из важных аспектов является настройка балансировки нагрузки. В Kubernetes, LoadBalancer типы сервисов, как правило, зависят от встроенных возможностей облачного провайдера. В случае использования VMware или bare-metal, у вас есть несколько вариантов:
-
NodePort: Он предоставляет доступ к сервисам через узлы кластера, что может быть не идеальным в сложных сценариях.
-
Ingress Contoller: Это компонент, который позволяет управлять внешним доступом к серверам внутри кластера на базе имени хоста и предоставляет функционал L7-балансировки нагрузки.
-
Методы внешнего Load Balancer-а: Использование сторонних решений, таких как Metallb или Cilium, может обеспечить необходимую функциональность LoadBalancer в среде, не поддерживаемой облаком.
Будущее
Отвечая на ваш вопрос о будущем поддержки развертываний в VMware и bare-metal, стоит отметить, что Kubernetes исторически фокусируется на предоставлении гибкости и автономности платформы. Следовательно, поддержка разнообразных архитектур и систем, включая VMware, вероятно, останется приоритетом.
Однако, из-за высокой скорости развития платформы и приверженности со стороны облачных гигантов, целесообразным вариантом может быть использование гибридных решений, таких как VMware Tanzu или SUSE Rancher, которые совершенствуют процесс интеграции Kubernetes в вашу инфраструктуру.
Рекомендации
-
Изучите возможности SUSE Rancher или VMware Tanzu: Эти платформы известны своими удобными инструментами для развертывания и управления Kubernetes-кластерами на базе VMware.
-
Тестируйте Ingress подходы: Используйте различные ingress-контроллеры для равномерного распределения нагрузки и маршрутизации внутри вашего кластера.
-
Рассмотрите возможность технического обучения: Понимание работы Kubernetes и его компонентов может значительно облегчить ваши изначальные проблемы.
В заключение, Kubernetes на VMware — это перспективное направление для развития контейнерных приложений в корпоративной инфраструктуре. Тем не менее, его успешная реализация требует тщательной подготовки и выбора подходящих инструментов.