# Deployment Конфиг deployment.yaml ```yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment spec: replicas: 2 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - image: nginx:1.20 name: nginx ports: - containerPort: 80 ``` ## 1. Создаем deployment Для этого выполним команду: ```bash kubectl apply -f deployment.yaml ``` Проверяем список pods, для этого выполним команду: ```bash kubectl get pod ``` Результат должен быть примерно таким: ```bash NAME READY STATUS RESTARTS AGE my-deployment-7c768c95c4-47jxz 0/1 ContainerCreating 0 2s my-deployment-7c768c95c4-lx9bm 0/1 ContainerCreating 0 2s ``` Проверяем список replicaset, для этого выполним команду: ```bash kubectl get replicaset ``` Результат должен быть примерно таким: ```bash NAME DESIRED CURRENT READY AGE my-deployment-7c768c95c4 2 2 2 1m ``` ## 2. Обновляем версию image Обновляем версию image для container в deployment my-deployment. Для этого выполним команду: ```bash kubectl set image deployment my-deployment nginx=nginx:1.21 ``` Проверяем результат, для этого выполним команду: ```bash kubectl get pod ``` Результат должен быть примерно таким: ```bash NAME READY STATUS RESTARTS AGE my-deployment-685879478f-7t6ws 0/1 ContainerCreating 0 1s my-deployment-685879478f-gw7sq 0/1 ContainerCreating 0 1s my-deployment-7c768c95c4-47jxz 0/1 Terminating 0 5m my-deployment-7c768c95c4-lx9bm 1/1 Running 0 5m ``` И через какое-то время вывод этой команды станет: ```bash NAME READY STATUS RESTARTS AGE my-deployment-685879478f-7t6ws 1/1 Running 0 33s my-deployment-685879478f-gw7sq 1/1 Running 0 33s ``` Проверяем что в новых pod новый image. Для этого выполним команду, заменив имя pod на имя вашего pod: ```bash kubectl describe pod my-deployment-685879478f-7t6ws ``` Результат должен быть примерно таким: ```bash Image: nginx:1.21 ``` Проверяем что стало с replicaset, для этого выполним команду: ```bash kubectl get replicaset ``` Результат должен быть примерно таким: ```bash NAME DESIRED CURRENT READY AGE my-deployment-685879478f 2 2 2 2m my-deployment-7c768c95c4 0 0 0 7m ``` ## 3. Чистим за собой кластер ```bash kubectl delete deployment --all ``` # Resources Конфиг deployment-with-resources.yaml ```yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment spec: replicas: 2 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - image: nginx:1.20 name: nginx ports: - containerPort: 80 resources: requests: cpu: 100m memory: 100Mi limits: cpu: 100m memory: 100Mi ``` ## 1. Создаем deployment с ресурсами ```bash kubectl apply -f deployment-with-resources.yaml ``` Смотрим что получилось ```bash kubectl get pod ``` Должны увидеть что-то типа такого ```bash NAME READY STATUS RESTARTS AGE my-deployment-57fff9c845-2qv5l 0/1 ContainerCreating 0 1s my-deployment-57fff9c845-h8bbw 0/1 ContainerCreating 0 1s ``` ## 2. Увеличиваем количество ресурсов для нашего деплоймента ```bash kubectl patch deployment my-deployment --patch '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","resources":{"requests":{"cpu":"10"},"limits":{"cpu":"10"}}}]}}}}' ``` Смотрим что получилось ```bash kubectl get pod ``` Должны увидеть что-то типа такого ```bash NAME READY STATUS RESTARTS AGE my-deployment-68684546b9-gm894 0/1 Pending 0 37s my-deployment-9ddd794f9-jvff6 1/1 Running 0 51s my-deployment-9ddd794f9-ztvq9 1/1 Running 0 51s ``` Смотрим, почему поды не могут создаться ```bash kubectl describe po my-deployment-845d88fdcf-9bd29 ``` Видим в эвентах что-то типа ```bash Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 87s default-scheduler 0/8 nodes are available: 8 Insufficient cpu. ``` ## 3. Чистим за собой кластер ```bash kubectl delete deployment --all ```