devops2._использование_kubernetes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
devops2._использование_kubernetes [2025/03/29 06:06]
val
devops2._использование_kubernetes [2025/09/26 09:40] (current)
val [Вопросы]
Line 1: Line 1:
 ====== DevOps2. Использование Kubernetes ====== ====== DevOps2. Использование Kubernetes ======
  
-===== При вводе в эксплуатацию учесть ===== 
  
-  * 4GB на узел для лонгхорн и кейклоак +
-  * 12-й дебиан +
-  * Нужен работающий k8s для демонстрации,​ в ожидании Kubespray ​+
  
 ===== Программа курса ===== ===== Программа курса =====
Line 16: Line 13:
   - Сообщить его в чат преподавателю   - Сообщить его в чат преподавателю
  
 +===== Практикум =====
 +
 +  * [[https://​val.bmstu.ru/​~val/​pract/​dev2/​|Записи практикума]] ​
 ===== Модуль 1. Развертывание стенда и kubernetes кластера ===== ===== Модуль 1. Развертывание стенда и kubernetes кластера =====
  
Line 131: 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 159: 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 180: 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 192: 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 247: 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 260: 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 266: Line 276:
 ==== 3.1 Запуск gitlab-runner в kubernetes ==== ==== 3.1 Запуск gitlab-runner в kubernetes ====
  
 +  * [[Система Kubernetes#​Установка Helm]]
 +  * Методически,​ можно показать:​ "​Развертывание своего приложения (webd-chart с образом gowebd)"​
   * Сделать общий [[Система Kubernetes#​gitlab-runner kubernetes]] с тегом "​build"​   * Сделать общий [[Система Kubernetes#​gitlab-runner kubernetes]] с тегом "​build"​
  
Line 276: Line 288:
   * В GitLab добавляем тег ver1.1 и проверяем наличие образов   * В GitLab добавляем тег ver1.1 и проверяем наличие образов
  
-==== 3.3 Разворачивание нужной версии приложения в kubernetes ====+==== 3.3 Развертывание нужной версии приложения в kubernetes ====
  
 <​code>​ <​code>​
-kube1:~# mkdir gowebd-k8s;​cd $_+kube1:~# mkdir -p gowebd-k8s;​cd $_
 </​code>​ </​code>​
   * [[Система Kubernetes#​Deployment]] ver1.1   * [[Система Kubernetes#​Deployment]] ver1.1
Line 341: Line 353:
  
   * [[Система Kubernetes#​Работа со своим репозиторием]] для размещения helm пакета (будет использоваться в дополнительном материале)   * [[Система Kubernetes#​Работа со своим репозиторием]] для размещения helm пакета (будет использоваться в дополнительном материале)
 +
 +===== Практикум =====
 +
 +  * [[https://​val.bmstu.ru/​~val/​pract/​dev2/​dev2_mod3_pract.mp4|Запись практикума]] (длительность:​ 52 минуты)
 ===== Модуль 4. Дополнительные материалы ===== ===== Модуль 4. Дополнительные материалы =====
  
Line 385: Line 401:
  
   * Видео [[Мониторинг кластера Kubernetes]] (выполняем работы с 00:04:50 до конца)   * Видео [[Мониторинг кластера Kubernetes]] (выполняем работы с 00:04:50 до конца)
 +
 +==== 4.6 Бюджетная безотказная сеть для кластера ====
 +
 +  * Видео [[Бюджетная безотказная сеть для кластера]]
 +
 +==== 4.7 Все что должен знать 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
 +
devops2._использование_kubernetes.1743217567.txt.gz · Last modified: 2025/03/29 06:06 by val