首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

重新启动使用pm2-run运行的Node应用程序会导致容器消失,但应用程序仍在运行

的原因是pm2-run命令会在后台启动一个新的Node进程来运行应用程序,而不是在容器中运行。当重新启动应用程序时,旧的容器会被停止并删除,而新的容器会在后台运行。

这种行为在某些情况下可能会导致容器消失,例如在使用容器编排工具(如Docker Compose)进行部署时,重新启动容器会导致旧的容器被替换。因此,如果需要保持容器的持久性,可以考虑使用其他的部署方式,如使用Dockerfile构建镜像并运行容器。

对于解决这个问题,可以考虑以下几种方法:

  1. 使用pm2的其他命令:除了pm2-run,pm2还提供了其他命令,如pm2-start、pm2-restart等。这些命令可以在容器中重新启动应用程序,而不会导致容器消失。例如,可以使用pm2-restart命令来重新启动应用程序:pm2 restart <app_name>
  2. 使用容器编排工具:如果使用容器编排工具进行部署,可以通过配置文件来定义容器的行为。例如,在Docker Compose中,可以使用restart策略来指定容器的重启行为。可以将restart策略设置为"always",这样当容器停止时,会自动重新启动容器。
  3. 使用容器管理工具:使用容器管理工具可以更方便地管理容器的生命周期。例如,使用Kubernetes可以通过定义Pod和Deployment来管理容器的启动和重启行为。可以使用kubectl命令来重新启动应用程序:kubectl rollout restart deployment/<deployment_name>

总结起来,重新启动使用pm2-run运行的Node应用程序会导致容器消失,但应用程序仍在运行。为了解决这个问题,可以考虑使用其他的pm2命令、容器编排工具或容器管理工具来重新启动应用程序,以保持容器的持久性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

K8S 1.27 动态调整容器CPU和内存资源限制,无需重启应用程序

何时使用此功能 Pod 正在节点上运行资源过多或过少。 由于集群中缺乏足够 CPU 或内存,而过度配置正在运行 Pod 未充分利用,因此无法调度此 Pod。...尝试调整 pod 大小似乎陷入状态InProgress,并且resourcespod 状态中字段永远不会更新,即使可能已在正在运行容器上启用新资源。...Pod 调整大小可能遇到与其他 Pod 更新竞争条件,导致 Pod 调整大小延迟实施。 调整大小后容器资源反映在 pod 状态中可能需要很长时间。...举例来说,对于我们应用程序,无需重新启动即可安全地更改 CPU 数量,更改内存数量则需要重新启动。例如,运行数据库 pod 在运行时 CPU 计数变化不会出现问题,减少内存量导致意外行为。...如果此类应用程序指定适合正常操作 CPU 请求和限制,则它们可能遭受很长启动时间。

1.7K20

健康检查 - 从Readiness和Liveness 探针说起

使用范围 存活(Liveness) 和 就绪(Readiness) 探针(Probe)是 Kubernetes功能, 使团队能够使其容器应用程序更可靠、更健壮。...如果我们使用上述 URL endpoints之一作为存活(liveness)探针一部分,则结果可能是在一个下游服务发生故障或响应缓慢后重新启动这个容器。...其实这个微服务可能运行好好,但我们错误配置导致重新启动。 或者,我们寻找不同endpoint 来指示 pod 运行状况。...设置过于激进导致不必要工作负载,而探针之间间隙过大会导致探针操作之间长时间延迟。 探针时序图 下面的示例通过时间线演示了执行探针。第一个探针成功,第二个、第三个和第四个探针失败。...如果周期时间很长,对pod干扰很小,那么pod重新启动之前时间可能导致重新启动之前添加几乎一个额外periodSeconds时间间隔。 必须谨慎使用failureThreshold参数。

3K20

如何利用termination GracePeriodSeconds 优雅地关闭你服务

另一方面,Kubernetes通常可以强制终止您应用程序,作为系统正常运行一部分。 在容器出现之前,大多数应用运行在虚拟机或者物理机上。如果应用程序崩溃,启动替换程序需要很长时间。...如果您只有一台或两台机器来运行应用程序,那么这种恢复时间是不可接受。 相反,在崩溃时使用进程级监控来重新启动应用程序变得很常见。如果应用程序崩溃,监视进程可以捕获退出代码并立即重新启动应用程序。...接收SIGTERM时大多数程序都会正常关闭,如果您使用是第三方代码或管理系统无法控制,则preStop Hook是在不修改应用程序情况下触发正常关闭好方法。...- name: nginx image: nginx terminationGracePeriodSeconds: 30 8 - SIGKILL信号被发送到Pod,并删除Pod 如果容器在优雅终止宽限期后仍在运行...因此有可能导致该Pod仍然列在服务Endpoints中并仍然接收流量,而它已经收到SIGTERM并且已经停止,因此负载均衡器上可能会有一些Http 504。

16.1K62

年度回顾:2020 年 Kubernetes 主要功能

该决定一部分是受到了疫情影响,主要原因是许多组织仍在使用 Kubernetes v1.15。通过降低 Kubernetes 版本发布速度,让提供商赶上 Kubernetes 步伐。...然而,在 Kubernetes 中,这些任务是针对不相交组件集执行,因为设备管理器和 CPU 在分配资源时都是独立工作。这可能导致性能下降以及延迟增加。...用户可以调试正在运行 Pod,而无需重新启动它们或依赖进入容器来执行调试任务,例如检查文件系统、执行其他调试实用程序、通过主机名称空间执行初始网络请求。...通过将带有调试工具容器添加到 Pod 副本或临时容器中来排除 Distroless 容器故障。 通过创建在主机工作空间上运行并可以访问主机文件系统容器来排除节点故障。...这可能发生在运行 Pod 中节点系统关闭时。由于 Pod 无法知道节点已关闭,因此 Pod 可能遇到问题,并无法正常运行

56730

【重识云原生】第六章容器6.4.2.1节——pod详解

2)pod里运行多个需要协同工作容器:Pod可能封装了一个应用程序,该应用程序由紧密关联并且需要共享资源多个共同协作容器组成。...Pod中可以同时运行多个容器。同一个Pod中容器自动分配到同一个 node 上。...注意:不要将重新启动Pod中容器重新启动Pod混淆。POD不是一个进程,而是一个运行容器环境。Pod一直存在直到被删除为止。         pod本身无法自我修复。...Pod 还在运行磁盘不可访问时 终止所有容器Pod phase变成 Failed 如果 Pod 是由某个控制器管理,则重新创建一个 Pod 并调度到其他 Node 运行 Pod 还在运行,...但由于网络分区故障导致 Node 无法访问 Node controller等待 Node 事件超时 Node controller 将 Pod phase设置为 Failed.

2.3K11

原生Kubernetes监控功能详解-Part2

监控重要性不言而喻,它让我们能充分了解到应用程序状况。Kubernetes有很多内置工具可供用户们选择,让大家更好地对基础架构层(node)和逻辑层(pod)有充分了解。...由于进程仍在运行,因此默认情况下,Kubernetes将继续向pod发送请求。凭借liveness探针,Kubernetes将检测到应用程序不再提供请求并将重新启动pod。...放弃liveness探针导致Kubernetes重新启动pod。对于liveness探针,pod将被标记为未准备好。...下面我们应该能看到我们修改过Nginx页面了,它由一个数字标识符组成: ? 为第二个pod创建文件也导致该pod进入READY状态。此处流量也会被重定向: ?...如上所述,我们将使用默认nginx容器部署两个副本。如果容器端口80没有正处于监听状态,则不会将流量发送到容器,并且将重新启动容器。 首先,我们来看看liveness探针演示文件: ?

66010

Kubernetes 探针(以及为什么它们对自动缩放很重要)

因此,Pod 从相应服务中移除。 Readiness 探针可以保证运行容器应用程序已经 100% 准备好使用。但是,有时候 readiness 探针是不可能做到这一点。...例如,想象一下死锁情况,其中应用程序进程仍在运行,但不再服务请求。由于准备性探针假定应用程序正常运行,因此不会检测到未服务请求。...通常情况下,容器重新启动,除非它配置方式有所不同。 即使 liveness 探针确认容器正在运行,也不能保证容器应用程序也在运行。Pod 可能已经就绪,并不意味着应用程序可以提供请求服务。...即使 liveness 探测确认容器正在运行,也不能保证容器应用程序正在运行。 Pod 可能已经准备就绪,这并不意味着应用程序可以处理请求。...尽管这一般运作良好,但是在某些情况下,由于应用尚未准备就绪,容器运行良好,探针产生错误。这也是为什么引入启动探针原因:要验证容器正在启动而不立即检查应用程序健康状况。

18910

在上K8s之前必须知道Pod容器资源知识

由于容器没有任何限制,因此可以使用所需内存量。如果它开始使用所有Node可用内存,则可能会被OOM杀死。然后,如果可能(基于RestartPolicy),可以将其重新启动。...这是最坏情况。调度程序不知道您容器需要多少资源,这可能导致Node出现严重问题。在这种情况下,最好在名称空间中使用默认限制(由LimitRange设置)。...调度程序不知道您容器需要多少资源,这可能导致Node出现严重问题。最好在您名称空间中使用默认限制(由LimitRange设置)。...您注意到,kube-scheduler无法在Node A上调度应用程序,因为可用(未请求)资源无法满足紫Pod期望。...简要总结一下,有几件事要牢记: 所请求资源是在”启动时间”(当Kubernetes计划安排应用程序时)考虑配置,而有限资源在”运行时”(当我们应用程序已经在Node运行)时很重要。

1.4K20

使用Docker容器

介绍 Docker是一种流行容器化工具,用于为软件应用程序提供包含运行所需内容文件系统。使用Docker容器可确保软件行为方式相同,无论其部署位置如何,因为其运行时环境无情一致。...映像通常以根文件系统开头,并在有序只读层中添加文件系统更改及其相应执行参数。与典型Linux发行版不同,Docker映像通常只包含运行应用程序所必需基本要素。图像没有状态,也不会改变。...输出还提供了container(Exited)状态以及容器进入该状态(6 seconds ago)时间。如果容器仍在运行,我们会看到状态“Up”,然后是它运行了多长时间。...: cat /tmp/Example1 cat: /tmp/Example1: No such file or directory 这可能使数据看起来已经消失事实并非如此。...要重新启动现有容器,我们将使用带有-a标志start命令附加到它,并使用-i标志使其成为交互式,然后是容器ID或名称。

1.2K40

【Hadoop研究】YARN:下一代 Hadoop计算平台

Apache Hadoop 是最流行大数据处理工具之一。它多年来被许多公司成功部署在生产中。尽管 Hadoop 被视为可靠、可扩展、富有成本效益解决方案,大型开发人员社区仍在不断改进它。...,推测性地运行缓慢任务,计算作业计数器值总和,等等 为单个进程安排大量职责导致重大可伸缩性问题,尤其是在较大集群上,JobTracker 必须不断跟踪数千个 TaskTracker、数百个作业...使用数据中心空间更少,浪费硅片更少,使用电源更少,排放碳更少,这只是因为我们在更小更高效 Hadoop 集群上运行同样计算。...该容器允许应用程序使用特定主机上给定资源量。分配一个容器后,ApplicationMaster 会要求 NodeManager(管理分配容器主机)使用这些资源来启动一个特定于应用程序任务。...ApplicationMaster 竭尽全力协调容器,启动所有需要任务来完成它应用程序。它还监视应用程序及其任务进度,在新请求容器重新启动失败任务,以及向提交应用程序客户端报告进度。

1.1K60

Quarkus是Java未来吗?

livereload Quarkus恢复了一个随Spring Boot到来而消失功能:livereload。 当我们使用Java开发时,有必要启动编译并重新启动应用程序,以便将所做更改考虑在内。...livereload消除了重新启动需要,因此间接减少了反馈环路。 但是,这不适用于Spring Boot之类框架,该框架在使用反射启动程序时会构建应用程序上下文。...代码更改可能导致上下文更改,因此需要重新启动。这样重启产生间接成本,我们可以天真地相信会对生产力产生负面影响。...为了实现这些改进,Quarkus利用GraalVM和容器来构建本机Java可执行文件。然后优化可执行文件以在定义环境中运行。...> From Quarqus.io 由于具有本机可执行文件,因此即使不安装JDK也可以在任何计算机上运行JAVA应用程序。这特别重要,尤其是当我们使用微服务时。 ?

3.5K20

K8s生产最佳实践-限制NameSpace资源用量

在节点上,kubelet(可以监控资源代理)将此信息传递给容器运行时,容器运行使用内核cgroups来应用资源约束。...但是也请注意,CPU耗尽仍可能导致应用程序 pod 降级、活动探测失败并重新启动。 我们还希望避免另一种情况。...虽然可能需要为高峰处理时间保留资源,管理员应在这一点与运行可能不需要过剩容量重复成本之间进行平衡。 根据实际使用情况配置请求是一种平衡行为,应考虑应用程序风险管理(平衡可用性和成本)....还是类似这个图: 1个K8s node 应该可以轻松地容纳几个最大pod 让我们继续上面的LimitRange示例。 最小pod和容器大小可能由正在运行应用程序需求确定,管理员不必强制执行。...在开发环境中,当原型应用程序经常空闲运行,但在使用时需要合理按需资源时,高CPU maxLimitRequestRatio很好地工作。

1.1K20

浅析Kubernetes Pod重启策略和健康检查

在本文中,我们将介绍如何使用Kubernetes内置livenessProbe和readinessProbe来管理和控制应用程序运行状况。...将Pod调度到某个节点后,该节点上Kubelet将运行其中容器,并在Pod生命周期内保持它们运行。如果容器主进程崩溃,kubelet将重新启动容器。...但是,如果容器应用程序抛出错误导致其不断重启,则Kubernetes可以通过使用正确诊断程序并遵循Pod重启策略来对其进行修复。...readinessProbe会将Pod与流量隔离,直到故障原因消失。 通过在同一个Pod中使用这两种健康检查,可以确保流量不会到达尚未准备就绪Pod,并且确保Pod在发生故障时能重新启动。...良好应用程序设计应同时记录足够信息,尤其是在引发异常时。它还应公开必要API端点,这些端点将会传达重要运行状况和状态指标,以供监控系统(如Prometheus)使用

4.6K20

分享4个Linux中Node.js进程管理器

它允许您监视正在运行服务,它有助于执行常见系统管理任务(例如重新启动失败,停止,重新加载配置而无需停机,修改环境变量/设置,显示性能指标等等)。...image.png 安装PM2以在Linux中运行Nodejs应用程序 它支持应用程序监视:提供一种监视应用程序资源(内存和CPU)使用情况简单方法。...最后同样重要是,如果您使用Docker容器,PM2允许容器集成,并提供允许您以编程方式使用API系统。 2....Forever Forever是一个开源,简单且可配置命令行界面工具,可以连续(Forever)运行给定脚本。它适用于运行Node.js应用程序和脚本较小部署。...您可以通过两种方式永久使用:通过命令行或将其嵌入代码中。 image.png Forever运行脚本 它允许您管理(启动,列出,停止,停止所有,重新启动重新启动所有等等。)

2.9K61

Kubernetes架构原来这么简单

时光回溯 我们来了解一下为何 Kubernetes 能够裨益四方 传统部署时代:早期,各个组织是在物理服务器上运行应用程序。由于无法限制在物理服务器中运行应用程序资源使用,因此导致资源分配问题。...例如,如果在同一台物理服务器上运行多个应用程序, 则可能会出现一个应用程序占用大部分资源情况,而导致其他应用程序性能下降。...以应用程序为中心管理:提高抽象级别,从在虚拟硬件上运行 OS 到使用逻辑资源在 OS 上运行应用程序。...自我修复:在节点故障时重新启动失败容器,替换和重新部署,保证预期副本数量;杀死健康检查失败容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断。...Pod 销毁而消失

91830

从脆弱到完美:Kubernetes自我修复实践

但是,AKS 上 Spot 节点缺乏任何 SLA,这可能导致潜在突然抢占。我们经历了一次事件,其中大量 Spot 节点抢占导致多个有状态工作负载失败,从而导致级联应用程序故障并导致停机。...图 4:2023 年 11 月左右时段预占即时节点大量预留量。 一旦此 Automation 投入使用,我们注意到一些 Spot 节点仍在没有计划抢占事件情况下终止。...解决节点上缺少 node-problem-detector AKS 运行 node-problem-detector (NPD) 以监视 节点运行状况 并标记在故障期间要移除节点。...工作负载失败,因为容器运行时接口 (CRI) 在该节点上发生故障,从而阻止 kubelet 验证工作负载状态。 我们实施了一个自修复 Detector ,用于标记 NPD 未运行节点。...低级别网络、嘈杂邻居问题、CPU 内核使用优化是我们积极研究如何自动检测和纠正问题几个示例。此外,我们计划将该框架从平台缺陷扩展到应用程序缺陷。我们相信自修复相同机制具有广泛适用性。

9510

【k8s连载系列】k8s介绍

当多个应用程序跑在一台物理机上时候,无法为物理机中应用程序定义资源边界,这会导致资源分配问题。...例如,如果多个应用程序在同一台物理服务器上运行,则可能会出现一个应用程序占用大部分资源,而导致其他应用程序性能不佳情况。一个解决方案是在不同物理服务器上运行每个应用程序。...以应用程序为中心管理:将抽象级别从在虚拟硬件上运行操作系统提高到使用逻辑资源在操作系统上运行应用程序。...随着容器技术越来越多使用,出现了很多问题 百上千容器管理问题 分布式环境下容器如何通信? 如何协调和调度这些容器? 如何在升级应用程序时不会中断服务? 如何监视应用程序运行状况?...自我修复 Kubernetes 重新启动失败容器、替换容器、杀死不响应用户定义健康检查容器,并且在它们准备好服务之前不会将它们通告给客户端。

1.6K31

1.k8s前世今生

当多个应用程序跑在一台物理机上时候,无法为物理机中应用程序定义资源边界,这会导致资源分配问题。...例如,如果多个应用程序在同一台物理服务器上运行,则可能会出现一个应用程序占用大部分资源,而导致其他应用程序性能不佳情况。一个解决方案是在不同物理服务器上运行每个应用程序。...以应用程序为中心管理:将抽象级别从在虚拟硬件上运行操作系统提高到使用逻辑资源在操作系统上运行应用程序。...随着容器技术越来越多使用,出现了很多问题 百上千容器管理问题 分布式环境下容器如何通信? 如何协调和调度这些容器? 如何在升级应用程序时不会中断服务? 如何监视应用程序运行状况?...自我修复 Kubernetes 重新启动失败容器、替换容器、杀死不响应用户定义健康检查容器,并且在它们准备好服务之前不会将它们通告给客户端。

1.4K21

现代化Kubernetes应用程序

将基于虚拟机或基于裸机应用程序迁移到容器(称为“容器化”)并在集群内部署这些应用程序通常会导致这些应用程序构建,打包和交付方式发生重大变化。...这意味着它们响应客户端请求而不在本地存储持久性客户端和应用程序数据,并且在任何时间点如果正在运行应用程序容器被销毁或重新启动,关键数据不会丢失。...如果您已经实施了足够运行状况检查,日志记录和监视,则可以快速收到警报并调试生产问题,但是在重新启动和重新部署容器之后采取措施可能很困难。...出于本指南目的,我们将使用Docker容器您应该使用最适合您生产需求容器实现。...当Pod重新启动或死亡时,其卷也崩溃,如果卷包含云块存储,则只需卸载未来Pod可访问数据。

2K86
领券