Files
SecondBrain/00 Inbox/Deployment и ReplicaSet.md
T
2026-04-29 13:24:30 +03:00

75 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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**).