问题标签 [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.
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 架构似乎太复杂了。
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.
java - 使用相同的镜像名称更新 kubernetes 部署
我们有一个微服务 java 应用程序,当我们对代码进行更改时,我们必须执行 kubernetes 部署。
如何将最新更改应用到具有相同映像名称的部署
我们有一个副本,当我执行kubectl apply -f deployment.yaml
它时说没有改变。
我们有 v1.13.12 的 kubelet 版本
请帮忙。
kubernetes - 滚动更新策略不会在实时流量中提供零停机时间
我正在使用滚动更新策略进行部署,使用这两个命令:
滚动更新的 YAML 属性:
我尝试更改参数maxsurge
和maxunavailable
不同的initialdelayseconds
参数。另外,我尝试给出livelinessprobe
参数
,但都没有奏效。它给出了连接错误,表明某些 pod 已关闭,因此存在停机时间。
kubernetes - 如何在 k8s 中等待 X 秒完成滚动更新?
我正在使用 k8s 部署我的 docker 应用程序。
一旦声明应用程序需要 20-30 秒才能准备好,应用程序很大,启动时需要一些时间。
开机平均时间为 20-30 秒。我想在滚动更新期间等待 60 秒。因为现在,旧 pod 在启动新应用程序(在新 pod 中)时终止。
我该怎么做?
kubernetes - 如何在 Kubernetes 上为 Celery Beat 指定 RollingUpdate 设置
我们使用以下 deployment.yaml 设置了 Celery Beat:
我发现RollingUpdate
设置很棘手,因为使用 Celery Beat 你真的不想要两个实例,否则你可能会完成重复的任务。这对我们来说非常重要,因为我们使用它来发送推送通知。
使用当前设置,当部署推出时,会有 3-5 分钟的停机时间,因为现有实例会立即终止,我们必须等待新实例自行设置。
有没有更好的配置方法来减少停机时间,同时确保最多有一项服务在服务中?
docker - Kubernetes 在滚动更新中选择性地更新部署
如果我们有相同版本的 docker 镜像,我试图了解 Kubernetes 是否会在滚动更新的情况下重新部署。
假设在部署中我们有 5 个图像(应用程序)
- 如果我只想更新 1 个应用程序并只更新该图像
是否会更新已经使用最新版本的其他应用程序(我们可以使用拉取策略为“IfNotPresent”)/运行其他应用程序的最新版本的 pod 是否会推出到新的 pod?还是因为他们已经在运行最新的图像而保持原样?
基本上我想问的是,如果我们有 50 个应用程序并且我们正在使用带有 helm 图表的 kubernetes,如果我们只想更新 1 个应用程序并确保其他应用程序 pod 完全不受影响,那么部署策略是什么?
kubernetes - 在 kubernetes 滚动更新期间,如果用户/客户端点击,他们将获得什么信息?更新信息还是以前的信息?
假设我在 kubernetes 中有一个部署,现在我想更新该部署的映像,这就是我使用kubectl set image deployments/<deployment_name> <new_image_version>
命令滚动更新的原因。
据我了解滚动更新的概念,在滚动更新期间,部署的更新是通过用新的 pod 实例增量更新来完成的,并且它会一个接一个地发生。
现在我的问题是,假设我们有 10 个 pod,并且在滚动更新期间,2 个 pod 已经更新,其余的 pod 处于更新阶段。现在在这种情况下,如果用户点击服务,他们会得到哪些信息?
docker - Kubernetes:盲目使用 RollingUpdate 安全吗?
亲爱的,
我对 Kubernetes 很陌生,我目前正在处理我的服务(traefik、prometheus 等)的更新过程。我想避免可能导致错误或崩溃的强制性实时更新。我习惯于控制哪些需要更新,哪些不需要。
到目前为止,我了解到 Kubernetes 为该字段提供了spec.updateStrategy.type
2 个可能的值:
RollingUpdate
:永久自动更新OnDelete
: 手动删除 pod 后自动更新
我很惊讶没有找到与使用apt
Debian 工具相同的步骤:当我使用 时apt update; apt upgrade
,我会得到一个将要更新的列表,然后我选择我想要更新的内容。
当我来到 Kubernetes 时,我认为更新可以保持这种两步走的精神,比如:
- 执行命令将集群上部署的当前 docker 镜像与 repos 进行比较。此命令将打印每个图像的新现有版本。
- 执行另一个命令来选择要更新的内容。
没有stable
, unstable
,testing
像带有 docker 的 Linux 存储库这样的频道,那么我无法区分测试更新和可信赖的更新。我担心RollingUpdate
会毫无区别地部署每个新图像。
这导致了我的主要问题:盲目信任是否完全安全RollingUpdate
?