Deployments в kubernetes. Что это и как пользоваться
# Создание deployments
В кубере можно развернуть deployments, в котором описаны какие необходимо создать pod (поды), в каком количестве, на каких нодах, с какими параметрами. Существуют такие понятия для разворачивания подов (не полный список):
- pods
- deployments
- statefulsets
- daemonsets
В этой статье рассмотрим как разворачивать поды с помощью deployments.
## Плюсы deployments
легкий и быстрый. Можно откатить билд ( версии подов ). Причем сохраняется вся история деплоя, можно откатиться до первоначальной версии.
Имеет огромное количество настроек для развертывания подов
## Минусы deployments
не сохраняет состояние подов и их данные, т.е если под упал, то все данные в нем будут утеряны.
## Файл конфигураций
Понятно, что deployments стоит применять только тогда, когда наплевать на данные внутри пода (контейнера).
Создадим файл с названием deployments_nginx.yaml. Самый простой файл конфига выглядит так:
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-test
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx-front
image: nginx:1.7.9
ports:
- containerPort: 80
```
Чтобы применить нужно выполнить команду:
kubectl apply -f deployments_nginx.yaml
Проверить что у нас получилось:
```
kubectl get pods
kubectl get deployments
```
## Удаление deployment
Удалить можно двумя способами:
1. можно удалить сам deployment по имени
kubectl delete deployment nginx-test
После этой команды удалится **deployment** и все поды, которые к нему относятся
2. можно удалить с помощью файла конфигураций, который мы применяли:
kubectl delete -f deployments_nginx.yaml
Произойдет все тоже самое, что и в первом варианте.
Если удалить сам под:
kubectl delete pod nginx-front-NNNN
то ничего не произойдет, под будет просто перезапущен.
Есть еще третий вариант, но его юзать не рекомендую - можно удалить **namespace**, в котором находится **deployment**, НО! при удалении namespace удаляются все объекты, которые в нем находятся