В статье описывается система управления контейнеризацией 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.