Рубрики
Uncategorized

Инфраструктурная инженерия — Кюбернаны путь

Этот блог является частью серии на Кубейнетах и его экосистеме, где мы будем глубоко в infr … Теги с Куберовщиками, дежопами, облаком, микросервисами.

Инфраструктура — Diving Deep (5 частей серии)

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

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

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

Вы можете спросить, это Kubernetes единственный игрок, который делает это?

Ну, ответ нет, и есть определенно другие игроки, такие как Coreos и OpenStack. Хотя вы должны выбрать, что лучше для вас, есть отличное будущее для Кубернанов и его экосистемы, особенно из-за огромной поддержки сообщества, что более очевидно, если вы взгляните на процветающий пейзаж здесь . И большую часть времена K8s должно быть отлично подходит для большинства случаев использования.

Но это не помешает вам использовать их вместе с Coreos и OpenStack. Например, вы можете запустить Кубернаны на OpenStack или OpenStack на Кубернетах Если вы хотите.

Как выглядит народный стек облака?

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

Это некоторые из важных частей собственного стека облака, как упомянуто г-ннакирам MSV в новом стеке.

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

(Вы можете пройти через книгу из нового стека в штате Кубебени и его экосистемы здесь: https://thenewstack.io/ebooks/kubernetes/state-of-kubernetes-eCosystem-secondedition-2020/ )

Вычислить

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

Kubernetes (который по сути, является проектом, концептуализированным от Borg в Google) позволяет эффективно управлять вычислять и масштабировать его по мере необходимости.

Вычисление, доступное для приложения, зависит от различных факторов. Тип узла, в котором вы запускаете контейнеры (количество ядер CPU, доступных для узла, прикрепленные процессоры, имеющиеся в наличии ОЗУ и другие аксессуары, такие как GPU в некоторых случаях, которые вычислите интенсивно), ограничения, которые вы установили вручную, включая CPU, ограничения памяти Сходство с аффинностью/анти-аффинностью и так далее.

И лучшая часть об этом заключается в том, что весь этот вычислений совместно используется в кластере или конкретном пространстве имен, который позволяет вам эффективно управлять ресурсами, которые у вас есть. И если вы не уверены в изменении вычисленных потребностей, все, что вам нужно сделать, это установить автоскалер ( HPA , VPA , CA ) И это будет масштабировать ваш вычислений/вниз в зависимости от установленных вами ограничений.

Теперь, что если вы хотите сделать безверенно? Это легко, когда особенно когда вы работаете с экосистемой Kubernetes, которые у вас есть такие проекты Кнативы , Openfaas , и т.д. Делать именно это (в конечном итоге, без того, не только абстрагирует все для разработчиков и предлагая упругость в вычислении по мере необходимости)

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

Наличие всех этих вариантов делает Kubernetes отличным выбором для управления вычислением в любой масштабе.

Хранилище

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

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

Это было возможно Подключите многих давателей хранения к Куберату и добавить Многие плагины объема Но будущее выравнивается на CSI И поэтому перспективно для совместимости с любым поставщиком хранилища вашего выбора.

Например, Если вы хотите принести в файловые системы, такие как CePh на Kubernetes, у вас есть Ceph-CSI драйвер или если вы хотите уменьшить трение, сохраняя при сохранении Ceph, вы даже можете пойти на что-то вроде Ладья с Ceph CSI Отказ В этом пространстве есть много игроков, и вы можете прочитать о том, как они выполняют и отличаются здесь Каждый предоставляет различные набор вариантов, включая файл, блок, NFS и многое другое.

Если вы хотите получить больше представления о различных вариантах хранилища, я бы порекомендовал вам посмотреть этот разговор Саадом Али из Google:

Сеть

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

Это сделано возможным с помощью встроенных механизмов обнаружения услуг от Kubernetes, как Coredns. ( Kubedns — это его предшественник) с некоторой помощью Kube-Proxy А также основные конструкции Kubernetes, как услуги и вход от Различные виды в том числе Clusterip, NodePort, LoadBalancer и многое другое.

Наличие конструкций, таких как это, очень проще установить связь через этикетки, а не на необходимость жесткого крепления IP-адресов или выполнять комплексную маршруту, все, что обрабатывается DNS-сервером, если учесть правильный Fqdn (Полностью квалифицированное доменное имя)

Сеть становится более интересным, особенно при введении в CNI (Интерфейс сетевого контейнера), который фактически стал стандартом для всех сетевых абстракций (аналогично тому, что CSI делает для хранения). Это позволяет пользователям использовать любой плагин CNI внизу среди большого количества в дереве и сторонние плагины доступны как Калико , Weavenet С Фланель , и т.д. и вы можете посмотреть на сравнение некоторых из них здесь Отказ

CNI даже обеспечивает реализации MESH Service Mesh для обеспечения использования его мощности. Например, LinkerD имеет Его собственный плагин CNI что позаботится о управлении правилами IP-таблицы для каждого стручка в сервисной сетке и ISTIO имеет что-то подобное слишком.

Наличие всех этих конструкций Kubernetes также позволяет нам умерить трафик, используя Политики сети POD И возможности бесконечны.

Все это делает Kubernetes отличным подходящим для сети. И если вы хотите узнать больше о сетевом стеке, я бы порекомендовал вам посмотреть этот разговор Bowei Du и Tim Hockin из Google:

Или этот разговор из Майкла Рубина из Google:

Контейнер-оптимизированная ОС

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

Если вы хотите знать, почему контейнер оптимизирован ОС, действительно нужен, я бы порекомендовал вам посмотреть этот разговор:

Контейнерное время выполнения

Докер первоначально начался как пионер для контейнеров (даже если CGUP и контейнеры были использованы еще до докера в производстве), и это привело к тому, что многие люди используют Docker в качестве ведения контейнера, когда все это началось. Но Кубернаны посмотрели на нее по-другому с базовой единицей, являющейся стручкой. В то время как Kubernetes изначально вышла с поддержкой Docker, используя прокладки и поддерживает его, оно недавно объявило, что это Уницирующийся докер как контейнер Runtime в пользу CRI (Интерфейс выполнения контейнера), стандарт, который может обеспечить способ стандартизации для различных контейнеров, включая Docker, Контейнер , runc. и другие занятия, чтобы прийти как CRI-O.

Если вы хотите взглянуть на то, как они отличаются, Это Должен дать лучшую идею, и если вы хотите больше исследовать, вы также можете посмотреть этот разговор на Фил Эстес из IBM:

Сервисная сетка

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

Инструменты, такие как ISTIO, LinkerD и Consul, известны для расширения возможностей пользователей благодаря своим подножкам Mesh Beart Service, каждый из которых работает на стороне рядом со стороны фактического контейнера. При настройке сервисной сетки было первоначально сложнее, все постепенно приходят в точку, где есть клиз и диаграммы, которые могут настроить все для вас в одном выстрелке.

Интерфейс сетки сервиса (SMI) также прокладывает путь к многим будущим событиям в этом пространстве в этом пространстве, привлекая большую стандартизацию и совместимость без необходимости менять способ работы вашего приложения. Если вы хотите узнать больше о том, какая сервисная сетка есть и действительно ли вам нужна сервисная сетка, вы можете пройти Это Post Blog от William Morgan, Создатель Linkerd или вы также можете посмотреть этот разговор Brendan Burns от Microsoft:

Безопасность и закаление

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

В Кубернетах много шагов в Кубейнетах. Например, вы можете использовать RBAC Для авторизации шифровать магазин EtCD, сканируйте реестр изображений, используя что-то вроде Клэр , добавляя боковые машины или библиотеки с Агент открытого политики (OPA), чтобы разрешить определение политики в соответствии с вашими потребностями, добавляя соответствующую Контексты безопасности и Политики безопасности POD Для контроля разрешений ваши контейнеры имеют и намного больше, как настроить MTLS Чтобы зашифровать трафик в вашей сетке, и поэтому на каждом из которых приводит вас к вашему шагу ближе к вашему путешествию с нулевой целевой безопасностью.

Двигатель оркестровки контейнера

Теперь, когда у нас есть всю нашу большую часть базовой инфраструктуры, и все рабочие нагрузки, которые нам нужно работать сверху, важно иметь уровень оркестрации для управления всей инфраструктурой. Это где проект, как Кубернаны, падает на место. Но, как мы уже обсуждали, Кубернаны не единственный вариант там (хотя это определенно лидер в этой области). Есть другие варианты, такие как ОКД какие силы открываются, Rancher Kubernetes Engine (RKE) и многое другое.

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

Управление построению

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

Некоторые из пионеров в этой области включают в себя Gitlab ci. , Jenkins-x , Действия GitHub и больше, которые можно комбинировать с такими инструментами, как Скаффорт , Скорео И понравились ему, чтобы принести полный трубопровод для управления сборками.

Есть много инструментов, которые вы можете использовать для создания совместимых изображений OCI. Это может включать в себя ходить на контейнер построителя, как Docker, Buildkit (Опять же от Docker/Moby), Buildah и более поделиться здесь Отказ Все сводится к тому, что вы хотели бы оптимизировать. Если вы хотите знать, как они сравнивают, вы можете взглянуть на презентацию Ахиро Суда из NTT здесь на различных строителей и как они отличаются.

Если вы заинтересованы в том, чтобы узнать больше о том, как настроить ваши трубопроводы CI/CD, я написал небольшой учебник по настройке Skapsold с GitLab CI/CD, подключившись к кластеру GKE, нажав/вытягивание изображений в/из реестра GCR здесь

Управление выпуском

После того, как приложение было проверено, построено, отсканировано и выдвинута на завершающий этап в трубопроводе, предназначен для фактического выпуска приложения к нескольким средам по мере необходимости. Это где управление выпуском играет важную роль. Независимо от используемого инструмента, окончательный актив, который будет применяться к Kubernetes, — это не что иное, как ямал или яма «JSON», обеспечивающие все детали различных ресурсов.

Это тот же случай, даже если руководители пакетов нравятся Хелм Используется, поскольку он ничего не делает, кроме шаблона файлов YAML, как доступно с различными значениями, поставляемыми пользователями, которые позже могут быть подталкиваться в реестр совместимых OCI для версий и совместного использования в качестве выпуска. Фонд CD Также проводятся ряд проектов под его зонтиком, предназначенным для решения точно такой же проблемы.

Если вы хотели бы пойти через постоянную доставку с помощью Kubernetes подробно, я бы порекомендовал пройти Это от Google.

Регистрация контейнера

Как мы обсудили в управлении сборкой, генерируемые артефакты (будь то изображения контейнеров, хелм-графики и т. Д.) Обычно подталкиваются в реестр совместимого OCI, который затем может использоваться в качестве единого источника правды при развертывании к кластерам Kubernetes.

Пока все началось с Docker Hub Ведущий путь, у вас есть другие варианты, такие как Набережная , GCR , ЭКР , Acr Предоставление реестра изображений в качестве службы SaaS, и если это не работает для вас, вы даже можете разместить свой собственный частный реестр, используя что-то вроде Гавань делать возможности бесконечными.

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

Наблюдаемость

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

Это одно из мест, где экосистема Kubernetes действительно сияет. Вы можете пойти на Лось (Упругости, логисташка, кибана) стек, EFK (Упругости, свободно, кибана) стек, используйте Prometheus Для метрик, Графана Для ваших приборных панелей Jaeger для распределенного трассировки, и так далее с новыми игроками, поступающими, как Локи , Темп и т. Д. Сделать это пространство действительно интересно. Или если вы не хотите поддерживать поддержание этого стека, вы также можете пойти на поставщики SaaS, как Datadog , Операции GCloud (ранее укладку) и т. Д. После настройки приборов в приложениях, где это применимо.

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

Но как насчет агентов, которые подвергают все данные и метрики? Вещи интереснее, чем когда-либо с слияние между открытой трассировкой и открытой переписью Создание Открытая телеметрия который является стандартом, чтобы с нетерпением ждать для всех наблюдаемости в будущем.

Если вы хотите получить более полную идею о будущем (или я должен сказать настоящее) наблюдаемости, я бы порекомендовал пройти через этот разговор Тома и Фредора:

Опыт разработчика

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

Другими словами, внутренняя петля DEV не была таким хорошим до сих пор с Куберанетами до недавнего времени, так как произошло появление огромного количества инструментов для решения этой проблемы. Хотя есть много инструментов, которые пытаются обратиться к Devex (опыт разработчика) с Куберанетами, они не обслуживают каждый сценарий там, поэтому вы можете выбрать правильный инструмент, который работает для вас в зависимости от того, используете ли вы локальные кластеры Удаленные кластеры или гибридные кластеры для развития.

Некоторые из инструментов были бы Skapshold с Облачный код , Наклон , Мост для Кубератесов , ОКТЕТО , Предварительный просмотр услуг с Telepresence С Сад И так на каждом обращении к аналогичной проблеме по-разному. Хотя они сделали работу намного проще, еще есть еще несколько способов пойти, так как по мне, по мне, Кубернаны, по сути, по сути исчезнули за кулисами, позволяющие разработчикам сосредоточиться только на логике под рукой, но я очень уверен, что мы на правильном пути к нему.

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

Мне просто хотелось бы заключить здесь выступление, что сделать ваше приложение «Cloud Nountain» — это постоянное путешествие, поскольку у вас всегда есть комната для улучшения в одном месте или другое, и это должно быть постепенно выполнено в разных фазах без охвата. Поверь мне, я сделал это И я знаю, как это чувствует, но если вы начнете маленькие и масштабируемые постепенно, то это должно быть интересное путешествие.

Любые вопросы? Ищу помощь? Не стесняйтесь добраться до меня @techahoy Отказ И если это помогло, поделитесь этим через своих друзей, повесьте и следите за нами для большего в этом каждую неделю. Увидимся все скоро.

Инфраструктура — Diving Deep (5 частей серии)

Оригинал: «https://dev.to/timecampus/infrastructure-engineering-the-kubernetes-way-o8j»