diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json index 477c2e3..a4a051f 100644 --- a/.obsidian/appearance.json +++ b/.obsidian/appearance.json @@ -8,7 +8,7 @@ "interfaceFontFamily": "Inter", "textFontFamily": "Inter", "baseFontSizeAction": true, - "baseFontSize": 16, + "baseFontSize": 17, "monospaceFontFamily": "", "nativeMenus": false, "showRibbon": false diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 5604ba9..2c4eb98 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,13 +13,13 @@ "state": { "type": "markdown", "state": { - "file": "01 Library/11 Machine Learning/Линейные модели.md", + "file": "01 Library/02 DevOps/Kubernetes/Kubernetes.md", "mode": "source", "source": false, "backlinks": false }, "icon": "lucide-file", - "title": "Линейные модели" + "title": "Kubernetes" } }, { @@ -28,17 +28,32 @@ "state": { "type": "markdown", "state": { - "file": "00 Inbox/Анализ типа фин. устойчивости.md", + "file": "00 Inbox/Data Plane - Плоскость данных.md", "mode": "source", "source": false, "backlinks": false }, "icon": "lucide-file", - "title": "Анализ типа фин. устойчивости" + "title": "Data Plane - Плоскость данных" + } + }, + { + "id": "0097adcc4b7e955f", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "00 Inbox/Control Plane - Плоскость управления.md", + "mode": "source", + "source": false, + "backlinks": false + }, + "icon": "lucide-file", + "title": "Control Plane - Плоскость управления" } } ], - "currentTab": 1 + "currentTab": 2 } ], "direction": "vertical" @@ -262,9 +277,20 @@ "obsidian-git:Open Git source control": false } }, - "active": "9860cb6515fd025c", + "active": "0097adcc4b7e955f", "lastOpenFiles": [ + "01 Library/02 DevOps/Kubernetes/Kubernetes.md", "01 Library/11 Machine Learning/Линейные модели.md", + "00 Inbox/Control Plane - Плоскость управления.md", + "00 Inbox/Data Plane - Плоскость данных.md", + "99 System/Cache/Pasted image 20260429085656.png", + "99 System/Cache/Pasted image 20260429085653.png", + "00 Inbox/Алгоритм консенсуса raft.md", + "00 Inbox/Алгоритм выбора лидера Lease.md", + "99 System/Cache/Pasted image 20260428175706.png", + "99 System/Cache/Pasted image 20260428175708.png", + "99 System/Cache/Pasted image 20260428175716.png", + "99 System/Cache/Pasted image 20260428175720.png", "00 Inbox/Анализ типа фин. устойчивости.md", "03 Journal/03 Journal.md", "02 Projects/Наука/НИР/НИР.md", @@ -288,13 +314,8 @@ "01 Library/11 Machine Learning/Нейронные сети.md", "01 Library/10 Finance/Экономическая Безопасность", "CLAUDE.md", - "99 System/Claude - Инструкция и контекст.md", "00 Inbox/Курсовая инфа.md.tmp.165293.1776760040061", - "02 Projects/Личные/Финансы/Подписки - календарь.md", - "01 Library/02 DevOps/Контейнеризация/Docker/Docker - Дополнительные знания.md", "CLAUDE.md.tmp.114174.1776715992129", - "01 Library/02 DevOps/Контейнеризация/Docker/Основы - Docker.md", - "01 Library/01 Admin/CA и NGINX.md", "01 Library/08 Study/OSINT - Зачет.md.tmp.41192.1776715609646", "01 Library/07 HomeLab/Проблемы дистрибутивов.md.tmp.41192.1776715581823", "01 Library/06 Programming/Ruby On Rails/Active Storage.md.tmp.41192.1776715578452", @@ -303,12 +324,6 @@ "99 System/Cache/Pasted image 20260417105833.png", "99 System/Cache/Pasted image 20260417105754.png", "99 System/Cache/Pasted image 20260413131243.png", - "99 System/Cache/Pasted image 20260413131152.png", - "99 System/Cache/Pasted image 20260413131129.png", - "99 System/Cache/Pasted image 20260413130714.png", - "99 System/Cache/Pasted image 20260410110555.png", - "99 System/Cache/Pasted image 20260410110002.png", - "99 System/Cache/Pasted image 20260410105854.png", - "99 System/Cache/Pasted image 20260410105817.png" + "99 System/Cache/Pasted image 20260413131152.png" ] } \ No newline at end of file diff --git a/00 Inbox/Control Plane - Плоскость управления.md b/00 Inbox/Control Plane - Плоскость управления.md new file mode 100644 index 0000000..e3cd4dc --- /dev/null +++ b/00 Inbox/Control Plane - Плоскость управления.md @@ -0,0 +1,13 @@ +--- +status: seed +type: concept +tags: + - devops +created: 2025-12-17 +updated: 2026-04-29 +title: Control Plane - Плоскость управления +--- + +# Control Plane - Плоскость управления + +В k8s плоскостью управления выступают master-узлы \ No newline at end of file diff --git a/00 Inbox/Data Plane - Плоскость данных.md b/00 Inbox/Data Plane - Плоскость данных.md new file mode 100644 index 0000000..a0c4b59 --- /dev/null +++ b/00 Inbox/Data Plane - Плоскость данных.md @@ -0,0 +1,45 @@ +--- +status: seed +type: concept +tags: + - devops +created: 2025-12-17 +updated: 2026-04-29 +title: Data Plane - Плоскость данных +--- + +# Data Plane - Плоскость данных +К плоскости данных (Data plane) кластера Kubernetes относят рабочие узлы (Workers), на которых запускаются рабочие нагрузки. + +Компоненты Kubelet и Kube-proxy устанавливаются как на узлы управления (Masters), так и на рабочие узлы (Workers), обеспечивая работоспособность рабочих нагрузок в Data-plane и отвечая за их связь с плоскостью управления (Control plane). + +![[Pasted image 20260429085656.png]] +## Kubelet +**kubelet** - агент на *каждом* узле кластера. +- Работает как процесс системы, а не контейнер; +- поддержка *любой* k8s-совместимой системы оркестрации (CRI - docker, podman); +- запускает контейнеры с *рабочими* нагрузками; +- обеспечение проверок (**startup**, **readines**, **liveness probes**). + +Т.е. это агент k8s непосредственно на клиенте (как zabbix-agent, например), он взаимодействует с системой worker-node (и master, тоже) + +## Проверки kubelet +1) **startup probe** - применяется первой для определения факта запуска контейнера; + ![[Pasted image 20260428175708.png|200]] +2) **readiness probe** - проверка готовности развернутого в контейнере приложения принимать и обрабатывать рабочую нагрузку; + ![[Pasted image 20260428175716.png|200]] +3) **liveness probe** - периодическая проверка запущенного приложения. + ![[Pasted image 20260428175720.png|200]] + +## Kube-proxy +**kube-proxy** - компонент, отвечающий за *сетевое проксирование* и обеспечивающий *базовые* сетевые правила на узлах управления (Masters) и узлах данных (Workers). + +- Управляет основными сетевыми правилами на узлах кластера Kubernetes +- Запускается в контейнере. +- Может делегировать часть своих функций сетевым плагинам (CNI). + +### Интерфейсы универсального взаимодействия (плагины) +1) **CRI (Container Runtime Interface)** — интерфейс *коммуникации* между компонентом *Kubelet* и используемой kubernetes-совместимой *системой контейнеризации*. +2) **CNI (Container Network Interface)** — интерфейс для выполнения сетевых функций кластера Kubernetes-совместимыми сетевыми плагинами (Network plugins). +3) **CSI (Container Storage Interface)** — интерфейс обеспечения необходимых действий над персистентным хранением данных рабочих нагрузок кластера kubernetes-совместимыми Volume-drivers. + diff --git a/00 Inbox/Алгоритм выбора лидера Lease.md b/00 Inbox/Алгоритм выбора лидера Lease.md new file mode 100644 index 0000000..40ac9f8 --- /dev/null +++ b/00 Inbox/Алгоритм выбора лидера Lease.md @@ -0,0 +1,17 @@ +--- +status: stable +type: concept +tags: + - k8s +created: 2025-12-17 +updated: 2026-04-28 +title: Алгоритм выбора лидера Lease +--- + +# Алгоритм выбора лидера Lease + + Алгоритм выбора лидирующего узла в распределнных системах, позволяющий сохранять консистентность данных + +**Суть проста**: узел, который первым запишет себя в хранилище конфигурации кластера, как лидер, тот и станет лидером + +Если лидер перестал выполнять свои функции, то борьба за место лидера по **такому же принципу**. \ No newline at end of file diff --git a/00 Inbox/Алгоритм консенсуса raft.md b/00 Inbox/Алгоритм консенсуса raft.md new file mode 100644 index 0000000..ccd8e69 --- /dev/null +++ b/00 Inbox/Алгоритм консенсуса raft.md @@ -0,0 +1,26 @@ +--- +status: stable +type: concept +tags: [] +created: 2025-12-17 +updated: 2026-04-29 +title: Алгоритм консенсуса raft +--- + +# Алгоритм консенсуса raft + +**Raft** — алгоритм консенсуса, применяющийся в распределенных системах, и обеспечивающий безопасную и согласованную репликацию данных между всеми участниками. + +Состоит из двух фаз: +1) Выбор лидера (**leader election**) +2) Репликация данных (**log replication**) + +Каждый участник в любой момент времени находится только в одном состоянии: +1) Лидер (**leader**) - только один; +2) Кандидаты в лидеры (**candidate**); +3) Ведомый (**follower**). + +*Raft* в фазе выбора лидера опирается на понятие кворума (**quorum**) - большинства. +Из-за этого, в частности, есть рекомендация: *количество master-node должно быть нечетным*. + +Визуализация алгоритма консенсуса Raft: http://thesecretlivesofdata.com/raft/ \ No newline at end of file diff --git a/01 Library/02 DevOps/Kubernetes/Kubernetes.md b/01 Library/02 DevOps/Kubernetes/Kubernetes.md index 98f6a64..f9be6b0 100644 --- a/01 Library/02 DevOps/Kubernetes/Kubernetes.md +++ b/01 Library/02 DevOps/Kubernetes/Kubernetes.md @@ -5,20 +5,21 @@ tags: - devops - container created: 2026-02-13 -updated: 2026-02-27 +updated: 2026-04-28 title: Kubernetes --- # Kubernetes K8s состоит из двух основных компонент: 1) **Control Plane** - плоскость управления -2) **Data Plane** - плоскость данных +2) **Data Plane** - плоскость данных + ![[Pasted image 20251220211253.png|600]] ## Компоненты Control Plane 1) etcd - open-source key-value хранилище, использующее алгоритм консенсуса raft для обеспечения надежного способа хранения данных. В k8s используется для хранения конфигурации всего кластера. - ![[Pasted image 20251220211307.png|300]] + 2) kube-api-server - основной компонент для взаимодействия с кластером и обязательный посредник между всем компонентами k8s в data и control plane - используется REST API - является точкой входа в кластер @@ -26,20 +27,14 @@ K8s состоит из двух основных компонент: - обеспечение разграничивания прав доступа к содержимому кластера (авторизация и аутентификация) - stateless-компонент - установка на каждую master-ноду - - выбор лидера происходит по алгоритму **lease** - -> [!abstract] lease -> Алгоритм выбора лидирующего узла в распределнных системах, позволяющий сохранять консистентность данных -> Суть проста: узел, который первым запишет себя в хранилище конфигурации кластера, как лидер, тот и станет лидером -> Если лидер перестал выполнять свои функции, то борьба за место лидера по такому же принципу + - выбор лидера происходит по алгоритму **[[Алгоритм выбора лидера Lease|lease]]** 3) kube-controller-manager - компонент, ответственный за работу контроллеров. - связывает kube-controller и отвечает за их работу - сборка мусора - stateless - на каждой master-ноде - - выбор лидера аналогично по алгоритму lease - ![[Pasted image 20251220211330.png|400]] + - выбор лидера аналогично по алгоритму [[Алгоритм выбора лидера Lease|lease]] Существующие kube-controllers: - node-controller - поддержка связи с узлами кластера, инициализация перенаправления рабочих нагрузок с вышедший из строя узлов. @@ -48,6 +43,8 @@ K8s состоит из двух основных компонент: - token-c. - account-c. + + Конспект от MA: [[Devops вводный 9 урок. Введение в Kubernetes. Компоненты control и Data plane.pdf]] Другие решения: diff --git a/99 System/Cache/Pasted image 20251220211307.png b/99 System/Cache/Pasted image 20251220211307.png deleted file mode 100644 index 5dc03bb..0000000 Binary files a/99 System/Cache/Pasted image 20251220211307.png and /dev/null differ diff --git a/99 System/Cache/Pasted image 20251220211330.png b/99 System/Cache/Pasted image 20251220211330.png deleted file mode 100644 index 5a51489..0000000 Binary files a/99 System/Cache/Pasted image 20251220211330.png and /dev/null differ diff --git a/99 System/Cache/Pasted image 20260428175706.png b/99 System/Cache/Pasted image 20260428175706.png new file mode 100644 index 0000000..0b03199 Binary files /dev/null and b/99 System/Cache/Pasted image 20260428175706.png differ diff --git a/99 System/Cache/Pasted image 20260428175708.png b/99 System/Cache/Pasted image 20260428175708.png new file mode 100644 index 0000000..0b03199 Binary files /dev/null and b/99 System/Cache/Pasted image 20260428175708.png differ diff --git a/99 System/Cache/Pasted image 20260428175716.png b/99 System/Cache/Pasted image 20260428175716.png new file mode 100644 index 0000000..85bf545 Binary files /dev/null and b/99 System/Cache/Pasted image 20260428175716.png differ diff --git a/99 System/Cache/Pasted image 20260428175720.png b/99 System/Cache/Pasted image 20260428175720.png new file mode 100644 index 0000000..54fc880 Binary files /dev/null and b/99 System/Cache/Pasted image 20260428175720.png differ diff --git a/99 System/Cache/Pasted image 20260429085653.png b/99 System/Cache/Pasted image 20260429085653.png new file mode 100644 index 0000000..95918a8 Binary files /dev/null and b/99 System/Cache/Pasted image 20260429085653.png differ diff --git a/99 System/Cache/Pasted image 20260429085656.png b/99 System/Cache/Pasted image 20260429085656.png new file mode 100644 index 0000000..95918a8 Binary files /dev/null and b/99 System/Cache/Pasted image 20260429085656.png differ