Откат в Kubernetes: отмена неудачного обновления одной командой
Future Coding
0:00 / 0:00
Откат в Kubernetes: отмена неудачного обновления одной командой
2 просмотра · 12 часов назад
Future Coding
60 подписчиков
2 просмотра · 12 часов назад
В прошлый раз обновление нашего приложения с помощью Deployment прошло без простоя… а старый ReplicaSet остался на нуле.
Но что, если новая версия неисправна? Сегодня мы применим некорректное обновление, посмотрим, почему приложение продолжает работать, и отменим его одной командой. 🚢
В этом видео вы узнаете:
✅ Что происходит, когда вы применяете версию образа, которой не существует
✅ Что означает ImagePullBackOff
✅ Почему зависшее обновление с помощью Rolling Update продолжает работать ваши старые поды
✅ Что такое ревизия и как вывести их список с помощью kubectl rollout history
✅ Как каждая ревизия сохраняется как ReplicaSet
✅ Как вернуться назад с помощью kubectl rollout undo
✅ Почему история никогда не идет назад и что делает --to-revision
✅ Почему необходимо исправить файл после отмены
⏱️ Разделы
0:00 Предыдущая часть: что, если обновление неисправно?
0:32 Неудачное обновление, в прямом эфире
1:17 Почему сайт все еще работает
2:11 История наших версий
2:49 Отмена, в прямом эфире
3:24 Что на самом деле сделала отмена
4:00 Итоги и далее: стратегии обновления
🛠️ Что вам нужно (все бесплатно)
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/
В первом эпизоде пошагово строится кластер kind из 3 узлов ("fleet").
📚 Официальная документация
Откат развертывания: https://kubernetes.io/docs/concepts/w...
kubectl rollout undo: https://kubernetes.io/docs/reference/...
Образы (и ImagePullBackOff): https://kubernetes.io/docs/concepts/c...
💻 Команды из видео
1) Перед началом: "веб" развертывания из 3-го эпизода
Перед началом видео мы его перестраиваем: 3 реплики, созданные с помощью nginx:1.27, а затем обновленные до nginx:1.28. Вот содержимое файла 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.28
2) Неудачное обновление: в файле deployment.yaml измените строку image на эту опечатку (версия 1.299 не существует):
image: nginx:1.299
затем примените файл, следите за развертыванием и посмотрите на поды:
kubectl apply -f deployment.yaml
kubectl rollout status deployment/web
(Процесс зависает. Нажмите Ctrl+C, чтобы остановить ожидание.)
kubectl get pods
3) Просмотр истории версий:
kubectl rollout history deployment/web
kubectl get репликационный набор
4) Отмените неудачное обновление
kubectl rollout undo deployment/web
kubectl rollout status deployment/web
kubectl get pods
5) Упомянутое, но не выполненное в видео: вернитесь к определенной ревизии
kubectl rollout undo deployment/web --to-revision=1
(Выберите номер из истории kubectl rollout.)
6) Совет: исправьте свой файл после отмены
Отмена изменяет кластер, а не ваш файл: deployment.yaml по-прежнему содержит nginx:1.299. Измените его обратно на
image: nginx:1.28
иначе следующая команда kubectl apply вернет опечатку. (Это также относится к предупреждению, выведенному командой rollout undo.)
7) Выполните очистку после завершения (не показано в видео)
kubectl delete deployment web
kind delete cluster --name fleet
⏮️ Предыдущий эпизод: Развертывание Kubernetes: обновление приложения без простоя
⏭️ Следующий эпизод: Стратегии обновления: поэтапное обновление против пересоздания — всегда ли поэтапное обновление является правильным выбором, и сколько подов изменяется одновременно (maxSurge и maxUnavailable)?
▶️ Это 4-й эпизод плейлиста «Kubernetes Explained with Ships»: эпизоды дополняют друг друга.
Что-то не было понятно, или у вас есть вопрос? Оставьте его в комментариях — нет слишком простых вопросов. Если это помогло, поделитесь этим с другом, который изучает Kubernetes, и подпишитесь, чтобы не пропустить следующий эпизод.
Демонстрация записана на Kubernetes v1.37.0 с kind v0.33.0.
#Kubernetes #DevOps #kubectl
ТЕГИ
kubernetes, kubernetes tutorial, kubernetes for beginners, kubernetes explained, learn kubernetes, kubernetes rollback, rollback, undo deployment, kubectl rollout undo, kubectl rollout history, rollout history, deployment revision, to-revision, ImagePullBackOff, kubernetes deployment, rolling update, replicaset, kubectl rollout status, kubectl apply, kubectl, kind, kubernetes in docker, nginx, devops, cka, docker