【问题标题】:how to stop/pause a pod in kubernetes如何在 kubernetes 中停止/暂停 pod
【发布时间】:2019-07-16 04:35:32
【问题描述】:

我的集群中正在运行一个 MySQL pod。
我需要暂时暂停该 pod 的工作而不删除它,类似于 docker,docker stop container-id cmd 将停止容器而不是删除容器。
kubernetes 中是否有任何命令可用于暂停/停止 pod?

【问题讨论】:

  • 这个问题是什么让人们来到这里并得到他们的答案,但问题只得到了不到一半的赞成票作为接受的答案????

标签: docker kubernetes kubernetes-pod


【解决方案1】:

没有。无法停止 pod 并在需要时稍后恢复。但是,您可以考虑以下方法。

在 k8s 中,pod 是使用服务抽象出来的。我能想到的隔离 pod 的一种方法是更新服务定义中的 pod 选择器。 这样,您可以使用服务定义控制到 pod 的流量。每当您想恢复流量时,请将 pod 选择器值更新回服务定义中的值。

【讨论】:

  • 太糟糕了,它对源是 kafka/eventhub 的 pod 没有帮助(我希望暂停它们,启动新的 pod,如果失败则恢复旧的 pod)
  • 嗨@MartinKosicky,这正是我的用例,我有一个通过kafka协议从eventthubs消费的容器。你找到解决方案了吗?我想到的唯一两个问题是丑陋的(更改凭据、容器内的多进程而不是 pod 中的多个容器等)。
  • @karlos9o 我们实际上只是删除了旧的 pod,因为它来自 eventthub/kafka,所以零停机在这里并不那么重要。但如果你真的想要它,你可以 kubectl apply 并更改一些配置(暂停处理)。这应该会触发 Pod 的重新部署
  • 服务并不意味着是 pod 的抽象。服务只是路由不同类型的网络流量和端口映射的一种方式。扩展 Deployment 的副本数量,特别是副本集为 0(如果不存在 HPA)实际上会删除 pod 的所有实例
【解决方案2】:

因此,就像其他人指出的那样,Kubernetes 不支持停止/暂停 Pod 的当前状态并在需要时恢复。但是,您仍然可以通过没有将副本数设置为 0 的有效部署来实现它。

kubectl scale --replicas=0 deployment/<your-deployment>

查看帮助

# Set a new size for a Deployment, ReplicaSet, Replication Controller, or StatefulSet.
kubectl scale --help

Scale 还允许用户为缩放操作指定一个或多个先决条件。

如果指定了--current-replicas--resource-version,则在尝试缩放之前对其进行验证,并且它是 保证将秤发送到服务器时,前提条件成立。

示例:

  # Scale a replicaset named 'foo' to 3.
  kubectl scale --replicas=3 rs/foo

  # Scale a resource identified by type and name specified in "foo.yaml" to 3.
  kubectl scale --replicas=3 -f foo.yaml

  # If the deployment named mysql's current size is 2, scale mysql to 3.
  kubectl scale --current-replicas=2 --replicas=3 deployment/mysql

  # Scale multiple replication controllers.
  kubectl scale --replicas=5 rc/foo rc/bar rc/baz

  # Scale statefulset named 'web' to 3.
  kubectl scale --replicas=3 statefulset/web

【讨论】:

  • 感谢您的提示,我认为 应该是
  • 据我了解,如果有 hpa,这是不可能的。
  • 没错。这就是我开始陈述所有建议的原因,答案主要是在问题的背景下
【解决方案3】:

使用 Kubernetes,无法停止/暂停 Pod。但是,您可以删除 Pod,因为您有清单可以再次将其恢复。

如果要删除 Pod,可以运行以下kubectl 命令:

kubectl delete -n default pod <your-pod-name>

【讨论】:

  • 问题不在于删除一个 pod。
猜你喜欢
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
  • 1970-01-01
相关资源
最近更新 更多