This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
devops2._использование_kubernetes [2025/06/01 14:07] val [3.3 Разворачивание нужной версии приложения в kubernetes] |
devops2._использование_kubernetes [2025/09/26 09:40] (current) val [Вопросы] |
||
|---|---|---|---|
| Line 13: | Line 13: | ||
| - Сообщить его в чат преподавателю | - Сообщить его в чат преподавателю | ||
| + | ===== Практикум ===== | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev2/|Записи практикума]] | ||
| ===== Модуль 1. Развертывание стенда и kubernetes кластера ===== | ===== Модуль 1. Развертывание стенда и kubernetes кластера ===== | ||
| Line 128: | Line 131: | ||
| * Только преподаватель | * Только преподаватель | ||
| - | * [[Язык программирования Python]] (в venv2, без ssl (добавим в теме ingress), с конфигурацией и с /var/www, для демонстрации работы) | + | * [[Язык программирования Python]] (в venv2, без ssl (добавим в теме ingress), с конфигурацией и с /var/www, для проверки работоспособности) |
| - | * Создаем и тестируем Docker образ для [[Технология Docker#Приложение python pywebd]] (безопасный вариант, для демонстрации всех нюансов в k8s) | + | * Создаем и тестируем Docker образ для [[Технология Docker#Приложение python pywebd]] (безопасный вариант, с конфигурацией и с /var/www, для начальных простых развертываний в k8s) |
| * Создаем проект **pywebd** (Public (Private на следующей итерации), без README) и [[Технология Docker#Использование Private Registry]] для хранения образа (метки latest и ver1.1) | * Создаем проект **pywebd** (Public (Private на следующей итерации), без README) и [[Технология Docker#Использование Private Registry]] для хранения образа (метки latest и ver1.1) | ||
| Line 156: | Line 159: | ||
| * Используем на kube1 [[Система Kubernetes#Инструмент командной строки kubectl]] | * Используем на kube1 [[Система Kubernetes#Инструмент командной строки kubectl]] | ||
| + | ===== Практикум ===== | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev2/dev2_mod1_pract.mp4|Запись практикума]] (длительность: 53 минуты) | ||
| ===== Модуль 2. Объекты kubernetes, helm ===== | ===== Модуль 2. Объекты kubernetes, helm ===== | ||
| Line 177: | Line 183: | ||
| kube1:~# mkdir pywebd-k8s;cd $_ | kube1:~# mkdir pywebd-k8s;cd $_ | ||
| </code> | </code> | ||
| - | * !!! Можно начать с использования образа gowebd, а потом усложнить | + | * !!! Можно начать с использования образа gowebd, а после демонстрации балансировки заменить на pywebd |
| * [[Система Kubernetes#Deployment]] | * [[Система Kubernetes#Deployment]] | ||
| * [[Система Kubernetes#Service]], [[Система Kubernetes#ClusterIP]] | * [[Система Kubernetes#Service]], [[Система Kubernetes#ClusterIP]] | ||
| - | * Предоставляем доступ к приложниям в k8s по [[Система Kubernetes#NodePort]] | + | * Предоставляем доступ к приложениям в k8s по [[Система Kubernetes#NodePort]] |
| + | * Проверка статуса пода | ||
| <code> | <code> | ||
| kube1:~/pywebd-k8s# kubectl -n my-ns exec -ti pods/my-webd-<TAB> -- sh | kube1:~/pywebd-k8s# kubectl -n my-ns exec -ti pods/my-webd-<TAB> -- sh | ||
| Line 189: | Line 196: | ||
| kube1:~/pywebd-k8s# kubectl get pods -n my-ns --watch | kube1:~/pywebd-k8s# kubectl get pods -n my-ns --watch | ||
| </code> | </code> | ||
| + | |||
| + | * Настройка лимитов в [[Система Kubernetes#Manifest]] | ||
| + | * Основы администрирования систем Linux [[Основы администрирования систем Linux#Модуль 11. Анализ производительности и оптимизация системы]] | ||
| + | * Управление ПО [[Управление ПО в Linux#APK Alpine Linux]] | ||
| ==== 2.2 volumes, nodeAffinity, helm ==== | ==== 2.2 volumes, nodeAffinity, helm ==== | ||
| Line 244: | Line 255: | ||
| <code> | <code> | ||
| - | $ curl --connect-to "":"":192.168.X.64:443 https://pywebd.corp24.un | + | $ curl --connect-to "":"":192.168.X.64:443 https://pywebd.corpX.un |
| server# cat /etc/bind/corpX.un | server# cat /etc/bind/corpX.un | ||
| Line 257: | Line 268: | ||
| * Удаляем [[Система Kubernetes#LoadBalancer]] | * Удаляем [[Система Kubernetes#LoadBalancer]] | ||
| + | ===== Практикум ===== | ||
| + | * [[https://val.bmstu.ru/~val/pract/dev2/dev2_mod2_pract.mp4|Запись практикума]] (длительность: 12 минут) | ||
| ===== Модуль 3. Создание CI/CD в kubernetes ===== | ===== Модуль 3. Создание CI/CD в kubernetes ===== | ||
| Line 264: | Line 277: | ||
| * [[Система Kubernetes#Установка Helm]] | * [[Система Kubernetes#Установка Helm]] | ||
| + | * Методически, можно показать: "Развертывание своего приложения (webd-chart с образом gowebd)" | ||
| * Сделать общий [[Система Kubernetes#gitlab-runner kubernetes]] с тегом "build" | * Сделать общий [[Система Kubernetes#gitlab-runner kubernetes]] с тегом "build" | ||
| Line 339: | Line 353: | ||
| * [[Система Kubernetes#Работа со своим репозиторием]] для размещения helm пакета (будет использоваться в дополнительном материале) | * [[Система Kubernetes#Работа со своим репозиторием]] для размещения helm пакета (будет использоваться в дополнительном материале) | ||
| + | |||
| + | ===== Практикум ===== | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev2/dev2_mod3_pract.mp4|Запись практикума]] (длительность: 52 минуты) | ||
| ===== Модуль 4. Дополнительные материалы ===== | ===== Модуль 4. Дополнительные материалы ===== | ||
| Line 391: | Line 409: | ||
| * Видео [[Все что должен знать DevOps про PostgreSQL]] | * Видео [[Все что должен знать DevOps про PostgreSQL]] | ||
| + | |||
| + | ===== Доп. занятие ===== | ||
| + | |||
| + | ==== Причины ==== | ||
| + | |||
| + | Много материала в 3 дня не помещается никак | ||
| + | |||
| + | Мало часов | ||
| + | |||
| + | Очень сложная тема, необходимо еще несколько раз переслушать материал | ||
| + | |||
| + | Много, сложно. Даже в том что я думаю, что усвоил, на самом деле не уверен | ||
| + | |||
| + | Объем данных создал в голове кашу | ||
| + | |||
| + | ==== Еще причины и пожелания ==== | ||
| + | |||
| + | Было очень тяжело. Во первых удерживать постоянно внимание. Это очень трудно | ||
| + | Второй день была лекция почти 4 часа и там удержание внимание превращается в подвиг. | ||
| + | |||
| + | Поэтому нужны перерывы. Хотя бы 5 минут на 40-60 минут освободить внимание. | ||
| + | |||
| + | Второй момент связан с той ситуацией, когда на второй день на самой тяжёлой лекции один студент сказал, а чем вы вообще занимаемся занимаемся. На мой взгляд его вопрос связан | ||
| + | не с пониманием каких-то конкретных вещей, а с потерей общего понимания занятия, его цели и смысла. | ||
| + | |||
| + | И тут, на мой взгляд, просто нужен общий план лекций или план работ. | ||
| + | |||
| + | Без такого плана непонятно как распределять силы. Непонятно что важно, что не очень важно. | ||
| + | Непонятно что из чего вытекает. | ||
| + | |||
| + | Как правило по ходу лекции ты улавливаешь, что из чего вытекает в данный конкретный момент, но при этом через некоторый промежуток времени теряется общий план задачи. А что бы собственного говоря делаем, к чему идём? Зачем все эти шаги? | ||
| + | |||
| + | Если студент имеют возможность смотреть на такой план, то он может понять на каком этапе он находится, | ||
| + | что он уже сделал и что ему предстоит. | ||
| + | |||
| + | А если не может, то преподавателю при наличии такого плана достаточно будет 2-3 минут что бы вернуть к сути «заблудившегося» студента. | ||
| + | |||
| + | Мы сейчас находимся условно в пункте II.5. То есть мы проделали то, то и то. Сейчас мы делаем это, а после этого у нас по плану то-то, то. | ||
| + | |||
| + | ==== Вопросы ==== | ||
| + | |||
| + | Как реализуется управление конфигурацией и секретами в Kubernetes, и чем это лучше или хуже по сравнению с Ansible Vault? | ||
| + | |||
| + | Как Docker сети (bridge, host, overlay) работают и взаимодействуют между контейнерами на одном хосте и в кластере Kubernetes? | ||
| + | |||
| + | Какие подходы существуют для организации сетевого взаимодействия и безопасности (например, через Service и Ingress) при масштабном развертывании микросервисов в Kubernetes? | ||
| + | |||
| + | |||
| + | Очень хотелось бы рассмотреть https://github.com/rancher/rancher на живом примере (подготовка к развертыванию, работа в его веб-интерфейсе) | ||
| + | Rancher — это платформа для управления контейнерами с открытым исходным кодом. Rancher позволяет легко запускать Kubernetes в любом месте, соответствовать требованиям ИТ и расширять возможности команд DevOps. | ||
| + | |||
| + | |||
| + | |||
| + | 1 Базовые и продвинутые сущности k8s | ||
| + | |||
| + | 2 Стратегии deploy и rollback с реальными примерами из практики | ||
| + | |||
| + | 3 Работу с облаками | ||
| + | |||
| + | |||
| + | |||
| + | Хотелось бы рассмотреть поподробнее компоненты k8s | ||
| + | |||
| + | Такие как | ||
| + | |||
| + | Coredns | ||
| + | |||
| + | Ingress | ||
| + | |||
| + | Sidecar | ||
| + | |||
| + | Istio | ||
| + | |||
| + | Может рассмотреть подробно как работает например kube api и etcd, scheduler, kube-proxy | ||
| + | |||
| + | Можно показать визуально как это выглядит в k9s | ||
| + | |||