From bc1a34e8952511fadc9279680c31337f17433c8e Mon Sep 17 00:00:00 2001 From: Dmitry Date: Wed, 29 Apr 2026 15:31:12 +0300 Subject: [PATCH] vault backup: 2026-04-29 15:31:12 --- .obsidian/graph.json | 2 +- .obsidian/workspace.json | 67 +++-------------- 00 Inbox/Deployment и ReplicaSet.md | 74 ------------------- 00 Inbox/PV, PVC.md | 41 ---------- .../Kubernetes/Deployment и ReplicaSet.md | 57 ++++++++++++++ 01 Library/02 DevOps/Kubernetes/Kubernetes.md | 9 +++ 01 Library/02 DevOps/Kubernetes/PV, PVC.md | 37 ++++++++++ 7 files changed, 114 insertions(+), 173 deletions(-) delete mode 100644 00 Inbox/Deployment и ReplicaSet.md delete mode 100644 00 Inbox/PV, PVC.md create mode 100644 01 Library/02 DevOps/Kubernetes/Deployment и ReplicaSet.md create mode 100644 01 Library/02 DevOps/Kubernetes/PV, PVC.md diff --git a/.obsidian/graph.json b/.obsidian/graph.json index 0f98ee2..627d91a 100644 --- a/.obsidian/graph.json +++ b/.obsidian/graph.json @@ -32,6 +32,6 @@ "repelStrength": 6.34095634095634, "linkStrength": 0.504158004158004, "linkDistance": 250, - "scale": 0.05488233943318438, + "scale": 0.30541165903188916, "close": true } \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index eb8e6ce..c01ac72 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -21,54 +21,8 @@ "icon": "lucide-file", "title": "Kubernetes" } - }, - { - "id": "089732df013c9481", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "00 Inbox/Deployment и ReplicaSet.md", - "mode": "source", - "source": false, - "backlinks": false - }, - "icon": "lucide-file", - "title": "Deployment и ReplicaSet" - } - }, - { - "id": "801286aef81114cf", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "00 Inbox/PV, PVC.md", - "mode": "source", - "source": false, - "backlinks": false - }, - "icon": "lucide-file", - "title": "PV, PVC" - } - }, - { - "id": "adcb6e3e2a55e33f", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "00 Inbox/Введение в сетевую безопасность.md", - "mode": "source", - "source": false, - "backlinks": false - }, - "icon": "lucide-file", - "title": "Введение в сетевую безопасность" - } } - ], - "currentTab": 2 + ] } ], "direction": "vertical" @@ -292,11 +246,16 @@ "obsidian-git:Open Git source control": false } }, - "active": "801286aef81114cf", + "active": "9860cb6515fd025c", "lastOpenFiles": [ - "00 Inbox/Deployment и ReplicaSet.md", - "00 Inbox/PV, PVC.md", "01 Library/02 DevOps/Kubernetes/Kubernetes.md", + "00 Inbox/PV, PVC.md", + "01 Library/02 DevOps/Kubernetes/Kubernetes.md.tmp.92756.1777465592821", + "01 Library/02 DevOps/Kubernetes/PV, PVC.md", + "01 Library/02 DevOps/Kubernetes/PV, PVC.md.tmp.92756.1777465584838", + "01 Library/02 DevOps/Kubernetes/Deployment и ReplicaSet.md", + "01 Library/02 DevOps/Kubernetes/Deployment и ReplicaSet.md.tmp.92756.1777465578185", + "00 Inbox/Deployment и ReplicaSet.md", "00 Inbox/Введение в сетевую безопасность.md", "01 Library/02 DevOps/Kubernetes/Алгоритм выбора лидера Lease.md", "01 Library/02 DevOps/Kubernetes/Алгоритм консенсуса raft.md", @@ -329,16 +288,10 @@ "01 Library/09 Sport/Креатин.md", "01 Library/09 Sport/План тренировок (FullBody + Upper-Lower).md", "04 Tools/🛠️ Неоконченные заметки.md", - "02 Projects/Учеба/Домашки/Информация по курсовой. ИРФМ.md", - "01 Library/11 Machine Learning/Обратное распространение ошибки.md", - "03 Journal/2026/03 - March/31.03.26 - Tuesday.md", "diary_Я (копия).csv", "diary_Я.csv", "01 Library/10 Finance/Экономическая Безопасность", "00 Inbox/Курсовая инфа.md.tmp.165293.1776760040061", - "CLAUDE.md.tmp.114174.1776715992129", - "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" + "CLAUDE.md.tmp.114174.1776715992129" ] } \ No newline at end of file diff --git a/00 Inbox/Deployment и ReplicaSet.md b/00 Inbox/Deployment и ReplicaSet.md deleted file mode 100644 index 519facd..0000000 --- a/00 Inbox/Deployment и ReplicaSet.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -status: processing -type: concept -tags: - - devops -created: 2025-12-17 -updated: 2026-04-29 -title: Deployment и ReplicaSet ---- - -# Deployment и ReplicaSet - -Среди многих kube-controllers, есть два важных контроллера, которые отвечают за развертывание приложений в k8s. - -- Deployment-controller -- Replicaset-controller - -## Deployment - -**Deployment-controller** отвечает за работу с декларативным описанием приложения для его последующего развертывания и обновления. - -Сущность, которой оперирует deployment-controller называется *Deployment*. - -## ReplicaSet - -Deployment в своей работе использует концепцию набора репликаций - -**Replicaset** — сущность Kubernetes, отвечающая за поддержку стабильного набора репликаций приложения, работающих в один момент времени. - -За работу с Replicaset отвечает *Replicaset*-controller. - -Приложения в k8s представлены в виде объединений контейнеров (**pod**). -Набором репликаций объединений контейнеров (**pods**) управляет replicaset. - -С набором репликаций (replicaset) работает deployment. - -## Deployment controller -*Deployment-controller* способен самостоятельно создать Deployment на основе образа (Docker image), а может использовать готовое описание Deployment (Manifest) в формате `yaml` или `json`. - -```sh -kubectl create deployment mariadb --image=mariadb:4.0 -``` - -```sh -kubectl apply -f nginx-deployment-manifest.yaml -``` - -Deployment-controller через сущность Deployment работает только с объединением контейнеров (Pods) и наборами их репликаций (Replicasets). - -Для связи *Pod* с другими *Pods* и внешним миром используется сущность **Service**. - -*Pod* связывается с *Service* через *Endpoint* (обеспечением работы Endpoints занимается Endpoint-controller). - -## Service - -Создать Service можно выполнив *Expose* существующего *Deployment* или использовав готовое описание *Service* (Manifest) в формате `yaml` или `json`. - -```bash -kubectl expose deployment mariadb --port=8080 -``` -```sh -kubectl apply -f nginx-service-manifest.yaml -``` - -## Deployment - replicaset - -За счет связки *Deployment* - *replicaset*, в кластере Kubernetes гарантируется выполнение следующих операций. - -- Обновление без downtime (**Rolling update**). -- Откат текущего обновления (**Rollback**). -- Просмотр истории обновлений (**Revision**). -- Откат приложения до конкретной ревизии (**Rollback to revision**). -- Скалирование и дескалирование приложения (**Scaling**). - diff --git a/00 Inbox/PV, PVC.md b/00 Inbox/PV, PVC.md deleted file mode 100644 index 8d5a03d..0000000 --- a/00 Inbox/PV, PVC.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -status: seed -type: concept -tags: [] -created: 2025-12-17 -updated: 2026-04-29 -title: PV, PVC ---- - -# PV, PVC - -Для обеспечения работы с данными и выгрузки данных на персистентное хранение в Kubernetes используются сущности: - -- PV (Persistent Volume). -- PVC (Persistent Volume Claim). -## Persistent Volume - -**PV (Persistent Volume)** — сущность, используемая для непосредственного хранения данных, отражение в kubernetes фактического раздела на жестком диске. - -- не зависит от namespace - -С точки зрения кластера Kubernetes, PV является таким же ресурсом кластера, как Master и Worker node. - -## Persistent Volume Claim -**PVC (Persistent Volume Claim)** — это запрос приложения, развернутого в Kubernetes, на подключение к PV для выгрузки данных на персистентное хранение. - -- зависит от namespace - -С помощью PVC можно управлять хранилищами приложения, развернутого в Kubernetes, посредством выделения и подключения к рабочим нагрузкам дисков с требуемыми характеристиками. - -Выгрузка данных приложения на персистентное хранение осуществляется посредством подключения Pods к хранилищу (PV) через специальный запрос на хранилище (PVC). - -> [!note] PV может быть создан: -> -> - Вручную (через применение Manifest). -> - Автоматически (с помощью Provisioning). - -**Deployment** может содержать запись о необходимости использования персистентного хранилища (PVC). - -**PVC** описывает требования к хранилищу (**PV**) - diff --git a/01 Library/02 DevOps/Kubernetes/Deployment и ReplicaSet.md b/01 Library/02 DevOps/Kubernetes/Deployment и ReplicaSet.md new file mode 100644 index 0000000..62d8320 --- /dev/null +++ b/01 Library/02 DevOps/Kubernetes/Deployment и ReplicaSet.md @@ -0,0 +1,57 @@ +--- +status: stable +type: concept +tags: + - devops + - kubernetes + - container +created: 2025-12-17 +updated: 2026-04-29 +title: Deployment и ReplicaSet +--- + +# Deployment и ReplicaSet + +Два ключевых контроллера k8s, отвечающих за развёртывание приложений. + +## Deployment + +**Deployment-controller** управляет декларативным описанием приложения для его развёртывания и обновления. + +Способен создать Deployment из образа или из готового манифеста: + +```sh +kubectl create deployment mariadb --image=mariadb:4.0 +kubectl apply -f nginx-deployment-manifest.yaml +``` + +Deployment работает только с **Pods** и **ReplicaSets**. + +## ReplicaSet + +**ReplicaSet** — сущность k8s, обеспечивающая поддержку стабильного набора реплик Pod в любой момент времени. + +Приложение = Pod (объединение контейнеров). ReplicaSet управляет множеством таких Pod. + +## Service + +Для связи Pod с другими Pod и внешним миром используется **Service**. + +Pod связывается с Service через **Endpoint** (управляет Endpoint-controller). + +Создание Service: + +```bash +kubectl expose deployment mariadb --port=8080 +kubectl apply -f nginx-service-manifest.yaml +``` + +## Возможности связки Deployment + ReplicaSet + +| Операция | Описание | +|---|---| +| Rolling update | Обновление без downtime | +| Rollback | Откат текущего обновления | +| Revision | Просмотр истории обновлений | +| Rollback to revision | Откат до конкретной ревизии | +| Scaling | Масштабирование приложения | diff --git a/01 Library/02 DevOps/Kubernetes/Kubernetes.md b/01 Library/02 DevOps/Kubernetes/Kubernetes.md index e7bf820..a8fd323 100644 --- a/01 Library/02 DevOps/Kubernetes/Kubernetes.md +++ b/01 Library/02 DevOps/Kubernetes/Kubernetes.md @@ -17,6 +17,15 @@ K8s — система оркестрации контейнеров. Класт - **[[Data Plane - Плоскость данных]]** — worker-узлы: kubelet, kube-proxy, CRI/CNI/CSI ![[Pasted image 20260429091836.png]] +## Рабочие нагрузки + +- [[Deployment и ReplicaSet]] — развёртывание, rolling update, rollback, scaling + +## Хранение данных + +- [[PV, PVC]] — персистентное хранилище: Persistent Volume и Persistent Volume Claim + + ## Альтернативные решения diff --git a/01 Library/02 DevOps/Kubernetes/PV, PVC.md b/01 Library/02 DevOps/Kubernetes/PV, PVC.md new file mode 100644 index 0000000..39468e5 --- /dev/null +++ b/01 Library/02 DevOps/Kubernetes/PV, PVC.md @@ -0,0 +1,37 @@ +--- +status: stable +type: concept +tags: + - devops + - kubernetes + - storage +created: 2025-12-17 +updated: 2026-04-29 +title: PV, PVC +--- + +# PV, PVC + +Сущности k8s для персистентного хранения данных. + +## Persistent Volume (PV) + +**PV** — отражение реального раздела на диске в терминах k8s. Такой же ресурс кластера, как Master или Worker node. + +- Не зависит от namespace +- Создаётся вручную (Manifest) или автоматически (Provisioning) + +## Persistent Volume Claim (PVC) + +**PVC** — запрос приложения на подключение к PV. + +- Зависит от namespace +- Описывает требования к хранилищу (размер, класс, режим доступа) + +## Схема подключения + +``` +Pod → PVC → PV → физический диск +``` + +**Deployment** может содержать ссылку на PVC — тогда при развёртывании Pod автоматически получает доступ к нужному хранилищу.