Elasti c Kubernetes Service AWS Процесс развертывания, чтобы избежать простоев - PullRequest
0 голосов
/ 14 марта 2020

Это был месяц, когда я начал работать над EKS AWS и до сих пор успешно разворачивал код. Шаги, которые я выполняю для развертывания, приведены ниже:

  1. Создание образа из docker терминала.
  2. Метка и pu sh в ECR AWS.
  3. Создание проекта развертывания ". json" и служебного файла "project-sv c. json" .
  4. Сохраните вышеуказанный файл в "kubectl / bin" path и разверните его с помощью следующих команд:
  5. "kubectl apply -f projectname.json" и "kubectl apply -f projectname-svc.json".
  6. Так что если я хочу развернуть тот же проект снова с изменением я добавляю sh новый образ в ECR и удаляю существующее развертывание, используя "kubectl delete -f projectname.json", не удаляя существующий сервис, и снова развертываю его, используя команду "kubectl apply -f projectname.json".

Сейчас Я в замешательстве, что после удаления существующего развертывания происходит простои, пока я не применю или не создаю развертывание снова. Итак, как этого избежать? Потому что я не хочу простоев, вот почему я начал использовать EKS. И еще одна вещь - процесс развертывания тоже немного долгий. Я знаю, что мне чего-то не хватает, кто-нибудь может мне помочь, пожалуйста?

Проект включен. NET Ядро, и если есть какой-либо упрощенный способ развертывания с использованием Visual Studio, пожалуйста, укажите мне и это.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 14 марта 2020

Нет необходимости удалять ваше развертывание. Просто нужно обновить желаемое состояние (конфигурацию развертывания) и позволить K8s сделать волшебный шаг c и применить необходимые изменения, такие как развертывание новой версии вашего контейнера.

Если у вас есть один экземпляр вашего Контейнер, вы будете испытывать короткое время простоя, пока применяются изменения. Если ваше приложение поддерживает несколько реплик (HA), вы можете воспользоваться функцией скользящего обновления.

Начните с чтения официальной документации Kubernetes для Выполнение непрерывного обновления.

1 голос
/ 15 марта 2020

Удалить / применить нужно только в том случае, если вы изменяете (и если у вас есть) ConfigMap, прикрепленный к Развертыванию. Единственное изменение, которое вы делаете, - это «образ» развертывания - вы должны использовать команду «set-image».

Kubectl позволяет вам изменить действительный образ развертывания, и он выполняет Rolling Updates сам по себе и с 3+ стручками у вас есть минимальный шанс для простоя. Более того, если вы используете флаг --record, вы можете без труда выполнить «откат» к предыдущему изображению, поскольку оно отслеживает изменения.

У вас также есть возможность указать «Контекст» , без необходимости переходить из контекстов.

Вы можете go вот так:

kubectl установить развертывание образа DEPLOYMENT_NAME DEPLOYMENT_NAME = IMAGE_NAME --record -n NAMESPACE

ИЛИ Определение кластера

развертывание набора образов kubectl DEPLOYEMTN_NAME DEPLOYEMTN_NAME = IMAGE_NAME_ECR -n NAMESPACE --cluster EKS_RODTER_ пользователь EKS_CLUSTER --record

Как например:

kubectl set image deployment nginx-dep nginx-dep=ecr12345/nginx:latest -n nginx --cluster eu-central-123-prod --user eu-central-123-prod --record

--record - это то, что позволяет отслеживать все изменения, если вы хотите выполнить откат, просто сделайте :

kubectl rollout undo deployment.v1.apps/nginx-dep

Больше документации об этом здесь:

Обновление развертывания https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#updating -a-развертывания

Откат развертывания https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling -back-a-развертывания

...