Перейти к содержимому

Деплойменты в Kubernetes: обновление приложения без простоя

Future Coding

0:00 / 0:00

Деплойменты в Kubernetes: обновление приложения без простоя

9 просмотров · 1 день назад
Future Coding
60 подписчиков
9 просмотров · 1 день назад
В прошлый раз мы изменили образ в ReplicaSet… и работающие поды сохранили старую версию. Сегодня это исправляет Deployment: мы обновляем наше приложение до новой версии, по одному поду за раз, не выключая его. 🚢 В этом видео вы узнаете: ✅ Что такое простой и почему «остановить все, а затем снова запустить» — плохая идея ✅ Что такое развертывание: менеджер флота, на один уровень выше ReplicaSet ✅ Цепочка развертывания, ReplicaSet, поды и как их определить по именам ✅ Как поэтапное обновление заменяет поды по одному ✅ Как обновить приложение: изменить одну строку в файле и применить ее снова ✅ Как отслеживать обновление с помощью kubectl rollout status ✅ Почему старый ReplicaSet не удаляется, а остается равным нулю ⏱️ Разделы 0:00 Ранее: подвох с ReplicaSet 0:32 Проблема: простой 1:00 Развертывание: менеджер флота 1:52 Создание развертывания и отслеживание цепочки 2:48 Пошаговое поэтапное обновление 3:37 Обновление до новой версии, В прямом эфире 4:32 Краткий обзор и далее: откаты 🛠️ Что вам понадобится (все бесплатно) Docker Desktop: https://www.docker.com/products/docke... kind (Kubernetes в Docker): https://kind.sigs.k8s.io/docs/user/qu... kubectl: https://kubernetes.io/docs/tasks/tools/ В 1-м эпизоде ​​пошагово строится кластер kind из 3 узлов («fleet»). 📚 Официальная документация Развертывание: https://kubernetes.io/docs/concepts/w... Выполнение скользящего обновления: https://kubernetes.io/docs/tutorials/... kubectl rollout: https://kubernetes.io/docs/reference/... 💻 Команды из видео 1) deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: web spec: replicas: 3 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: name: nginx image: nginx:1.27 2) Создайте развертывание и следуйте цепочке kubectl apply -f deployment.yaml kubectl get deployment kubectl get replicaset kubectl get pods 3) Обновите до новой версии: в deployment.yaml измените строку image на image: nginx:1.28 затем снова примените файл и наблюдайте за поэтапным обновлением kubectl apply -f deployment.yaml kubectl rollout status deployment/web kubectl get replicaset kubectl get pods (Альтернативный вариант, не показанный: kubectl set image deployment/web nginx=nginx:1.28 — он изменяет кластер, но не ваш файл.) 4) Очистка после завершения (не показано в видео) kubectl delete deployment web kind delete cluster --name fleet ⏮️ Предыдущий эпизод: Как Kubernetes восстанавливает себя: объяснение ReplicaSets ⏭️ Следующий эпизод: Откаты — что делать, когда новая версия не работает, и как старый ReplicaSet, ожидающий нуля, позволяет отменить неудачное обновление. ▶️ Это 3-й эпизод плейлиста «Kubernetes Explained with Ships»: эпизоды дополняют друг друга. Что-то не поняли, или у вас есть вопрос? Оставьте его в комментариях — нет слишком простых вопросов. Если это вам помогло, поделитесь этим с другом, который изучает Kubernetes, и подпишитесь, чтобы не пропустить следующий эпизод. Демонстрация записана на Kubernetes v1.37.0 с kind v0.33.0. #Kubernetes #DevOps #kubectl