Kubernetes в локальной среде: почему, как и чего ожидать

Опубликовано: 15 Апреля, 2023
Kubernetes в локальной среде: почему, как и чего ожидать

Внедрение Kubernetes резко возросло за последние пару лет. Организации используют Kubernetes для оптимизации своих рабочих нагрузок и повышения производительности. Эта облачная платформа может многое предложить организациям, желающим окунуться в мир облачных технологий. Kubernetes является облачным, но не ограничивается облаком. Многие организации по разным причинам не хотят отказываться от своей локальной инфраструктуры. Эти организации по-прежнему могут использовать Kubernetes для внедрения облачных функций, таких как высокая доступность, повышенная масштабируемость и гибкость, в локальные рабочие нагрузки.

Зачем придерживаться локальной версии?

Несмотря на резкий переход к облачной инфраструктуре, огромное количество организаций не полностью согласны с идеей миграции. Это связано с несколькими причинами. Некоторые организации довольны своим текущим развертыванием и не видят смысла в сложной миграции, которая обойдется в кругленькую сумму. Другие цинично относятся к тому, что их важные данные находятся в частном или общедоступном облаке, и это не является необоснованным страхом. Некоторые организации внедрили гибридную облачную инфраструктуру, что означает, что они по-прежнему полагаются на локальные центры обработки данных для выполнения своих рабочих нагрузок. Тем не менее, организации по-прежнему хотят использовать Kubernetes, чтобы реализовать облачные функции в своей базовой конфигурации. Это может упростить процесс миграции или интеграции с облачными рабочими нагрузками в будущем.

Проблемы внедрения Kubernetes локально

Привнесение облачных функций в ваши локальные рабочие нагрузки может оказаться сложным. Проблема с локальной установкой k8s начинается с нуля. Организации, желающей выйти на эту территорию, потребуется команда экспертов K8s, которые могут все настроить. Сложности возникают из-за того, что вы вынуждены решать все сложности, о которых за вас позаботится управляемый k8s. Вам придется решать вопросы балансировки нагрузки, управления хранилищем, автоматизации развертывания, управления SDN, безопасности и аутентификации, а также многих других сложностей. И самая большая загвоздка в том, что ваша организация несет ответственность за все, включая обновление ваших кластеров каждый раз, когда выпускается новая версия k8s. Это делает человеческую ошибку больше, чем просто вероятностью. Это причины, по которым различные организации полагаются на решения k8s корпоративного уровня, которые могут позаботиться обо всем за вас.

Чтобы реализовать такой масштабный проект, организациям придется найти экспертов по K8s. Поскольку K8s все еще довольно новый, найти администраторов K8s может быть особенно сложно. Существуют различные сертификаты, предоставляемые CNCF для доступа к опыту разработчиков Kubernetes, например, CKA (администратор Kubernetes) и CKAD (разработчик приложений Kubernetes). Однако иногда организации не хотят нанимать команду экспертов. В этом случае перенос k8s в локальную среду может оказаться экспоненциально более утомительным. Не все организации, которые хотят двигаться в этом направлении, получат желаемые результаты за время, отведенное на этот конкретный проект. Это может привести к задержке проекта и увеличению затрат. Другим важным фактором является видимость и наблюдаемость. С k8s идея всегда состоит в том, чтобы сделать рабочие нагрузки распределенными, что может быть полезно для миграции и переносимости, но оказывается сложным для мониторинга. Команда разработчиков, работающая над самодельным локальным решением Kubernetes, должна будет реализовать эффективную функциональность мониторинга. Организации должны учитывать все эти сложности и все планировать.

Лучшие практики для локального Kubernetes

Вот некоторые из важных передовых практик, которым следует следовать при внедрении собственного локального k8s.

  • Развертывание динамического балансировщика нагрузки, который может подстраиваться под растущий размер вашего кластера, должно быть вашим приоритетом. Убедитесь, что балансировщик нагрузки может автоматически учитывать любые изменения в вашем кластере.
  • Внедряйте виртуальные машины везде, где необходима изоляция. Попробуйте использовать SDN для реализации безопасных и изолированных подсетей.
  • Начните с меньших кластеров, чтобы ограничить радиус взрыва. Это эффективный способ обработки всех ошибок. Позже вы сможете объединить свои кластеры, чтобы сформировать более крупные кластеры, когда у вас будет эффективный мониторинг.
  • Чтобы добиться масштабируемости в хранилище, вы должны реализовать ротацию компьютеров, чтобы не исчерпать память во время выполнения ваших рабочих нагрузок.
  • Убедитесь, что все операционные системы и драйверы обновлены.
  • Убедитесь, что у вас есть как минимум три сервера для локального запуска K8s. Один сервер должен быть зарезервирован для основных компонентов, которые действуют как панель управления. Два других должны запускать рабочие узлы, на которых размещен kubelet.
  • SSD является важной рекомендацией. Он сможет поддерживать скорость, с которой etcd записывает на диск, и поможет избежать проблем с производительностью.
  • Kubelet должен работать на всех узлах, чтобы убедиться, что все контейнеры в узле работают правильно.

Что будет дальше?

Когда ваша инфраструктура Kubernetes будет готова, вам потребуются некоторые интеграции, которые помогут сделать ваши локальные k8 более похожими на облако. Вам потребуется установить репозитории для любых решений с открытым исходным кодом, которые вы можете интегрировать в свою локальную инфраструктуру k8s для изолированного развертывания. Вам также потребуется установить плагин панели управления Kubernetes для визуализации вашей инфраструктуры Kubernetes. Такие инструменты, как Grafana и Prometheus, можно интегрировать с вашими локальными K8, чтобы обеспечить широкие возможности наблюдения. Вы также можете внедрить Istio или Linkerd для использования функциональности сервисной сетки. И такие инструменты, как Weaveworks и Flannel, могут стать отличным вариантом для решения любых сетевых проблем. Безопасность действительно важна, когда речь идет о выполнении распределенных рабочих нагрузок. Организации должны внедрить безопасность с нулевым доверием и внедрить RBAC и многофакторную аутентификацию, чтобы избежать атак. Все компоненты и коды с открытым исходным кодом должны быть тщательно проверены, чтобы исключить любые риски.

Есть более простой способ

Kubernetes on-premises — сложная задача, если вы выберете подход «сделай сам». Для организаций, не связанных нормативными актами, существуют более простые альтернативы, позволяющие не полагаться на сторонних поставщиков. На рынке существует множество решений «платформа как услуга» (PaaS) и Kube-native, которые могут удовлетворить все ваши потребности при локальной настройке k8s. Решения PaaS, такие как VMware Enterprise PKS и RedHat OpenShift, довольно популярны и решают многие сложности, которые может предложить локальный K8s. Нативные решения Kube, такие как Rancher 2.0 и Kublr, могут удовлетворить все ваши требования, от сети и балансировки нагрузки до мониторинга и безопасности. Важно, чтобы организации взвешивали свои варианты и выбирали решения, которые лучше всего подходят для их конкретного варианта использования.

Изображение 14245 Подведение итогов

Kubernetes не сложно внедрить. Это операции, которые трудно настроить. Это может стать экспоненциально более сложным, когда вам нужно построить свою инфраструктуру с нуля. Крайне важно, чтобы вы соответствовали всем вашим требованиям и следовали правильным рекомендациям. Реализовать безопасность и позаботиться обо всех сложностях вполне возможно, если ваша стратегия верна. В конце концов, наличие локальной платформы K8s обеспечивает гибкость и высокую доступность, которые были невозможны при существующей монолитной инфраструктуре. Для многих организаций это открывает возможности для гибридного облака, которое является наиболее эффективной облачной инфраструктурой. Организации могут свободно выбирать части своих рабочих нагрузок, которые они хотят хранить локально или на облачной платформе, что делает рабочие нагрузки более эффективными и быстродоступными. В будущем внедрение локального Kubernetes станет только проще.