bash スクリプトでは、通常、「kubectl wait」を使用して、特定のポッド リソースの準備が整うまでブロックします。たとえば、次のようなものです。
kubectl wait --for=condition=Ready --timeout=2m -n mynamespace pod -l myselector
多くの場合、待機する必要があるポッドの正確な名前がわからないため、これはうまく機能します。「kubectl wait」を使用すると、セレクターに基づいてポッドを見つけて、準備が整うまでブロックできます。
次に、golang コードで同様のことを行う必要があります。client-goライブラリを使用して特定のポッドを名前で認証および「取得」する例を見てきました。しかし、この例を私のニーズに最適に適応させる方法についていくつか質問があります...
ポッドを「Get()」できる正確な/完全な名前がわからないため、セレクターを使用してポッドを見つけることができるため、「kubectl wait」が最適です。セレクターを使用して必要なポッドを見つけられるようにするには、代わりに client-go ライブラリを使用して Get() の代わりに CoreV1().Pods().List() 呼び出しを行う必要があると思いますか?
また、ポッドはすぐには存在しない可能性があり、「kubectl wait」が処理する 1 分ほど後にのみ作成される可能性があります。コードでは、ポッドが存在するまでループ/スリープして List() を実行し続ける必要がありますか?
#2と同様の質問... List()がポッド名を返したら、そのポッドが「準備完了」状態になるのをgolangで「待機」する最良の方法は何ですか?回避できる場合は、スリープで醜いポーリングを実行したくありません...だから、golang の「待機」パッケージなどを使用するより良いオプションはありますか? おすすめは何ですか?