web-dev-qa-db-ja.com

kubernetesクラスターを停止する方法は?

Kube-up.shを使用して、Googleコンピューティングエンジンでクラスターを開始しました。このスクリプトは、マスターノードとミニオングループを作成しました。不要になったら、クラスターを停止し、すべてのVMをシャットダウンして、インスタンスの処理にお金を無駄にしないようにします。シャットダウンすると(別の方法がわからないため、すべてのクラスターVMをシャットダウンするだけです)、しばらくしてからクラスターが動作しなくなります。 「kubectl get nodes」は、ノードに関する正しい情報を表示しません(たとえば、A B C nodes == minionsがあり、存在しないDのみが表示されます)。たぶん私はそれが正しくないシャットダウンします。クラスターをしばらく停止してからVMを停止して、しばらくしてから再起動するにはどうすればよいですか? (削除しない)

私が持っているクラスター:

kubernetes-master             | us-central1-b
kubernetes-minion-group-nq7f  | us-central1-b
kubernetes-minion-group-gh5k  | us-central1-b

「kubectl get nodes」コマンドの表示内容:

[root@common frest0512]# kubectl get nodes
NAME                           STATUS                     AGE       VERSION
kubernetes-master              Ready,SchedulingDisabled   7h        v1.8.0
kubernetes-minion-group-02s7   Ready                      7h        v1.8.0
kubernetes-minion-group-92rn   Ready                      7h        v1.8.0
kubernetes-minion-group-kn2c   Ready                      7h        v1.8.0

マスターノードをシャットダウンする前に、正しく表示されました(ミニオンの名前と数は同じでした)。

10
Viacheslav

Carlos に感謝します。

以下の手順に従って、Kubernetesクラスターからすべてのアクティブノードをデタッチできます。

1- Kubernetes Engineダッシュボードに移動して、クラスターを選択します。
https://console.cloud.google.com/kubernetes

enter image description here

2-詳細に移動して[編集]をクリックし、プールサイズをゼロ(0)に設定します。

enter image description here

3- Compute Engineダッシュボードで検証ノードがシャットダウンしている
https://console.cloud.google.com/compute

enter image description here

7
Teoman shipahi

誤解がない限り、Compute Engineを介してVMを個別に停止してクラスターを強制終了しようとしているようです。その場合、Container EngineはVMが強制終了されたことを確認し、代わりに新しいVMを起動してクラスターを正常に保ちます。クラスターを停止する場合は、Container Engineインターフェースを使用して停止する必要があります。このようにして、ノードを強制終了しても間違いではないことがわかり、プロビジョニングされたすべてのVMとディスクがシャットダウンされます。

4
sanche

開発段階で作業中にGoogleクラウドの料金が原因で同じ問題に直面したため、この問題の回避策を見つけました。 Kubernetesは、これらのインスタンスを停止するコマンドを与えるとすぐに、GoogleクラウドコンピューティングVMを厳密に再起動します。これは、kubenetesがそのように設計されているためです。例えば:

gcloud compute instances stop [instance-name] --async --zone=us-central1-b

インスタンスが一度停止し、インスタンスが停止したことを認識すると、kubernetesは自動的に再起動をトリガーします。このコマンドは他のインスタンスで完全に動作しますですがkubernetedクラスターで作成されたものではありませんです。

Kubernetesは、ダウンしたインスタンスを再起動する傾向があるため、コンピューティングインスタンスを処理しているためです。インスタンスを停止して運用コストを削減するには、次のコマンドを使用してkubernetedノードをドレインする必要があります。

Compute VMインスタンスを停止します。

  • リストを取得od kubectl get nodesを使用して実行中のノード。これは、kubernetedクラスターの現在のコンテキストで実行中のノードを一覧表示します。
  • Kubernetedサービスを停止するには、ドレインモードですべてのノードを停止する必要がある場合があります。次のコマンドkubectl drain [pod/node-name]を使用します。
  • 次に、次のコマンドgcloud compute instances stop [instances-name] --async --zone=[zone]を使用して、gcloudコマンドを使用してコンピューティングインスタンスをシャットダウンします。これによりVMインスタンスが停止し、kubernetesはノード/ポッドが既にダウンしているため、インスタンスの自動再起動をトリガーしません。

Compute VMインスタンスを再起動するには

  • 次のコマンドを使用して、compute VM instance gcloud compute instances start [instances-name] --async --zone=[zone]。]を再起動します。ただし、このコマンドでは、kubernetesクラスターの使用を開始するには不十分です。uncordon前のステップで排出しました。
  • ノードはdrainモードであるため、このコマンドを使用してノードを起動しますkubectl uncordon [node/pod-name]
  • これで、kubernetesクラスターノードによって公開されたAPIにアクセスできるようになります。

注:同じソリューションはgoogleクラウドコンソールを使用して実現できますが、私はDevOpsの実践者なので、ワークフローを自動化するためのスクリプトを作成し続けます。

1
Gaurav Sharma

Kubeadmを使用している場合、正常なシャットダウンを直接行う方法はありません。唯一の方法がリセットされます

kubeadmリセット

0
amit23comp