Интересное

Руководство по работе с Kubernetes для начинающих

Kubernetes – это портативная расширяемая платформа для управления контейнерами на серверах. Она поставляется с открытым кодом, поэтому на рынке достаточно сервисов и инструментов для декларативной настройки и автоматизации процессов.

Зачем нужен Kubernetes

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

Причины популярности Kubernetes:

  1. Развертываемые приложения отделены от инфраструктуры для повышения безопасности.
  2. Разработка и тестирование работают одинаково на локальном компьютере и в облаке.
  3. Контейнеры свободно переносятся между Ubuntu, CoreOS, RHEL и другими системами.
  4. Происходит изоляция ресурсов с прогнозированием производительности.

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

Назначение Kubernetes

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

Перечень возможностей:

  1. Обнаружение контейнера происходит по имени DNS или IP-адресу.
  2. Система самостоятельно балансирует нагрузку и распределяет трафик в сети.
  3. Подключение выбранного типа хранилища происходит в автоматическом режиме.
  4. Платформа перезапускает отказавшие контейнеры или блокирует к ним доступ.
  5. Конфиденциальная информация хранится изолированно от других данных.

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

Основные компоненты архитектуры

Несмотря на удобство и простоту фреймворка Kubernetes, перед его использованием, при разработке или развертывании приложений, необходимо разобраться в архитектуре. Например, понять, как соединяются между собой контейнеры (через интерфейс API), и узнать, почему компоненты разделены на две основные группы – Master Node и Worker Node.

Базовые компоненты:

  1. Nodes – виртуальная (физическая) машина, на мощностях которой запущены контейнеры.
  2. Pods – базовые модули управления приложениями, состоящие из одного или нескольких контейнеров.
  3. Volume – ресурс, позволяющий одновременно запускать несколько контейнеров.
  4. Kube-Proxy – комплекс из прокси-сервера и модуля балансировки нагрузки, позволяющий маршрутизировать входящий трафик под конкретный контейнер Pods.
  5. Kubelet – транслятор статусов Pods на узле и контроллер корректности работы контейнера и образа в целом.

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

Процесс установки Kubernetes 

При выборе автоматической установки вникать в детали не понадобится, но требуется выделить достаточное количество системных ресурсов, чтобы платформа работала бесперебойно. Например, при небольшом количестве контейнеров и простой взаимосвязи достаточно 1-2 процессорных ядер, 2-4 Гб оперативки и двух виртуальных машин, выполняющих функции Master и Worker Node.

Инсталляция на Ubuntu

Проще всего воспользоваться одной из готовых реализаций – Minikube или Kubespray. Если нужно установить Kubernetes на сервер с операционной системой Ubuntu вручную, понадобятся права суперпользователя. Начнем с установки Docker для узла. Перечень команд для этого выглядит следующим образом:

 apt-get update  apt-get install -y docker.io

При необходимости организовать создание контейнеров более новых версий перечень команд будет несколько иным:

 apt-get update  apt-get install -y   apt-transport-https   ca-certificates   curl   software-properties-common

 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add –

 add-apt-repository            "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")            $(lsb_release -cs)            stable"  apt-get update

 apt-get install -y docker-ce docker-ce-cli containerd.io

Docker для одного узла установлен. Следующий шаг – установка модулей kubeadm (создание и настройка кластеров), kubelet (их запуск на хостах), kubectl (настройка компонентов, входящих в кластер). Для этого вводятся следующие команды:

 apt-get update && apt-get install -y apt-transport-https software-properties-common  curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -  add-apt-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"  apt-get update  apt-get install -y kubelet kubeadm kubectl  systemctl enable kubelet && systemctl start kubelet

Инсталляция на CentOS

При установке на операционную систему CentOS любой версии нужно выполнить ряд требований. Так, понадобится минимум 3 машины (1 главный, 2 рабочих узла), которые подключены к общей сети или интернету. Здесь также вся работа проводится в учетной записи sudo или root. Процедура проводится, как и в случае с Ubuntu, через консоль.

Команды для установки Docker:

 yum install -y docker  systemctl enable docker && systemctl start docker

Компоненты Kubernetes (kubeadm, kubelet, kubectl) инсталлируются так:

 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

После ввода команд (при отсутствии ошибок) можно приступать к настройке платформы. Процесс включает инициализацию кластера, создание CNI, добавление узлов Nodes и получение токена для авторизации.

Настройка Kubernetes

Сначала указывается сервер, на который был инсталлирован Kubernetes. Он становится первичным, где будут запускаться остальные операции. Инициализация выполняется при помощи команды:

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

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

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

 mkdir -p $HOME/.kube  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Теперь можно настраивать Container Network Interface (CNI, сетевой интерфейс контейнера). Чтобы избавить себя от рутины ручного ввода команд, рекомендуется установить плагин Flannel или ему подобный (Weave Net, Calico). Первый устанавливается так:

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

После ввода команды на экране отображаются имена всех созданных ресурсов.

Теперь пользователь добавляет Nods в существующий кластер. Для этого требуется подключение к серверу через SSH, установка модулей Docker, Kubelet, Kubeadm (вопрос рассматривался выше). Выполнение команды:

 kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>

Остается получить токен авторизации кластера. Если подключение SSH еще не прервано, повторно заходить на сервер не нужно. Токен выдается после ввода команды:

 kubeadm token list

По умолчанию он действует 24 часа. Если поставлена задача добавить новый узел по завершении периода, новый создается командой:

 kubeadm token create

Вывод выглядит примерно так:

 5didvk.d09sbcov8ph2amjw

На этом все. Система готова к эксплуатации. Дальнейшие действия пользователя зависят от стоящих задач и опыта.

Межтекстовые Отзывы
Посмотреть все комментарии
guest

Как установить Java Development Kit

Разработка #IDE #Linux #Разбор #Java Для разработки на Java должен быть установлен комплект разработчика приложений – Java Development Kit...

Работа с массивами в JavaScript

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

Что такое Data Science

Разработка #Облачные решения #Обзор #Технологии #Аналитика #Карьера Поговорим о том, что такое Data Science, почему она так важна...

Выбор темы для интернет-магазина на WordPress

Разработка #Плагины #Интернет-магазин #Веб-дизайн #Шаблоны #WordPress «WordPress для блога!» — говорили они. «Но ведь… есть плагины и темы…»...

Преимущества и недостатки CMS 1С-Битрикс

Разработка #1С #Обзор #Интернет-магазин #Веб-дизайн #Bitrix 1С-Битрикс – одна из самых популярных CMS, на которой работают тысячи сайтов....

Руководство по разработке приложений: как сделать приложение для iOS и Android самостоятельно

Разработка #Конверсия #Подборка #Разбор #UX/UI #Конструктор Разработка мобильного приложения от А до Я – это довольно долгая и...

Как создать рекламный сайт

Разработка #Монетизация #Реклама #Конструктор Рекламный сайт – это ресурс, нацеленный на продажу товаров или услуг. Вся информация, находящаяся...

Работа в IT: современные тенденции

Разработка #Технологии #Карьера #Менеджмент #Разбор Работа в IT-сфере как была перспективным направлением и путем к успешной карьере, так...

Как открыть закрытые вкладки в Google Chrome

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

Как создать туристический сайт

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

Как измерить и повысить вовлечённость пользователей сайта

Автор: Виталий Купренко ­– маркетинговый копирайтер, компания по разработке мобильных и веб-приложений Cleveroad. Согласно исследованию Gallup, полностью вовлечённые...

Автоматический деплой проекта с использованием GitHub и FTP на хостинг Timeweb

Разработка #FTP #GitHub #Хостинг В этой статье мы рассмотрим процесс создания репозитория на GitHub и настройки автоматического деплоя...

Чем занимается веб-разработчик и что нужно для того, чтобы им стать

Разработка #Карьера #JavaScript #HTML/CSS #PHP #Python Сегодня программирование востребовано как никогда. Информационные технологии развиваются с колоссальной скоростью, и...

Язык программирования Python: применение, особенности и перспективы

Разработка #Программы #Обзор #Технологии #Карьера #Python Сегодня поговорим о том, что такое Python, чем же он хорош и...

Как публиковать новости через API в любом паблике. Пошаговая инструкция

Разработка #Telegram #ВКонтакте #JavaScript В этой статье я расскажу и покажу, как настроить автоматический постинг любой информации из...

Авторское право на код – как работает, когда защищает и как его зарегистрировать

Разработка #Программы #Законы #Разбор Поговорим о том, как работает авторское право на код в России и за рубежом....

10 лучших HTML-редакторов

Разработка #Программы #Редакторы кода #Подборка #HTML/CSS Рассматриваем лучшие приложения для работы с HTML-разметкой. Узнаем, чем пользуется верстальщик с глубокими познаниями...

Верстка сайта: инструкция для начинающих

Разработка #Веб-дизайн #HTML/CSS Разработка сайта – это долгая и плодотворная работа, которая, как правило, разделена на несколько этапов....

Как создать краудфандинговый сайт на базе WordPress

Выбираем плагин Переходим к главному – выбору краудфандингового плагина. Здесь есть варианты. Charitable Это бесплатный плагин для сбора...

Микроразметка Open Graph: базовые принципы и настройка

Разработка #Социальные сети #Контент #HTML/CSS #SEO Микроразметка помогает роботам ориентироваться на страницах сайта и забирать для формирования поисковой...