Деплойменты в 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