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

Что такое Kubernetes?

Вы знали, что уже давно пора заниматься контейнеризацией приложений? А вы знаете, что это такое? Контейнеризацией называют такую форму виртуализации операционной системы, когда приложение запускается в изолированном пользовательском пространстве, называемом контейнером. И каждое из запущенных таким способом приложений использует общую операционную систему. Многие считают это новшество очень удобным и практичным. Но контейнеры, по мнению массовых потребителей, имеют важный недостаток — трудный и долгий процесс настройки масштабирования. Однако эта проблема решилась благодаря автоматическим системам управления контейнерами. Самая известная система данного типа – Kubernetes. Иными словами эту систему можно назвать  программным обеспечением, имеющим открытый исходный код от компании Google. Система Kubernetes завоевала любовь и уважение пользователей благодаря тому, что они находят её гибкой, безопасной и мощной. Поэтому её jitsi meet установка – элемент, который точно не помешает.

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

Как работает Kubernetes?

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

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

Главные задачи Kubernetes

Конечно, у данной системы управления контейнерами имеются основные задачи, которые она выполняет. Постараемся их описать.

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

Ещё одной задачей этой системы является процедура масштабирования и запуска двух и более контейнеров в одно время на нескольких хостах.

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

Плюсы при использовании Kubernetes

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

  • Обнаружению сервисов и балансировке нагрузки

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

  • Автоматическому управлению хранилищем. Пользователи могут задавать, каким из хранилищ пользоваться для развёртывания — внутренним, внешним облачным провайдером или другими вариантами.
  • Автоматическому внедрению и откату изменений. Пользователи могут быстро создать любое дополнение к конфигурации. В случае нарушения стабильности развёртывания Kubernetes своими силами может откатить изменения до стабильной версии.
  • Автоматическому распределению ресурсов. Система сама способна распределять пространство, чтоб каждому контейнеру предоставить всё необходимое для работы.
  • Управлению паролями, настройками. Система также способна выступать как приложение по безопасной обработке конфиденциальных сведений, связанных с работой приложения (пароли, OAuth-токены, SSH-ключи). Настройки подвергаются обновлениям при отсутствии необходимости создания нового контейнера.
  • Самовосстановлению при сбоях. Благодаря особым метрикам и тестам Kubernetes способна моментально определить поврежденный либо переставший отвечать на запрос контейнер. Вышедший из строя контейнер создаётся с нуля и перезапускается на том же поде.

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

Из каких компонентов состоит Kubernetes?

Название компонента Его функция
Ноды Нода – это виртуальная либо физическая машина, на которой разворачивается и запускается контейнер. Кластер управляется первой запущенной нодой (мастер-нодой) при использовании менеджера контроллеров и планировщика.
Под Подом называют набор нескольких контейнеров, которым предстоит совместное развёртывание на ноде. Сбор контейнеров различных видов необходимо, когда они являются взаимозависимыми и им нужно запуститься в одной ноде для увеличения скорости отклика при взаимодействии. К примеру, таковыми часто являются контейнеры, которые хранят веб-приложения и сервисы для кэширования.
Набор реплик Набор реплик отвечает за контроль над репликами подов, которые были созданы на кластере. Зачем нужно несколько реплик, а не одна? Потому их большое количество повышает уровень устойчивости к отказам и уровень масштабирования приложения.
Развёртывание В этом объекте хранится полное описание подов, реплики и алгоритмы их замены при изменении параметров. Развёртывание может позволить выполнение декларативных обновлений на нодах и наборах реплик.
Набор состояния Этот объект осуществляет развёртывание и управление различным количеством подов.
Набор даемона Этот объект «следит» за запуском одного экземпляра пода на отдельной ноде (или на выбранных нодах).
Метки Метки, или селекторы предназначаются, чтобы осуществлять маркировку ресурсов и упрощают групповую манипуляцию. Метки могут способствовать выбору, а также фильтрации объектов на основе их значения.

 

Это не самостоятельные объекты описываемой системы, однако при их отсутствии невозможно её полноценное функционирование.

Как установить kubernetes

Чтобы установить kubernetes на русском, нам надо выполнить ряд команд.

Имеются сервера под управлением Ubuntu 16.04 лиюбо Centos 7 (лучше выбирать несколько серверов).

Внимание! Включите ваш «swap» (если же вы работаете на новом сервере, то не создавайте раздел для свопа).

Далее установите «docker» на каждом сервере. Установку докера в Ubuntu можно назвать достаточно простой:

apt-get update

apt-get install -y docker.io

Установка докера в ОС Centos тоже не сложна:

yum install -y docker

systemctl enable docker && systemctl start docker

После установки докера вам необходимо установить на всех серверах kubeadm, kubelet и kubectl. Они являются необходимыми компонентами, чтобы создать и управлять Kubernetes. В случае с Ubuntu 18 04 это можно осуществить благодаря следующим командам:

apt-get update && apt-get install -y apt-transport-https

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add –

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list

deb http://apt.kubernetes.io/ kubernetes-xenial main

EOF

apt-get update

apt-get install -y kubelet kubeadm kubectl

Для Centos 7:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

EOF

setenforce 0

yum install -y kubelet kubeadm kubectl

systemctl enable kubelet && systemctl start kubelet

Чтобы организовать сеть в кластере, используйте Flannel – программно-определяемую сеть.

Во время инициализации кластера добавьте параметр –pod-network-cidr=10.244.0.0/16. Этот ключ поможет вам выбрать необходимый сетевой плагин kubernetes install debian.

Далее выберите один из серверов и инициализируйте кластер:

kubeadm init –pod-network-cidr=10.244.0.0/16

После на экране появится команда по присоединению нод кластера к мастеру – вам нужно скопировать и сохранить её.

Далее работайте с кластером под отдельным пользователем. Для этого выполните команды:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

Перед тем, как запустить приложения в kubernetes cluster, настройте одну сеть для подов. Устанавливаем Flannel:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Хотите убедиться, что кластер стабильно работает, что kubernetes deploy? Проверьте это, запустив команду:

kubectl -n kube-system get pods

 

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

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

Является ли сложной процесс настройки Кubernetes? Ведь основы kubernetes сложно понять. Стоит ли он того, чтобы вкладываться в него?

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

Какие имеются системные требования для установки этой системы?

Требования имеются, поэтому перед тем, как начать установку, вам лучше проверить эти требования. Итак, вам понадобится 64-битная архитектура, а также ядро версией не ниже, чем 3.10.