2016-05-19 7 views
0

AWSでkubernetesマスターセットアップがあり、ELBとのバランスが取れています。 私はterraformを使用して5-6のインスタンスを作成し、それをkubeスレーブとしてプロビジョニングし、kubeletsをELBに向けます。 kubectl getノードを実行すると、3つまたは4つのインスタンスしか表示されません。マスターとのスレーブ登録が、いくつかのノードで失敗するように見えますが、すべてのノードは同じです。Kubernetesスレーブの動作が一貫しておらず、スレーブ数が少なく表示されない

ランダムな動作で、すべてのスレーブがうまく表示されます。

+1

あなたは 'kubectl get nodes'から奴隷が現れて消えていますか?そうでない場合、kubectlはノードショー(マスターとのスレーブheartbeta)を何と表現しますか?はいの場合は、kubeletログ(ディストリビューション固有、通常var/logまたはjournatd)を見てください。 –

+0

あなたはこれを試しましたか? 'kubectl --namespace = kube-systemノード取得-a' – Naveen

答えて

1

AWSとTerraformに関する私の経験から、これは競合状態になる可能性があります。 kubeletは前ELBがサービスを提供することが可能である始まり何らかの理由で、ノードは単に(「ホストが見つかりません」または「エラーを登録するには失敗しますので、もし

ELBsは通常、EC2インスタンスが準備するよりも多くの時間を必要としますタイミングによって500" )

あなたは2つの方法でそれを軽減することができます。

  • は、あなたのkubeletサービス/コンテナが失敗
  • に自動的に再起動させると、EC2インスタンスとELBの間の厳密な依存関係を作成します上の準備チェックELB

私はもちろんのこと理論を検証するためにkubeletからログが必要になります(HTTP呼び出しは十分であろう)。

2

自分の質問に答える - 私は

私は彼らのPrivateIPとスレーブノードに名前を付け、私は動的に奴隷を起動、習得するためにそれを添付して、スケジュールポッド、およびジョブがを完了した後、スレーブを破壊するが、をこれらのノードをkubeから削除することはありません。すなわち: 'kubectl delete node-name'。

これらの破壊されたすべてのスレーブノードは、名前= PrivateIPの「準備ができていません」状態でした。

スレーブが破棄されたため、PrivateIPはAWS IPプールに戻され、新しく生成されたインスタンスはこれらのIPを使用できるようになりました。

私は新しいスレーブを作成してそれをマスターに接続しようとすると、「準備ができていない」状態にあるスレーブと同じPrivateIPを取得する可能性があります(これらのスレーブは破壊され、 )。

したがって、Kubernetesは以前のスレーブの状態を「Ready」状態に変更するだけでした。これは、新しいスレーブが表示されるのをプログラマチックに待っていたので、が先に気付かずにになりました。

お知らせ:

がKubernetesすなわちからスレーブを取り外す意味削除

終了を意味破棄AWSインスタンス。 kubectlノード名を削除する

関連する問題