# Pod ## 1. Создаем Pod Конфиг pod.yaml ```yaml --- apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - image: nginx:1.20 name: nginx ports: - containerPort: 80 ``` Для этого выполним команду: ```bash kubectl apply -f pod.yaml ``` Проверим результат, для чего выполним команду: ```bash kubectl get pod ``` Результат должен быть примерно следующим: ```bash NAME READY STATUS RESTARTS AGE my-pod 0/1 ContainerCreating 0 2s ``` Через какое-то время Pod должен перейти в состояние `Running` и вывод команды `kubectl get po` станет таким: ```bash NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 59s ``` ## 2. Скейлим приложение Открываем файл pod.yaml редактором: ```bash vim pod.yaml ``` Входим в режим редактирования нажатием `i` и заменяем там строку: ```diff - name: my-pod + name: my-pod-1 ``` Сохраняем и выходим. > Для vim нужно нажать последовательность кнопок > > `<Esc>:wq<Enter>` > **Esc** - выход из режима редактирования, > комбинация **:wq** - сохраняет внесенные изменения Применяем изменения, для этого выполним команду: ```bash kubectl apply -f pod.yaml ``` Проверяем результат, для этого выполним команду: ```bash kubectl get pod ``` Результат должен быть примерно следующим: ```bash NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 10m my-pod-1 1/1 Running 0 59s ``` ## 3. Чистим за собой кластер Для этого выполним команду: ```bash kubectl delete pod --all ``` # ReplicaSet ## 1. Создаем Replicaset Конфиг replicaset.yaml ```yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: my-replicaset 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 ``` Для этого выполним команду: ```bash kubectl apply -f replicaset.yaml ``` Проверим результат, для этого выполним команду: ```bash kubectl get pod ``` Результат должен быть примерно следующим: ```bash NAME READY STATUS RESTARTS AGE my-replicaset-pbtdm 0/1 ContainerCreating 0 2s my-replicaset-z7rwm 0/1 ContainerCreating 0 2s ``` ## 2. Скейлим Replicaset Для этого выполним команду: ```bash kubectl scale replicaset my-replicaset --replicas 3 ``` Проверим результат, для этого выполним команду: ```bash kubectl get pod ``` Результат должен быть примерно следующим: ```bash NAME READY STATUS RESTARTS AGE my-replicaset-pbtdm 1/1 Running 0 2m my-replicaset-szqgz 0/1 ContainerCreating 0 1s my-replicaset-z7rwm 1/1 Running 0 2m ``` ## 3. Удаляем один из Pod Для этого выполним команду подставив имя своего Pod: > можно воспользоваться автоподстановкой по TAB ```bash kubectl delete pod my-replicaset-pbtdm ``` Проверим результат, для этого выполним команду: ```bash kubectl get pod ``` Результат должен быть примерно следующим: ```bash NAME READY STATUS RESTARTS AGE my-replicaset-55qdj 0/1 ContainerCreating 0 1s my-replicaset-pbtdm 1/1 Running 0 4m my-replicaset-szqgz 1/1 Running 0 2m my-replicaset-z7rwm 0/1 Terminating 0 4m ``` ## 4. Добавляем в Replicaset лишний Pod Открываем файл `pod.yaml` ```bash vim pod.yaml ``` И в него после metadata: на следующей строке добавляем: ```yaml labels: app: my-app ``` В итоге должно получиться: ```yaml ............. kind: Pod metadata: name: my-pod labels: app: my-app spec: ............. ``` Сохраняем и выходим. Создаем дополнительный Pod, для этого выполним команду: ```bash kubectl apply -f pod.yaml ``` Проверяем результат, для этого выполним команду: ```bash kubectl get pod ``` Результат должен быть примерно следующим: ```bash NAME READY STATUS RESTARTS AGE my-pod 0/1 Terminating 0 1s my-replicaset-55qdj 1/1 Running 0 3m my-replicaset-pbtdm 1/1 Running 0 8m my-replicaset-szqgz 1/1 Running 0 6m ``` ## 5. Обновляем версию Image Для этого выполним команду: ```bash kubectl set image replicaset my-replicaset nginx=nginx:1.21 ``` Проверяем результат, для этого выполним команду: ```bash kubectl get pod ``` Результат должен быть примерно следующим: ```bash NAME READY STATUS RESTARTS AGE my-replicaset-55qdj 1/1 Running 0 3m my-replicaset-pbtdm 1/1 Running 0 8m my-replicaset-szqgz 1/1 Running 0 6m ``` И проверяем сам Replicaset, для чего выполним команду: ```bash kubectl describe replicaset my-replicaset ``` В результате находим строку Image и видим: ```bash Containers: nginx: Image: nginx:1.21 ``` Проверяем версию image в pod. Для этого выполним команду, подставив имя своего Pod ```bash kubectl describe pod my-replicaset-55qdj ``` Видим что версия имаджа в поде не изменилась: ```bash Containers: nginx: Image: nginx:1.20 ``` Помогаем поду обновиться - для этого выполним команду, подставив имя своего Pod ```bash kubectl delete po my-replicaset-55qdj ``` Проверяем результат, для этого выполним команду: ```bash kubectl get pod ``` Результат должен быть примерно следующим: ```bash NAME READY STATUS RESTARTS AGE my-replicaset-55qdj 0/1 Terminating 0 11m my-replicaset-cwjlf 0/1 ContainerCreating 0 1s my-replicaset-pbtdm 1/1 Running 0 16m my-replicaset-szqgz 1/1 Running 0 14m ``` Проверяем версию Image в новом Pod. Для этого выполним команду, подставив имя своего Pod ```bash kubectl describe pod my-replicaset-cwjlf ``` Результат должен быть примерно следующим: ```bash Image: nginx:1.21 ``` ## 6. Чистим за собой кластер Для этого выполним команду: ```bash kubectl delete replicaset --all ```