А не подскажите тогда, какие основные сложности с внедрением Kubernetes в организации?
Елизавета Кондратенкова
Неожиданно высокие расходы
Поскольку организации нередко переходят на Kubernetes с целью сэкономить, увеличение расходов становится неприятной неожиданностью, особенно если бюджет ограничен. При правильном подходе расходы действительно можно сократить. Вот несколько ловушек, которых следует избегать при переходе на Kubernetes.
Kubernetes — это платформа с открытым исходным кодом, как и многое программное обеспечение в облачной экосистеме. Благодаря открытому исходному коду организации могут сократить операционные и капитальные затраты (OpEx и CapEx). Но есть здесь и подводные камни, например:
— Зависимость от вендора. Базовая версия Kubernetes подходит не всем организациям, и многие выбирают коммерческий дистрибутив или платформу Kubernetes, привязанную к облачному провайдеру. В результате организации не могут просто уйти от вендора, например, если цены стали слишком высокими.
— Расходы на миграцию. Переход на Kubernetes требует времени. Организации часто не понимают, сколько сил и денег понадобится для переноса всех систем в контейнеры.
— Рекомендации по контролю расходов. По умолчанию в Kubernetes не включены ограничения на использование ресурсов, и разработчики — особенно новички в Kubernetes — не всегда знают, что нужно, например, настроить эти ограничения, чтобы сэкономить.
Недостаток навыков
Kubernetes — это относительно новая технология. Она настолько сложная, что даже довольно опытные пользователи до сих пор постигают ее. Kubernetes также использует постоянно растущую экосистему бесплатных и коммерческих инструментов, хранилищ, сетевых решений и систем мониторинга. У Kubernetes столько дистрибутивов, платформ и вендоров, что одному человеку невозможно разобраться во всем этом многообразии.
— Непрерывное развитие. Kubernetes и его экосистема постоянно развиваются, причем иногда так быстро, что за ними невозможно угнаться. Во всяком случае, не получится охватить всю широту лучших практик и новых функций в Kubernetes и сопутствующих технологиях.
— Узкая специализация. Команды по Kubernetes в организациях часто изучают только одну область, актуальную для бизнеса, и упускают важные моменты, новые возможности и лучшие практики, например по операциям второго дня. Иначе говоря, даже инженеры, которые регулярно используют Kubernetes, часто многого не знают, а потому их возможности в Kubernetes ограничены.
Недостаток навыков и необходимость постоянно инвестировать в обучение также увеличивает общую стоимость использования Kubernetes.
Мультиоблачная и гибридная среда
Одно из основных преимуществ использования контейнеров — их переносимость между средами. И хотя контейнеры переносить несложно, потребуется немало усилий для переноса рабочей нагрузки Kubernetes между публичными облаками или из публичного облака в частное, особенно при использовании дистрибутивов от облачного провайдера. При этом возможность работать в нескольких средах — это одно из главных преимуществ контейнеров и Kubernetes. Организациям нужна эта возможность, чтобы достигать своих бизнес-целей — контроль расходов, свободный выбор вендоров, обеспечение высокой доступности и т. д. Переносимость между средами важна для эффективного конвейера CI/CD, поскольку среды разработки, тестирования и производства часто находятся в разных облаках.
— Согласованность между средами. Для эффективной реализации мультиоблачной и гибридной стратегий необходимо обеспечить максимальную согласованность между средами. Любую конфигурацию, секреты или данные, относящиеся к одной среде, нужно определить для этой среды, а не включать в образ контейнера или конфигурацию рабочей нагрузки. При таким подходе рабочие нагрузки можно будет перемещать без изменений.
Чрезмерное многообразие инструментов
У Kubernetes необъятная экосистема инструментов и платформ, которая продолжает расти. Если вашей организации нужна функция, которой нет в готовом варианте Kubernetes, скорее всего, вы найдете для нее подходящий инструмент. С другой стороны, такое изобилие приводит к двум проблемам:
— Выбор инструмента. При подборе инструмента приходится искать компромисс. Насколько хорошо он будет сочетаться с другими инструментами? Что лучше — гибкий инструмент с открытым исходным кодом или ограниченный и более дорогой коммерческий инструмент? Как контролировать и стандартизировать использование инструментов в организации? Многообразие инструментов в сочетании с недостатком навыков усложняет не только выбор инструментов, но и сам переход на Kubernetes.
— Управление инструментами. Организации часто используют десятки разных инструментов, поэтому персоналу требуется больше времени на обучение, а затем и на управление всей этой сложной системой.
Безопасность, сети и хранилище
Для перехода на Kubernetes организация должна изменить свой подход к управлению безопасностью, сетями и хранилищем. Эксперты в этих областях должны освоить совершенно новые принципы, а разработчики приложений, которые раньше и не думали об этих аспектах, сейчас должны изучить их и включить в рабочий процесс.
Контейнеры и Kubernetes не более уязвимы, чем монолиты, но требуют иного подхода к безопасности, который основан скорее на управлении конфигурацией, чем на защите периметра. Службы ИБ должны научиться по-новому управлять безопасностью, при этом помогая командам DevOps работать еще быстрее.
Управление stateful-приложениями в Kubernetes не только возможно, но и выполняется в производственной среде многими организациями, хотя изначально контейнеры задуманы как stateless. При этом требуются навыки управления облачным хранилищем, которое работает не так, как хранилище в традиционной среде.
Правильно настроить балансировку нагрузки тоже непросто, но это необходимо, чтобы гарантировать доступность и производительность приложения.
Операции второго дня
Очень редко организации включают операции второго дня в подтверждение концепции, но приложения в Kubernetes, как и все остальные, большую часть жизненного цикла проводят в производственной среде, где их нужно исправлять, обновлять и отслеживать. Потребуется много времени и сил, чтобы обновить кластер или установить исправление для системы безопасности вручную. К тому же существует высокий риск ошибок. Один из способов автоматизировать эти задачи — использовать операторы, которые расширяют функционал без изменения базовой конфигурации Kubernetes. Операторы — это инструменты автоматизации, которые выполняют определенные операции без вмешательства пользователя. Операторы Kubernetes помогают автоматизировать операции второго дня, но большинство из них подразумевают зависимость от вендора. Кроме того, они не всегда достаточно зрелые, чтобы использоваться в производственной среде.
Операционные сложности Kubernetes мешают организациям в полной мере использовать преимущества контейнеров и платформы. У большинства организаций очень высокие требования к безопасности и комплаенсу: если Kubernetes им не отвечает, они не будут его использовать. Другие проблемы, вроде высоких расходов или недостатка навыков, не позволяют эффективно использовать ресурсы и применять гибкие методы разработки — а это как раз те преимущества, которые организации ожидают от Kubernetes.
Есть способы решить эти операционные проблемы, а также другие сложности, о которых мы говорили выше. Мы рассмотрим пять стратегий, с которыми использовать Kubernetes будет проще и дешевле, а также преимущества и недостатки каждой из этих стратегий.