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

Откат в 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