Kubernetes: преимущества простых кластеров

Какими же сложными стали со временем Kubernetes и облачная экосистема! Не надо далеко ходить за примером, достаточно лишь вспомнить ландшафт CNCF Landscape, на текущий момент содержащий около 1 500 карт. Такое огромное количество различных облачных проектов и инструментов кому-то дает повод для критики, а кому-то  —  для шуток и создания мемов

Однако озадачить может не только ландшафт CNCF, но и его песочница, “инкубационные” и “завершенные” проекты, а также многие дополнительные стартапы и другие компании, занимающиеся независимыми разработками. 

Таким образом, у вас почти безграничный выбор инструментов, дополнений и конфигураций, список которых со временем будет пополняться. Все эти факторы сильно отвлекают и затрудняют выполнение даже простых задач. В связи с этим приведем шутливое высказывание Келси Хайтауэра в твиттере:

“В 2025 году для развертывания современного приложения “Hello, World!” потребуется 64 CPU и 1TB RAM”. 

На мой взгляд, если вы и швец, и жнец, и на дуде игрец, то не обязательно делать все это сразу. Как правило, чем проще, тем лучше, поскольку так вы сможет сосредоточиться на том, что действительно важно. Поэтому в данной статье я расскажу о преимуществах настроек простых кластеров Kubernetes перед более изощренными аналогами. 

Более удобное управление 

Первое выгодное отличие простого кластера Kubernetes состоит в том, что им легче управлять, причем начиная с самой его настройки, которая проходит быстрее и проще в отсутствии необходимости устанавливать много компонентов. 

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

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

Следовательно, лучше позаботиться о том, чтобы инструменты, призванные содействовать в управлении и контроле кластером, соответствовали своему истинному назначению, а не превращались из вспомогательного средства в отягощающий фактор. 

Упрощенное масштабирование 

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

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

Сверхсложные настройки кластера могут частично нивелировать основную ценность Kubernetes. 

Меньший вектор атаки 

Чем проще система, тем она более безопасная, поскольку снижается вектор атаки. Объясняется это тем, что каждый устанавливаемый инструмент может содержать ошибки или другие уязвимости, дающие повод для злонамеренного воздействия. А вот простая настройка с базовыми и стабильными функциональностями Kubernetes уменьшает возможность взлома и проникновения в систему. При этом не будем забывать, что для повышенной защиты системы в нашем распоряжении есть многочисленные инструменты и дополнения безопасности, которые при необходимости можно установить.

Учитывая, что риск ошибок в используемом ПО естественным образом возрастает с увеличением его количества, то вероятность упустить из внимания обновление или патч безопасности при одновременном их отслеживании у многочисленных инструментов также возрастает. 

Чем больше инструментов и дополнений вы запускаете, тем больше поверхность атаки системы и вероятность уязвимостей. 

Меньше человеческих ошибок 

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

Кроме того, наличие безграничного выбора возможностей значительно затрудняет отслеживание ошибки или решения проблемы. И наконец, в отличие от простой системы на восстановление более сложной обычно уходит больше времени, что немаловажно в критической ситуации. 

Чем шире спектр выполняемых задач, тем больше вероятность того, что вы допустите ошибку и предпримите действия, до конца в них не разобравшись. 

Приоритетные задачи 

Хотя в статье приводились аргументы в пользу простых кластеров Kubernetes, это не означает, что применять следует только их. В вашем распоряжении много эффективных инструментов и усовершенствованных конфигураций. По моему мнению, CNCF Landscape  —  отличная концепция, дающая представление о возможных решениях для различных категорий. Помимо этого, она позволяет небольшим нишевым поставщикам и стартапам заявить о себе и сделать свое предложение конкурентоспособным. Что касается меня, то на Landscape я участвую в 2 открытых проектах, таких как мультитенантное расширение Kubernetes kiosk и облачный инструмент разработки DevSpace.

Итак, обозначим первостепенные направления работы. 

Прежде всего, следует предварительно проанализировать ваши приоритетные задачи, включая вопрос о реальной необходимости Kubernetes для их осуществления. Как только вы определили свои цели, можно приступать к поиску возможных решений. В этом случае одними из полезных ресурсов для вас станут CNCF Landscape, блоги Kubernetes и многие другие. Обращаю ваше внимание на то, что следует искать решения уже поставленной задачи, а не задействовать инструменты в силу их популярности или из любопытства, впоследствии подбирая “проблему” под них. Конечно, целесообразно заранее продумать пути решения потенциальных проблем, которые могут возникнуть в процессе, например масштабируемости, поскольку потом это будет сделать намного сложнее.

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

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

Заключение 

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

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

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Daniel Thiry: Kubernetes: Why Boring Clusters Are Better Clusters

Предыдущая статьяСоздание простого веб-сервера с помощью Node.js и Express
Следующая статьяСоздание собственной симуляции активной материи на Python