> For the complete documentation index, see [llms.txt](https://kirell.gitbook.io/madman/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kirell.gitbook.io/madman/k8s.md).

# 🐙K8S

Быстрый старт для практики

**Node & Pod** \
Узел ( NODE, физическая или виртуальная машина ) \
основной компонент или самой маленькой единицей называется Pod (Модуль)\
\
**Pod** - абстракция над контейнером (рабочая среда или слой по верх контейнера) для запуска 1 приложения или службы внутри него \
\
**Контейнер** - Приложение + окружение для него \
\
**абстрагируемся от Doker и т.д для взаимодействия только с Kubernetes. Он предлагает  готовую виртуальную сеть  каждый модуль получает свой IP. После ребута контейнера будет создан новый и выдан новый IP адрес**<br>

\
**Service & Ingress**\
Service  -  перманентный IP адрес  который может быть прикреплен к каждому модулю. Каждое приложение(контейнер \*модуль\*)  будет иметь свой собственный сервис.\
!!!ЖИЗНЕННЫЙ ЦИКЛ SERVICE И POD НЕ СВЯЗАНЫ МЕЖДУ СОБОЙ!!!(ЕСЛИ POD УМРЕТ ЕГО IP ОСТАЁТСЯ НЕ ИЗМЕНИМ )\
\
Внешняя служба  для доступа через интернет, браузер...

![](https://1157917639-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7L67rzjIjPt1uSm1L4KK%2Fuploads%2Fb4JYpXxhsNC0olrDiPRk%2Fimage.png?alt=media\&token=9286fb5b-c91d-457a-8762-708a1679a948)\
взаимодействие со своим приложением при помощи защищенного протокола и нормальным отображением url необходима внутренний компонент называемый   Ingres\
\
Ingres\
&#x20;так что в место нашего сервиса(Service) запрос сначала отправляется в Ingres а затем перенаправляется в службу - сервис(Service)\
-> тут же указывается roout \
\
То что указано выше чистая база для минимальной работы!!!! :fire::fire::fire::fire::fire:\
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\
\
ConfigMap &  Secrets\
Например у нас есть приложения которое работает с БД. обычно Endpoint указывается либо в самом приложении либо в конфигурационном файле. но обычно это делают внутри среды встроенного в образ приложения . и если  Endpoint  меняется будет необходимо перестраивать все приложение и перезапускать image/\
ConfigMap - выполняет внешнюю настройку нашего приложения, данный конфигурации дб или других внутренних служб которые мы используем. \
Мы подключаем ConfigMap **к Pod,** и если в данной ситуации мы изменим Endpoint в ConfigMap   то Pod просто рестартанет и подтянет новые конфигурационные элементы.\
\
\
Так же мы можем хранить в ConfigMap credential для подключения  к той же ДБ или топику Kafka или любы другим внешним сервисам! Но вводить в тестовый файл логины и пароли не безопасно по этому есть такой элемент называемый **Secrets** \
\
**Secrets  -** тоже самое что ConfigMap  но он используется для хранения секретных данных например **сертификатов** или **credential** и храниться он с кодировкой base64. \
**Secrets** точно также подключается к нашему модулю как **ConfigMap**\
\
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\
\ <mark style="color:red;">**Хранение данных и как это работает в kubernetes обеспечивает Volumes**</mark> \
**Volumes** - подключает физическое хранилище к нашему модулю и это хранилище может храниться где угодно. (Просто внешний жесткий диск подключенный к кластеру kubernetes)\
\
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\
\
**StatefulSet  &  Deployment**\
**Deployment**  - Схема модуля приложения и указание какое количество реплик мы хотим запустить еще одна абстракция поверх модулей который упрощает взаимодействие с модулями и выполнение некоторых других конфигураций. \
\
\
БД мы не можем развернуть в диплоймент тк база данных имеет состояние которое и есть её данные это означает что еслии есть несколько бд то они все будут обращаться к одному хранилищу данных, и нужен будет механизм который будет определять какая дописывает а какая читает.\
\
**StatefulSet  -** необходим специально для таких приложений как БД которые будут отслеживать состояние БД (приложения )  а не развёртывания&#x20;
