如何在kubernetes中停止/暂停Pod

时间:2019-02-22 06:10:51

标签: docker kubernetes kubernetes-pod

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

2 个答案:

答案 0 :(得分:8)

因此,就像其他人指出的那样。 Kubernetes不支持pod当前状态的停止/暂停,并在需要时恢复。

但是,您仍然可以通过没有有效的部署(将副本数设置为0)来实现。

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

查看帮助

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

Scale also allows users to specify one or more preconditions for the scale action.

If --current-replicas or --resource-version is specified, it is validated before the scale is attempted, and it is
guaranteed that the precondition holds true when the scale is sent to the server.

Examples:
  # 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

答案 1 :(得分:4)

不。需要时,无法停止窗格并稍后恢复。但是,您可以考虑采用以下方法。

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