Добавил:
мой вк: vk.com/truecrimebitch больше работ здесь: https://github.com/alisadex Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Изд. № 29

.pdf
Скачиваний:
0
Добавлен:
11.05.2025
Размер:
1.77 Mб
Скачать

управления ВМ) в виртуальной машине в режиме высокой доступности посредством технологии Self-Hosted Engine;

терминальный сервер. Предназначен для развертывания в составе АС терминального сервера – инфраструктурная ВМ, обеспечивающая выдачу терминальным клиентам IP-адресов по протоколу DHCP, а также загрузку образа ОС на терминальные клиенты с использованием PXE по локальной сети.

Схема типовой технической архитектуры на основе ПК «СинтезМ-Сервер» представлена на рисунке 15.

Рисунок 15 - Виртуализация в защищенном ЦОД

Типовая схема обеспечения высокой доступности за счет применения ПК «СинтезМ-Сервер» в составе серверной группировки АС представлена на рисунке 16.

60

Рисунок 16 - Подсистемы виртуализации в защищенном ЦОД

Структура территориально-распределенных защищенных ЦОД, созданных на базе цифровой программной платформы «СинтезМ» представлена на рисунке 17.

Рисунок 17 - Структура территориально-распределенных защищенных ЦОД, созданных на базе цифровой платформы «СинтезМ»

61

Контрольные вопросы к разделу 4

1.Укажите основные компоненты цифровой программной платформы «СинтезМ» и их назначение.

2.Какие программные комплексы включает в себя ЗОС «СинтезМ»? Кратко охарактеризуйте их.

3.Каково назначение «СинтезМ-Сервер»?

4.Каково назначение «СинтезМ-Клиент»?

5.Что обеспечивает КП «ПСЗИ «СинтезМ»?

6.Укажите программные компоненты, входящие в состав КП «ПСЗИ «СинтезМ».

7.Какой комплекс программных средств в составе «СинтезМ» предназначен для создания АСЗИ в части обеспечения функционирования серверных группировок и автоматизированных рабочих мест пользователей?

8.Укажите программные компоненты, входящие в состав комплекса программных средств (КПС) «Функциональные сервисы».

9.Какие средства в составе КП «ПСЗИ «СинтезМ» обеспечивают резервное копирование?

62

5.Упражнения. Практическое развёртывание решений на базе технологии контейнеризации с помощью ПО Kubernetes

5.1. Общие положения

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

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

— платформа с открытым исходным кодом промышленного уровня, которая управляет размещением (планированием) и запуском контейнеров приложений в пределах компьютерных кластеров и между ними [4].

Кластер Kubernetes состоит из двух типов ресурса (рисунок 18):

Мастер – (ведущий узел) управляет кластером.

Рабочие узлы – компьютеры, на которых выполняются приложения.

Рисунок 18 - Схема кластера

Мастер отвечает за управление кластером. Мастер координирует все процессы в кластере, такие как планирование выполнения приложений, сохранение требуемого состояния приложений, а также их масштабирование и обновление [4].

63

Узел — это виртуальная машина или физический компьютер, который выполняет роль рабочего узла в кластере Kubernetes. У каждого узла есть Kubelet — агент, управляющий узлом и взаимодействующий с ведущим узлом Kubernetes. Узел также имеет инструменты для выполнения контейнерных операций, например, Docker или rkt. Кластер Kubernetes в промышленном окружении должен состоять как минимум из трёх узлов [4].

Ведущие узлы управляют кластером и узлами, которые используются для запуска приложений.

При развертывании приложений в Kubernetes вы сообщаете ведущему узлу запускать контейнеры приложений. Ведущий узел планирует выполнение контейнеров на узлах кластера. Узлы взаимодействуют с ведущим узлом посредством API Kubernetes, который предлагает ведущий узел. Кроме этого, конечные пользователи могут напрямую использовать API Kubernetes для работы с кластером [4].

5.2.Создание кластера Kubernetes (практическая работа № 1)

Вданной практической работе вы узнаете о компонентах системы Kubernetes и абстракциях, которые Kubernetes использует для представления кластера. Также вы получите понимание того, как работает Kubernetes. Вы научитесь работать со своим собственным кластером Kubernetes, используя панель мониторинга Kubernetes и «Терминал» [3].

Цель

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

Задание

1.Перейти на сайт и выполнить регистрацию https://kubecampus.io/.

2.Выбрать первый курс (Build Your First Kubernetes Cluster | Course 1)

иначать выполнение https://kubecampus.io/kubernetes/courses/first-kubernetes- cluster/lessons/kubernetes-concepts-and-building-your-first-cluster/.

3.Пройти тестирование.

4.Выполнить практическую работу.

5.Ответить на контрольные вопросы.

64

Методические указания

В этом руководстве демонстрируется процесс создания кластера Kubernetes в Ubuntu 18.04 и развертывания приложения для микросервисов Weaveworks Socks Shop в качестве демонстрации того, как запускать микросервисы в Kubernetes.

Цель этого руководства - дать возможность запустить демонстрационное приложение для микросервисов в созданном кластере kubernetes.

Для развертывания необходимо следующее аппаратное обеспечение: три сервера Ubuntu 18.04 с 4 Гб оперативной памяти и включенной частной сетью.

Серверы, к которым вы можете получить доступ, нажав на вкладки в левом верхнем углу {Control Plane, kube-02, kube-03}.

Шаг 1: Настройка каждого сервер в кластере для запуска Kubernetes

На каждом из трех серверов Ubuntu 18.04 под root (администратором) надо запустить следующие команды, команды можно ввести или выделить и скопировать/вставить в окне терминала слева [3]:

Загрузить открытый ключ подписи Google Cloud:

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key —keyring /usr/share/keyrings/cloud.google.gpg add –

Добавить репозиторий Kubernetes apt:

echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

Обновить индекс пакета apt с помощью нового репозитория и установить утилиты:

apt update apt install -y kubelet=1.20.0-00 kubeadm=1.20.0-00 kubectl=1.20.0-00 apt-mark hold kubelet kubeadm kubectl

Установить Docker:

export VERSION=19.03 && curl -sSL get.docker.com | sh

65

Kubelet

Основной агент, который запускается на узле Kubernetes и взаимодействует с Control Panel для выдачи команд этому узлу и отчета о состоянии.

Kubeadm

Инструмент, который выполняет действия, необходимые для создания кластера Kubernetes.

Kubectl

Инструмент командной строки, который позволяет управлять кластерами Kubernetes и отправлять команды api-серверу.

Docker Engine:

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

Шаг 2: Повторить описанные выше действия на серверах kube-02 и kube-03

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

Далее начинается настройка демон Docker на использование systemd для управления cgroups контейнера. Скопировать следующий блок и вставить его в окно терминала каждого узла {Control Panel, kube-02, kube-03} [3]:

mkdir /etc/docker

cat <<EOF | sudo tee /etc/docker/daemon.json

{

"exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file",

"log-opts": { "max-size": "100m"

},

"storage-driver": "overlay2"

}

EOF

systemctl enable docker systemctl daemon-reload systemctl restart docker

66

Только на узле контроль панели запустить эту команду, чтобы инициализировать Control Panel Kubernetes:

kubeadm init --ignore-preflight-errors=all

Выполнение данной процедуры может занять одну - две минуты.

Перед использованием кластера необходимо настроить инструмент командной строки kubectl, который позволит управлять кластером. Для настройки kubectl находим файл с именем config в каталоге $HOME/.kube.

Создать каталог:

mkdir -p $HOME/.kub

Скопировать конфигурационный файл, сгенерированный kubeadm, в $HOME/.kube/:

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

Изменить владельца файла на текущего пользователя, вошедшего в систему:

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

Шаг 3: Присоединить свои узлы к кластеру Kubernetes

Теперь можно присоединиться к любому количеству машин, выполнив команду kubeadm join на каждом узле от имени root.

Чтобы присоединить kube-02 и kube-03 в качестве рабочих узлов к кластеру, нужен токен, сгенерированный командой kubeadm init.

Запустить следующую команду на узле Control Panel:

kubeadm token create --print-join-command

Скопировать выходные данные и запустить их на обоих рабочих узлах

{kube-02, kube-03}.

Когда появится присоединение к рабочим узлам, можно обнаружить следующее сообщение:

This node has joined the cluster:

*Certificate signing request was sent to Control Plane and a response was received.

*The Kubelet was informed of the new secure connection details.

67

Удостовериться в том, что все узлы теперь подключены к Control Panel, запустить следующую команду на узле Control Panel Kubernetes:

kubectl get nodes

Успешный результат будет выглядеть следующим образом:

NAME

STATUS

ROLES

AGE

VERSION

kube-01

NotReady

control-plane,master

2m56s

v1.x.x

kube-02

NotReady

<none>

95s

v1.x.x

kube-03

NotReady

<none>

93s

v1.x.x

Шаг 4: Настройка Kubernetes для работы в сети

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

Установка надстройки Weave Net на Control Panel kube-01 обеспечит подключение к сети и сетевую политику, будет выполнять работу по обе стороны сетевого раздела и не требует внешней базы данных (подробнее о дополнении Weave Net смотрите в документации Weave Works).

Weave-net - это плагин CNI, который предоставляет виртуальную сеть, соединяющую контейнеры docker на нескольких хостах.

По умолчанию Kubernetes поставляется с простым сетевым плагином, который не обладает возможностями наложения сетей.

Далее происходит развертывание сети pod в кластере.

Процесс установки дополнения Weave Net осуществляется следующим образом.

На узле Control Plane необходимо запустить команду kubectl apply, которая создаст все сетевые ресурсы в кластере из предоставленного файла манифеста [3]:

kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave- daemonset-k8s-1.11.yaml

Результат будет выглядеть так:

serviceaccount "weave-net" created clusterrole "weave-net" created clusterrolebinding "weave-net" created role "weave-net" created

68

rolebinding "weave-net" created daemonset "weave-net" created

Прежде чем двигаться дальше, необходимо проверить готовность DNS. Через одну – две минуты можно запустить команду kubectl get, которая позволяет отобразить ресурсы и распечатать таблицу с наиболее важной информацией об указанных ресурсах:

watch kubectl get pods --all-namespaces

Ctrl-C для выхода.

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

NAMESPACE

NAME

READY

STATUS

RESTARTS

AGE

 

 

 

kube-system

etcd-kube-01

1/1

Running

0

5m

 

 

 

kube-system

kube-apiserver-kube-01

1/1

Running

0

6m

 

 

 

kube-system

kube-controller-manager-kube-01

1/1

Running

0

5m

 

 

 

kube-system

kube-dns-6f4fd4bdf-whbhd

3/3

Running

0

6m

 

 

 

kube-system

kube-proxy-2hdhk

1/1

Running

0

6m

 

 

 

kube-system

kube-proxy-tvhjk

1/1

Running

0

5m

 

 

 

kube-system

kube-proxy-wspmv

1/1

Running

0

5m

 

 

 

kube-system

kube-scheduler-kube-01

1/1

Running

0

6m

 

 

 

kube-system

weave-net-9ghn5

2/2

Running

1

5m

 

 

 

kube-system

weave-net-lh8tq

2/2

Running

0

5m

 

 

 

kube-system

weave-net-qhr25

 

 

 

 

 

 

 

Необходимо проверить состояние узлов еще раз:

kubectl get nodes

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

69