问题标签 [rolling-updates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1648 浏览

docker - 具有撰写文件单节点和本地映像的 docker 服务

所以我需要docker在我的单节点服务器上进行滚动更新。直到现在,我一直在使用,docker-compose但不幸的是,我无法用它实现我所需要的。阅读网络,docker-swarm似乎是要走的路。

我发现了如何使用 swarm 在单个节点上运行具有多个副本的应用程序:

myapp:latest从我的docker-compose.yml

不幸的是,这不起作用,因为它没有从docker-compose.yml文件中获取配置:.env文件、command条目等。

更深入地搜索,我发现使用

docker-compose.yml将使用我的配置创建服务。

但随后我收到以下错误消息:

未能更新服务 myapp-staging_postgres:来自守护程序的错误响应:rpc 错误:代码 = InvalidArgument desc = ContainerSpec:必须提供图像参考

所以看来我必须使用注册表并将我的图像推送到那里才能正常工作。在多节点架构的情况下,我理解这种需求,但就我而言,我不想这样做。(携带图片很重,我不希望我的图片被公开,毕竟图片就在这儿,为什么要把它搬到网上呢?)

如何设置我docker service使用的本地图像和写入的配置docker-compose.yml

我可能可以使用docker service create选项来管理我的方式,但这不会使用我的docker-compose.yml文件,因此它不会是 DRY 也不是可维护的,这对我来说很重要。

docker-compose对开发人员来说是一个很棒的工具,很遗憾我们不得不深入研究 DevOps 工具来实现滚动更新等常见功能。在这个阶段,对于我的需求来说,整个 swarm 架构似乎太复杂了。

0 投票
1 回答
49 浏览

docker - Docker rolling updates on a single node

So I have been using docker with docker-compose for quite some time in a development environment, I love how easy it is.

Until now, I also used docker-compose to serve my apps on my own server as I could afford short down times like docker-compose restart.

But in my current project, we need rolling updates.

We still have one node, and it shall remain as we don't plan on having scalability issue for quite some time.

I read I need to use docker swarm, fine, but when I look for some tutorials on how to set it up, along with using my docker-compose.yml files, I can't find any developer-oriented (instead of devops) resources that would simply tell me the steps to achieve this, even though I don't understand everything it is ok, as I will along the way.

Are there any tutorials to learn how to set this up out there? If not, shouldn't we build it here?

I am definitely sure we are quite numerous to have the issue, as docker is now a must have for devs, but we (devs) still don't want to dive too deep into the devops world.

Cheers, hope it gets attention instead of criticism.

0 投票
1 回答
370 浏览

java - 使用相同的镜像名称更新 kubernetes 部署

我们有一个微服务 java 应用程序,当我们对代码进行更改时,我们必须执行 kubernetes 部署。

如何将最新更改应用到具有相同映像名称的部署

我们有一个副本,当我执行kubectl apply -f deployment.yaml它时说没有改变。

我们有 v1.13.12 的 kubelet 版本

请帮忙。

0 投票
1 回答
634 浏览

kubernetes - 滚动更新策略不会在实时流量中提供零停机时间

我正在使用滚动更新策略进行部署,使用这两个命令:

滚动更新的 YAML 属性:

我尝试更改参数maxsurgemaxunavailable不同的initialdelayseconds参数。另外,我尝试给出livelinessprobe参数

,但都没有奏效。它给出了连接错误,表明某些 pod 已关闭,因此存在停机时间。

0 投票
1 回答
67 浏览

amazon-web-services - 一旦它变得健康,有没有办法让 LB 将流量路由到主机?

我在应用程序负载均衡器后面有两个 ec2 实例,我正在尝试按主机更新主机上的应用程序(滚动更新)。为此,我遵循以下步骤: 1. 停止 nginx 服务 2. 更新应用程序 3. 通过停止 nginx 服务 LB 将主机标记为不健康并将流量路由到其他主机来启动 nginx 服务。并在第二台主机上做同样的事情。

问题是,在启动 nginx 服务和 LB 将主机标记为健康后,它不会仅在一段时间后(平均 4 分钟)将流量路由到该主机。像这样我有一个关键的停机时间。

磅设置:

在此处输入图像描述

一旦它变得健康,有没有办法让 LB 将流量路由到主机?

0 投票
1 回答
79 浏览

kubernetes - 如何在 k8s 中等待 X 秒完成滚动更新?

我正在使用 k8s 部署我的 docker 应用程序。

一旦声明应用程序需要 20-30 秒才能准备好,应用程序很大,启动时需要一些时间。

开机平均时间为 20-30 秒。我想在滚动更新期间等待 60 秒。因为现在,旧 pod 在启动新应用程序(在新 pod 中)时终止。

我该怎么做?

0 投票
0 回答
391 浏览

kubernetes - 如何在 Kubernetes 上为 Celery Beat 指定 RollingUpdate 设置

我们使用以下 deployment.yaml 设置了 Celery Beat:

我发现RollingUpdate设置很棘手,因为使用 Celery Beat 你真的不想要两个实例,否则你可能会完成重复的任务。这对我们来说非常重要,因为我们使用它来发送推送通知。

使用当前设置,当部署推出时,会有 3-5 分钟的停机时间,因为现有实例会立即终止,我们必须等待新实例自行设置。

有没有更好的配置方法来减少停机时间,同时确保最多有一项服务在服务中?

0 投票
1 回答
40 浏览

docker - Kubernetes 在滚动更新中选择性地更新部署

如果我们有相同版本的 docker 镜像,我试图了解 Kubernetes 是否会在滚动更新的情况下重新部署。

假设在部署中我们有 5 个图像(应用程序)

  • 如果我只想更新 1 个应用程序并只更新该图像

是否会更新已经使用最新版本的其他应用程序(我们可以使用拉取策略为“IfNotPresent”)/运行其他应用程序的最新版本的 pod 是否会推出到新的 pod?还是因为他们已经在运行最新的图像而保持原样?

基本上我想问的是,如果我们有 50 个应用程序并且我们正在使用带有 helm 图表的 kubernetes,如果我们只想更新 1 个应用程序并确保其他应用程序 pod 完全不受影响,那么部署策略是什么?

0 投票
1 回答
34 浏览

kubernetes - 在 kubernetes 滚动更新期间,如果用户/客户端点击,他们将获得什么信息?更新信息还是以前的信息?

假设我在 kubernetes 中有一个部署,现在我想更新该部署的映像,这就是我使用kubectl set image deployments/<deployment_name> <new_image_version>命令滚动更新的原因。

据我了解滚动更新的概念,在滚动更新期间,部署的更新是通过用新的 pod 实例增量更新来完成的,并且它会一个接一个地发生。

现在我的问题是,假设我们有 10 个 pod,并且在滚动更新期间,2 个 pod 已经更新,其余的 pod 处于更新阶段。现在在这种情况下,如果用户点击服务,他们会得到哪些信息?

0 投票
1 回答
103 浏览

docker - Kubernetes:盲目使用 RollingUpdate 安全吗?

亲爱的,

我对 Kubernetes 很陌生,我目前正在处理我的服务(traefik、prometheus 等)的更新过程。我想避免可能导致错误或崩溃的强制性实时更新。我习惯于控制哪些需要更新,哪些不需要。

到目前为止,我了解到 Kubernetes 为该字段提供了spec.updateStrategy.type2 个可能的值:

  • RollingUpdate:永久自动更新
  • OnDelete: 手动删除 pod 后自动更新

我很惊讶没有找到与使用aptDebian 工具相同的步骤:当我使用 时apt update; apt upgrade,我会得到一个将要更新的列表,然后我选择我想要更新的内容。

当我来到 Kubernetes 时,我认为更新可以保持这种两步走的精神,比如:

  1. 执行命令将集群上部署的当前 docker 镜像与 repos 进行比较。此命令将打印每个图像的新现有版本。
  2. 执行另一个命令来选择要更新的内容。

没有stable, unstable,testing像带有 docker 的 Linux 存储库这样的频道,那么我无法区分测试更新和可信赖的更新。我担心RollingUpdate会毫无区别地部署每个新图像。

这导致了我的主要问题:盲目信任是否完全安全RollingUpdate