DevOps Kubernetes

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

Kubernetes для чайников

Сегодня дадим ответ на вопрос «Kubernetes – что это?» и расскажем об основах работы с кубернетес для чайников. Благодаря Kubernetes можно масштабировать контейнеры без дополнительных затрат, используя возможности данного программного обеспечения. Кубернетес можно применять для команд и проектов любых размеров. Программное обеспечение имеет открытый код и комьюнити его любит за широкую свободу действий. По работе с Kubernetes Habr предлагает много публикаций, подтверждающих гибкость и совместимость с разными инфраструктурами. Например, Azure Kubernetes (AKS) – бессерверная платформа с возможностями CI/CD корпоративного уровня.
Terraform Kubernetes

Docker Kubernetes – также удачный симбиоз. Те, кто пользуется контейнерами в Docker, часто сталкиваются с проблемой. Как запускать и балансировать контейнеры на большом количестве хостов? Проект Docker Kubernetes предусматривает API для логического распределения контейнеров. Можно определять группы, балансировать нагрузку и выстраивать размещение.

Terraform Kubernetes – эффективная рабочая пара при деплое кластера куберенетес. Часто используется при миграции систем и сервисов в облачную инфраструктуру. В подтверждение совместимости кубера по запросу Kubernetes Хабр найдете публикации с практическими примерами и кейсами.

Немного разобрались с вопросом «Kubernetes – что это?», идем дальше к непосредственному разбору концепции.

 

Kubernetes Tutorial

В этом разделе будет небольшой Kubernetes tutorial по терминам и компонентам концепции. В работе Kubernetes используются такие понятия:

  • Kubernetes Cluster – кластер, состоящий из набора машин
  • Node – нода (машина)
  • Kubernetes Secrets – объекты с конфиденциальной информацией
  • Pods – группа контейнеров
  • Kubernetes Service – сущность, определяющая доступ к Pods
  • Kubernetes Replication Controllers – обеспечивает запуск реплик Pods
  • Kubernetes Volumes – директория
  • Kubernetes Jobs – контроллер, создающий и отслеживающий Pods
  • Kubernetes Labels – пары «ключ-значение», прикрепляемые к объектам
  • Среда – среда разворачивания контейнеров. 




А теперь вкратце поговорим про компоненты. Components Kubernetes dashboard выполняют базовые операции и обрабатывают события. Запускаются в произвольном кластере и на любой машине.

  • kube-apiserver – компонент, предоставлемый API Kubernetes, клиентская часть dashboard, используется при горизонтальном масштабировании
  • etcd – хранилище данных «ключ-значение»
  • kube-scheduler – используется для отслеживания под и привязки их к нужному узлу
  • kube-controller-manager – компонент, запускающий процессы контроллера
  • cloud-controller-manager – компонент, запускающий контроллеры, взаимодействующие с облачными сервисами
  • kubelet – агент для каждого узла, отслеживает запуск контейнеров в Pod
  • kube-proxy – прокси, работающий в каждом узле.

Есть и другие, дополнительные компоненты кластера, не указанные в этом кратком Kubernetes tutorial. С ними вы познакомитесь поближе уже непосредственно при работе с Kubernetes.

Чтобы осуществить install Kubernetes Ubuntu (установить кубернетес на виртуальную машину Ubuntu), сделайте несколько шагов:

  1. Пройдите предустановку.
  2. Настройте окружение.
  3. Установите Kubeadm, Kubelet, Kubectl.
  4. Запустите кластер от master.
  5. Присоедините ноды к кластеру.

Рекомендован Ubuntu 16.04 image, так как кубернетес тянет много ресурсов.

Kubernetes AWS

Для работы с Kubernetes AWS используется специальный управляемый сервис Amazon EKS (Elastic Kubernetes Service). Сюда можно перенести любое приложение кубернетес, используя Kubernetes Configmap. Конфигмап помогает разделять файлы и контейнеры, избавляя от необходимости упаковывать конфиги в образы. Возможности Kubernetes AWS позволяют интегрироваться с сервисами CloudWatch, Auto Scaling Groups, Access Management, VPC. Это дает возможность масштабирования, мониторинга, балансировки нагрузки.

Kubernetes AWS

 

Kubernetes Deployment

Контроллер Kubernetes Deployment дает возможность декларативно обновлять ноды и наборы реплик. Вы описываете нужное состояние объекта Kubernetes Deployment на нужном режиме контроля. Планируя развертывание, не забудьте создать аккаунт Kubernetes GitHub. Возьмите на заметку – пакетный менеджер Kubernetes Helm облегчает установку первых рабочих нагрузок.

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

Для мониторинга можно использовать Kubernetes Prometheus, который выполняет проактивный мониторинг кластера. Также отображает видимость и планирует его производительность, высылает уведомления от триггеров и предупреждений.

Kubernetes Secrets

Kubernetes Secrets

Мы уже упоминали, что Kubernetes Secrets – объекты с конфиденциальной информацией, например, OAuth-токены, пароли, ssh-ключи. Информация в форме Kubernetes Secrets более гибкая и безопасная при сборке образа или описании контейнера. Секреты могут создаваться и пользователем, и системой. При использовании секрета, под на него ссылается как на файл.

 

Kubernetes Service

Объект кластера Kubernetes Service – абстрактный объект, определяющий логический набор подов. Кроме этого сервис определяет политику доступа к подам. Рекомендуемый формат для Kubernetes Service  – YAML, JSON. Сервисы дают возможность принятия трафика приложениями. Они могут быть открыты разными способами, в зависимости от типа в спецификации.

Kubernetes vs Docker

Когда говорят о Kubernetes vs Docker, почему-то иногда их противопоставляют друг другу. Kubernetes vs Docker – это не противопоставление, а сотрудничество. Различие есть, но это два разных программных продукта, которые могут успешно работать в паре. Кубернетес позволяет управлять контейнерами Docker через API. Запускает контейнеры, рабочие нагрузки, помогает в перемещении и масштабировании контейнеров на разных серверах. Более подходящим сравнением двух технологий является Kubernetes vs Docker Swarm. Docker Swarm фокусируется на сборке контейнеров в кластер. Технология интегрирована в Docker и использует свой собственный API.

Kubernetes vs Docker

FAQ

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

Самый простой пример реализации Kubernetes – это работа в паре с Docker, установив приложение Docker Desktop. Также понадобиться запустить утилиту kubectl. В Docker Desktop (настройки Preferences), нужно будет добавить Kubernetes. Сразу рекомендуем увеличить количество выделяемых ресурсов для Кубернетес и Docker. 

Все процессы и изменения в Kubernetes описаны в yaml-файлах. В файлах описываем процессы deployment, используя образы Dockerfile, можем менять конфигурацию (опять-таки через  yaml-файл). В итоге у нас появляется Pod минимальная единица развертывания в Кубернетесе. Далее работаем с описанием согласно вашим потребностям в данной конкретной оркестрации.

Полный курс Kubernetes может составлять 40-70 часов – теория и практика. На таком курсе начнете с общих понятий оркестрации и контейнеризации, и плавно перейдете к Кубернетес. Есть интенсивные курсы, например, 2-3 дня теории и практики. Это довольно плотный интенсив, и нужно быть готовым к насыщенной учебе несколько часов  в день. Для опытных разработчиков и администраторов разработаны 8-часовые интенсивы в формате learning-by-doing. Концепция предусматривает мало теории и больше практики – обучение прямо по ходу практических заданий. Но здесь нужно быть уже подкованным в теории, чтобы успеть освоить практику в сжатые сроки.

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

Выбирать не нужно – можно удобно совмещать эти два программных продукта. В Kubernetes есть API, который запускает и помогает логически распределять контейнеры на группы. Он же балансирует нагрузку между машинами, выстраивает размещение, перемещает и масштабирует контейнеры на серверах. Можно также использовать технологию Docker Swarm, которая интегрирована в Docker. У Docker Swarm свой API, который сфокусирован на сборке контейнеров в кластер. Поэтому, не рекомендуем противопоставлять эти два программных продукта – применяйте их в паре.

Не совсем верно противопоставлять Kubernetes и Docker, так как Kubernetes не является системой оркестрации. В Кубернетес есть своя версия yaml-файлов вместо файлов compose. Данное программное обеспечение предназначено для планирования контейнеризации и описания процессов оркестрации. Система более развита,чем Docker и подходит для масштабного корпоративного пользования. Сравнивать Kubernetes более корректно с Docker Swarm или Amazon ECS. В Docker можно использовать Kubernetes с помощью Docker Swarm.

И Kubernetes, и Amazon ECS (AWS) являются быстрыми и масштабируемыми системами управления контейнерами. Они помогают запускать и управлять контейнерами в кластере на управляемых серверах. Довольно тяжело сравнивать Kubernetes и Amazon ECS. ECS – это сервис Amazon, который используется только со своими “родными” сервисами, например, IAM, and EC2. А Кубернетес – ПО с открытым кодом, которое можно использовать на сервисах Amazon ECS или Google Compute. Объединяющей чертой двух продуктов является возможность работать на Amazon EC2.

Kubernetes – проект с открытым исходным кодом, который доступен на GitHub. Программное обеспечение написано на языке программирования Go. Изначально Kubernetes был создан Google для оркестрации контейнеров на внутренних проектах компании. В 2014 году Кубернетес вышел в свободный доступ как open source project. Сегодня данный программный продукт поддерживается и развивается комьюнити. Среди основных контрибьюторов – Google и Red Hat.

Kubernetes может работать без Docker, равно как и Docker без Kubernetes. Тем не менее, работа в симбиозе значительно усиливает функционал этих двух программных продуктов. Оба инструмента активно используются в облачных вычислениях. Docker в этой паре отвечает за все, что связано с концепцией контейнеризации. Kubernetes – за оркестрацию контейнеров. Docker создает и запускает контейнеры в одной ОС, а также управляет ими. Когда Docker работает на нескольких ОС, за управление берется Kubernetes.

error: Контент защищен.