diff --git a/README.md b/README.md index 64ef33813a..8b223d4681 100644 --- a/README.md +++ b/README.md @@ -1,117 +1,128 @@ -# Домашнее задание к занятию "`Название занятия`" - `Фамилия и имя студента` +# Домашнее задание к занятию "Компоненты Kubernetes" - `Молоствов Андрей` +--- -### Инструкция по выполнению домашнего задания +### Требования приложения - 1. Сделайте `fork` данного репозитория к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/git-hw или https://github.com/имя-вашего-репозитория/7-1-ansible-hw). - 2. Выполните клонирование данного репозитория к себе на ПК с помощью команды `git clone`. - 3. Выполните домашнее задание и заполните у себя локально этот файл README.md: - - впишите вверху название занятия и вашу фамилию и имя - - в каждом задании добавьте решение в требуемом виде (текст/код/скриншоты/ссылка) - - для корректного добавления скриншотов воспользуйтесь [инструкцией "Как вставить скриншот в шаблон с решением](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md) - - при оформлении используйте возможности языка разметки md (коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md)) - 4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`); - 5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github. - 6. Любые вопросы по выполнению заданий спрашивайте в чате учебной группы и/или в разделе “Вопросы по заданию” в личном кабинете. - -Желаем успехов в выполнении домашнего задания! - -### Дополнительные материалы, которые могут быть полезны для выполнения задания +База данных (StatefulSet) -1. [Руководство по оформлению Markdown файлов](https://gist.github.com/Jekins/2bf2d0638163f1294637#Code) +Копий: 3 ---- +RAM на копию: 4 ГБ + +CPU на копию: 1 ядро -### Задание 1 +Хранилище на копию: 50 ГБ (предположительно) + +``` +Итого: +RAM: 3 × 4 ГБ = 12 ГБ +CPU: 3 × 1 ядро = 3 ядра +Storage: 3 × 50 ГБ = 150 ГБ +``` +Кеш (StatefulSet/Deployment) -`Приведите ответ в свободной форме........` +Копий: 3 -1. `Заполните здесь этапы выполнения, если требуется ....` -2. `Заполните здесь этапы выполнения, если требуется ....` -3. `Заполните здесь этапы выполнения, если требуется ....` -4. `Заполните здесь этапы выполнения, если требуется ....` -5. `Заполните здесь этапы выполнения, если требуется ....` -6. +RAM на копию: 4 ГБ + +CPU на копию: 1 ядро ``` -Поле для вставки кода... -.... -.... -.... -.... +Итого: +RAM: 3 × 4 ГБ = 12 ГБ +CPU: 3 × 1 ядро = 3 ядра ``` -`При необходимости прикрепитe сюда скриншоты -![Название скриншота 1](ссылка на скриншот 1)` +Фронтенд (Deployment) +Копий: 5 +RAM на копию: 50 МБ = 0.05 ГБ ---- +CPU на копию: 0.2 ядра + +``` +Итого: +RAM: 5 × 0.05 ГБ = 0.25 ГБ +CPU: 5 × 0.2 ядра = 1 ядро +``` -### Задание 2 +Бекенд (Deployment) +Копий: 10 -`Приведите ответ в свободной форме........` +RAM на копию: 600 МБ = 0.6 ГБ -1. `Заполните здесь этапы выполнения, если требуется ....` -2. `Заполните здесь этапы выполнения, если требуется ....` -3. `Заполните здесь этапы выполнения, если требуется ....` -4. `Заполните здесь этапы выполнения, если требуется ....` -5. `Заполните здесь этапы выполнения, если требуется ....` -6. +CPU на копию: 1 ядро ``` -Поле для вставки кода... -.... -.... -.... -.... +Итого: +RAM: 10 × 0.6 ГБ = 6 ГБ +CPU: 10 × 1 ядро = 10 ядер ``` +### Запас на отказоустойчивость -`При необходимости прикрепитe сюда скриншоты -![Название скриншота 2](ссылка на скриншот 2)` +Правило: выдерживать потерю одной ноды +Для обеспечения отказоустойчивости добавляем запас: +Дополнительные ресурсы: +1 копия каждого компонента ---- +Дополнительные ресурсы: ОЗУ: ~10 ГБ, CPU: ~6 ядер + +``` +Итого с запасом: +ОЗУ: 30.25 + 10 = 40.25 ГБ +CPU: 17 + 6 = 23 ядра +Хранилище: 150 ГБ +``` + +### Ресурсы на системные компоненты Kubernetes + +*На каждую ноду требуется для системных нужд: -### Задание 3 +*kubelet, kube-proxy: 0.5 ГБ ОЗУ, 0.5 ядра -`Приведите ответ в свободной форме........` +*container runtime: 0.5 ГБ ОЗУ, 0.5 ядра -1. `Заполните здесь этапы выполнения, если требуется ....` -2. `Заполните здесь этапы выполнения, если требуется ....` -3. `Заполните здесь этапы выполнения, если требуется ....` -4. `Заполните здесь этапы выполнения, если требуется ....` -5. `Заполните здесь этапы выполнения, если требуется ....` -6. +system/OS: 1 ГБ ОЗУ, 0.5 ядра ``` -Поле для вставки кода... -.... -.... -.... -.... +Итого на ноду: 2 ГБ ОЗУ, 1.5 ядра ``` -`При необходимости прикрепитe сюда скриншоты -![Название скриншота](ссылка на скриншот)` +### Расчет количества рабочих нод -### Задание 4 +Предполагаемая конфигурация ноды: -`Приведите ответ в свободной форме........` +ОЗУ: 16 ГБ + +CPU: 8 ядер + +Хранилище: 100 ГБ SSD + +``` +Расчет: +Доступные ресурсы на ноду (за вычетом системных): +ОЗУ: 16 ГБ - 2 ГБ = 14 ГБ +CPU: 8 ядер - 1.5 ядра = 6.5 ядер +Требуемое количество нод: +По ОЗУ: 40.25 ГБ / 14 ГБ = 2.87 это 3 ноды +По CPU: 23 ядра / 6.5 ядра = 3.54 это 4 ноды +Vаксимальное значение: 4 ноды +``` -1. `Заполните здесь этапы выполнения, если требуется ....` -2. `Заполните здесь этапы выполнения, если требуется ....` -3. `Заполните здесь этапы выполнения, если требуется ....` -4. `Заполните здесь этапы выполнения, если требуется ....` -5. `Заполните здесь этапы выполнения, если требуется ....` -6. +### Итоговая рекомендуемая конфигурация ``` -Поле для вставки кода... -.... -.... -.... -.... +Количество нод: 4 +Параметры каждой ноды: +- ОЗУ: 16 ГБ (14 ГБ доступно для подов) +- CPU: 8 ядер (6.5 ядер доступно) +- Хранилище: 100 ГБ SSD +- Сеть: 1 Гбит/с + +Суммарные ресурсы кластера: +- ОЗУ: 4 × 16 ГБ = 64 ГБ (56 ГБ доступно) +- CPU: 4 × 8 = 32 ядра (26 доступно) +- Хранилище: 4 × 100 = 400 ГБ ``` -`При необходимости прикрепитe сюда скриншоты -![Название скриншота](ссылка на скриншот)` diff --git a/img/1.jpg b/img/1.jpg new file mode 100644 index 0000000000..98079eb6dd Binary files /dev/null and b/img/1.jpg differ diff --git a/img/2.jpg b/img/2.jpg new file mode 100644 index 0000000000..617cf5e28f Binary files /dev/null and b/img/2.jpg differ diff --git a/img/3.jpg b/img/3.jpg new file mode 100644 index 0000000000..01676978f7 Binary files /dev/null and b/img/3.jpg differ diff --git a/img/4.jpg b/img/4.jpg new file mode 100644 index 0000000000..7b9fa8a61d Binary files /dev/null and b/img/4.jpg differ