[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-kubernetes-chto-takoe-deployment-i-kakie-strategii-obnovleniya-sushchestvuyut":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},1313,"chto-takoe-deployment-i-kakie-strategii-obnovleniya-sushchestvuyut",26,"kubernetes","Kubernetes","☸️","Что такое Deployment и какие стратегии обновления существуют?","Deployment — основной объект для управления развёртыванием stateless-приложений в Kubernetes. Deployment управляет ReplicaSet'ами, которые, в свою очередь, управляют Pod'ами.\n\n### Возможности Deployment\n\n- Декларативное обновление приложений\n- Откат (rollback) к предыдущей версии\n- Масштабирование (изменение количества реплик)\n- Пауза и возобновление развёртывания\n- Хранение истории ревизий\n\n### Стратегии обновления\n\n| Стратегия | Описание | Простой | Когда использовать |\n|---|---|---|---|\n| RollingUpdate (по умолчанию) | Новые Pod'ы создаются, старые удаляются постепенно | Нет | В большинстве случаев |\n| Recreate | Все старые Pod'ы удаляются, затем создаются новые | Да | Когда одновременная работа двух версий невозможна (например, миграции БД) |\n\nПараметры RollingUpdate:\n\n- maxSurge — сколько дополнительных Pod'ов можно создать сверх желаемого количества (по умолчанию 25%)\n- maxUnavailable — сколько Pod'ов может быть недоступно одновременно (по умолчанию 25%)\n\n\u003Cdetails>\n\u003Csummary>Пример манифеста Deployment\u003C\u002Fsummary>\n\n```yaml\napiVersion: apps\u002Fv1\nkind: Deployment\nmetadata:\n  name: my-java-app\n  labels:\n    app: my-java-app\nspec:\n  replicas: 3\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 0\n  selector:\n    matchLabels:\n      app: my-java-app\n  template:\n    metadata:\n      labels:\n        app: my-java-app\n    spec:\n      containers:\n        - name: app\n          image: my-registry\u002Fmy-java-app:1.0.0\n          ports:\n            - containerPort: 8080\n```\n\n\u003C\u002Fdetails>\n\n### Откат (Rollback)\n\n```bash\n# Посмотреть историю ревизий\nkubectl rollout history deployment\u002Fmy-java-app\n\n# Откатить к предыдущей версии\nkubectl rollout undo deployment\u002Fmy-java-app\n\n# Откатить к конкретной ревизии\nkubectl rollout undo deployment\u002Fmy-java-app --to-revision=2\n\n# Проверить статус обновления\nkubectl rollout status deployment\u002Fmy-java-app\n```\n\n> **На собеседовании:** нужно знать две стратегии (RollingUpdate и Recreate), параметры maxSurge\u002FmaxUnavailable и команды отката. Частая ошибка — не упомянуть, что `maxUnavailable: 0` + `maxSurge: 1` обеспечивает zero-downtime деплой.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Что такое Deployment и какие стратегии обновления существуют — Gymterview","Deployment — основной объект для управления развёртыванием stateless-приложений в Kubernetes. Deployment управляет ReplicaSet'ами, которые, в свою очередь, упра","Deployment — основной объект для управления развёртыванием stateless-приложений в Kubernetes. Deployment управляет Repli",[7,13],"Deployment — основной объект для управления развёртыванием stateless-приложений в Kubernetes. Deployment управляет ReplicaSet'ами, которые, в свою очередь, управляют Pod'ами.",true]