同期のためにすべてのクライアントipsのリストを必要とするアプリケーションを実行します。私はKubernetesでこのアプリケーションを実行し、これらのクライアントポッドからhttps://kubernetes/api/v1/pods
に対して要求を出します。そこで私は、同じ展開(複製セット)によってこのように作成されたすべてのポッドを識別する信頼できる方法を探しています。兄弟ポッドを見つける(同じ配備で配備されたポッド)
これにより、ローリングアップグレード中にポッドも正しく識別されることが重要です。
私はどれも本当に私を説得しないでもことを、私は共有したいアイデアのカップルを持っている:
1)ラベル(?labelSelector=label=value
)の使用:
1.A)はカスタムラベルを定義します。これらのポッドだけが持っているもの:有効な解決策ですが、解決策は本当に一般的なものでなければならないので、ポッドには特別なラベルを定義する必要はありません。またこの方法では、ラベルを取得した他のポッドを追加することはできません。
1.b)自動生成pod-template-hashラベル:悲しいことに、このアップデートはローリングアップデート中に変更されるため、アップデートが行われてもセレクタは正しく動作しません。
2)私はname
かownerReference.name
属性のサブパートのいずれかを使用するのではと思ったカスタムフィールド(?fieldSelector
)
を使用します。悲しいことにfieldSelectorはbadly documentedであるか、まったく動作しません。私はjq
経由でポッドの完全なリストを解析することも考えましたが、依存関係は本当に好きではありません。
3)
)私は今、(再びラベルを使用して横にどのサービスに属するポッドを認識するための方法を参照してください一般的なサービスに
を参照することで、すべてのポッドを識別し、他のアイデアがあります兄弟ポッドを特定するには?私は疑問に思っていませんでした。
ラベル/セレクタは実際にあなたが見ているものです〜のために。 'kubectl get rs [name] -o = yaml'を使って' selector: 'フィールドを見てください。 –
もちろん、通常はラベルを使用して選択する必要があります。私はまだ兄弟を選ぶ一般的な方法がないことに驚いていますが、いくつかの共著者と話をした後、そこには認識されていません。 – nik