2016-04-19 10 views
3

使用方法gcloud container clusters resizeクラスタを簡単に拡大縮小できます。しかし、私は、特定の計算インスタンスVMをリサイズする際に削除対象にする方法がないことを知っています。不正なGKEノードインスタンスを置き換えるには、どのような方法が推奨されますか?

シナリオ:当社のCompute Engineのログは、長い間経過したKubernetesポッドから1つのインスタンスがボリュームのマウントを解除できないことが原因であることを示しています。クラスタのサイズは適切であり、誤動作しているノードはコンテナに正しく対応していますが、CPUの負荷が最大になっています。

私は古いものを殺す前に、明らかに私は新しいKubernetesノードを準備しておきたいと思います。 gcloud computeを使用してインスタンスのサイズを変更してから削除することは安全ですか?これを行うにはコンテナを意識した方法がありますか?

答えて

2

ただし、サイズを変更するときに、特定の計算インスタンスvmを削除対象にする方法はありません。

ありGKEのAPIを使用して削除したVMを指定する方法はありませんが、これはあなたが削除インスタンスの数によってノードのあなたの数を縮小します(delete individual instances from the groupに管理するインスタンス・グループのAPIを使用することができますノードを置き換えたい場合は、クラスターをスケールアップして補正します)。あなたは実行してインスタンスのグループ名を見つけることができます。

$ gcloud container clusters describe CLUSTER | grep instanceGroupManagers 

それは単純にサイズを変更しても安全ですし、その後のgcloud計算を使用してインスタンスを削除し、またはこれを行うには、いくつかのコンテナ対応の方法はありますか?

インスタンスを削除すると、管理対象インスタンスグループが新しいインスタンスに置き換えられます(1つ上にスケールアップすると余分なノードが残されます)。一時的な容量の損失が心配されていない場合は、VMを削除して再作成できるようにするだけです。

インスタンスを削除する前に、kubectl drainを実行してインスタンスからワークロードを削除できます。これにより、単にインスタンスを削除してコントローラに通知されるのを待つよりも、ポッドの再スケジュールが速くなります。

+0

私が望んでいたように整然としています。 'gcloud計算インスタンスグループ管理リサイズ'の後に 'kubectl drain'と' gcloud計算インスタンスグループ管理削除インスタンス 'があります。 – solsson

+0

「gcloud計算インスタンスグループ管理のサイズ変更」と「gcloudコンテナクラスターのサイズ変更」に違いはありますか? – solsson

+0

今すぐ後でMIG URLが見つけられ、クラスタのサイズが変更されます(GKE API自体は現在、サイズ変更呼び出しを公開していません)。 –

0

ここでは、マルチゾーンクラスタを使用しています。つまり、インスタンスグループ名を取得する新しい方法が必要でした。現在のシェルコマンド:

BAD_INSTANCE=[your node name from kubectl get nodes] 

kubectl cordon $BAD_INSTANCE 

kubectl drain $BAD_INSTANCE 

gcloud compute instances describe --format='value[](metadata.items.created-by)' $BAD_INSTANCE 

gcloud compute instance-groups managed resize --zone=[from describe output] --size=[desired size + 1] [grp from describe output] 

gcloud compute instance-groups managed delete-instances --instances=$BAD_INSTANCE --zone=[from describe output] [grp from describe output] 
関連する問題