gpt4 book ai didi

amazon-web-services - 弹性Kubernetes服务AWS部署过程可避免停机

转载 作者:行者123 更新时间:2023-12-02 20:42:44 24 4
gpt4 key购买 nike

我开始从事EKS AWS的工作已经一个月了,到目前为止,已经成功地通过代码进行了部署。
下面给出了我要进行部署的步骤:

  • 从docker终端创建镜像。
  • 标记并推送到ECR AWS。
  • 创建部署“project.json” 和服务文件“project-svc.json”
  • 将以上文件保存在“kubectl / bin” 路径中,并使用以下命令进行部署。
  • "kubectl apply -f projectname.json""kubectl apply -f projectname-svc.json"
  • 因此,如果我想通过更改再次部署相同的项目,则将新镜像推送到ECR上,并使用"kubectl delete -f projectname.json"删除现有部署,而不删除现有服务,然后再次使用"kubectl apply -f projectname.json"命令再次部署它。

  • 现在,我感到困惑的是,在删除现有部署之后,会有停机时间,直到我再次申请或创建部署。那么,如何避免这种情况呢?因为我实际上不希望停机,所以这就是我开始使用EKS的原因。
    还有一件事是,部署过程也有点长。我知道我缺少什么,有人可以正确地指导我吗?

    该项目位于.NET Core上,如果有使用Visual Studio进行部署的任何简化方法,请也指导我。

    先感谢您!

    最佳答案

    仅当您更改(并且如果有)附加到部署的ConfigMap时,才需要使用删除/应用。
    您所做的唯一更改是部署的“镜像”-必须使用“set-image”命令。

    Kubectl允许您更改实际的部署镜像,它本身可以进行滚动更新,并且使用3个以上的pod可以将停机时间降到最低。
    此外,如果使用--record标志,则可以毫不费力地“回滚”到先前的图像,因为它可以跟踪更改。

    您也可以指定“上下文”,而无需从上下文中跳转。

    您可以像这样去:

    kubectl set image deployment DEPLOYMENT_NAME DEPLOYMENT_NAME=IMAGE_NAME --record -n NAMESPACE



    或指定集群

    kubectl set image deployment DEPLOYEMTN_NAME DEPLOYEMTN_NAME=IMAGE_NAME_ECR -n NAMESPACE --cluster EKS_CLUSTER_NPROD --user 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-deployment

    回滚部署
    https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-back-a-deployment

    关于amazon-web-services - 弹性Kubernetes服务AWS部署过程可避免停机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60686447/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com