web-dev-qa-db-ja.com

Kubernetesでポッドを停止/一時停止する方法

クラスタでMySQLポッドを実行しています。
ポッドを削除せずに一時的に動作させないようにする必要があります。これは、docker stop container-id cmdがコンテナーを停止せず、コンテナーを削除しないdockerに似ています。
ポッドを一時停止/停止するためにKubernetesで使用できるコマンドはありますか?

38

いいえ。ポッドを停止して、必要なときに後で再開することはできません。ただし、以下のアプローチを検討できます。

K8sでは、ポッドはサービスを使用して抽象化されます。ポッドの分離を考える1つの方法は、サービス定義のポッドセレクターを更新することです。これにより、サービス定義を使用してポッドへのトラフィックを制御できます。トラフィックを復元する場合は常に、ポッドセレクターの値を更新して、サービス定義にあった値に戻します。

9
P Ekambaram

そのため、他の人が指摘したように、Kubernetesはポッドの現在の状態の停止/一時停止、および必要に応じた再開をサポートしていません。ただし、レプリカの数を0に設定する機能するデプロイメントがない場合でも、それを実現できます。

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

ヘルプを見る

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

スケールを使用すると、ユーザーはスケールアクションの1つ以上の前提条件を指定することもできます。

--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
77