如何 stop/pause 在 kubernetes 中创建一个 pod

how to stop/pause a pod in kubernetes

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

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

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

因此,就像其他人指出的那样,Kubernetes 不支持 stop/pause 当前 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

使用 Kubernets,stop/pause Pod 是不可能的。但是,您可以删除 Pod,前提是您有清单可以再次将其恢复。

如果你想删除一个Pod,你可以运行下面的kubectl命令:

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