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
マスターノードをシャットダウンする前に、正しく表示されました(ミニオンの名前と数は同じでした)。
Carlos に感謝します。
以下の手順に従って、Kubernetesクラスターからすべてのアクティブノードをデタッチできます。
1- Kubernetes Engineダッシュボードに移動して、クラスターを選択します。
https://console.cloud.google.com/kubernetes
2-詳細に移動して[編集]をクリックし、プールサイズをゼロ(0)に設定します。
3- Compute Engineダッシュボードで検証ノードがシャットダウンしている
https://console.cloud.google.com/compute
誤解がない限り、Compute Engineを介してVMを個別に停止してクラスターを強制終了しようとしているようです。その場合、Container EngineはVMが強制終了されたことを確認し、代わりに新しいVMを起動してクラスターを正常に保ちます。クラスターを停止する場合は、Container Engineインターフェースを使用して停止する必要があります。このようにして、ノードを強制終了しても間違いではないことがわかり、プロビジョニングされたすべてのVMとディスクがシャットダウンされます。
開発段階で作業中にGoogleクラウドの料金が原因で同じ問題に直面したため、この問題の回避策を見つけました。 Kubernetesは、これらのインスタンスを停止するコマンドを与えるとすぐに、GoogleクラウドコンピューティングVMを厳密に再起動します。これは、kubenetesがそのように設計されているためです。例えば:
gcloud compute instances stop [instance-name] --async --zone=us-central1-b
インスタンスが一度停止し、インスタンスが停止したことを認識すると、kubernetesは自動的に再起動をトリガーします。このコマンドは他のインスタンスで完全に動作しますですがkubernetedクラスターで作成されたものではありませんです。
Kubernetesは、ダウンしたインスタンスを再起動する傾向があるため、コンピューティングインスタンスを処理しているためです。インスタンスを停止して運用コストを削減するには、次のコマンドを使用してkubernetedノードをドレインする必要があります。
kubectl get nodes
を使用して実行中のノード。これは、kubernetedクラスターの現在のコンテキストで実行中のノードを一覧表示します。kubectl drain [pod/node-name]
を使用します。gcloud compute instances stop [instances-name] --async --zone=[zone]
を使用して、gcloudコマンドを使用してコンピューティングインスタンスをシャットダウンします。これによりVMインスタンスが停止し、kubernetesはノード/ポッドが既にダウンしているため、インスタンスの自動再起動をトリガーしません。gcloud compute instances start [instances-name] --async --zone=[zone]
。]を再起動します。ただし、このコマンドでは、kubernetesクラスターの使用を開始するには不十分です。uncordon
前のステップで排出しました。drain
モードであるため、このコマンドを使用してノードを起動しますkubectl uncordon [node/pod-name]
。注:同じソリューションはgoogleクラウドコンソールを使用して実現できますが、私はDevOpsの実践者なので、ワークフローを自動化するためのスクリプトを作成し続けます。
Kubeadmを使用している場合、正常なシャットダウンを直接行う方法はありません。唯一の方法がリセットされます
kubeadmリセット