2017-04-19 11 views
1

同期のためにすべてのクライアントipsのリストを必要とするアプリケーションを実行します。私はKubernetesでこのアプリケーションを実行し、これらのクライアントポッドからhttps://kubernetes/api/v1/podsに対して要求を出します。そこで私は、同じ展開(複製セット)によってこのように作成されたすべてのポッドを識別する信頼できる方法を探しています。兄弟ポッドを見つける(同じ配備で配備されたポッド)

これにより、ローリングアップグレード中にポッドも正しく識別されることが重要です。

私はどれも本当に私を説得しないでもことを、私は共有したいアイデアのカップルを持っている:

1)ラベル(?labelSelector=label=value)の使用:

1.A)はカスタムラベルを定義します。これらのポッドだけが持っているもの:有効な解決策ですが、解決策は本当に一般的なものでなければならないので、ポッドには特別なラベルを定義する必要はありません。またこの方法では、ラベルを取得した他のポッドを追加することはできません。

1.b)自動生成pod-template-hashラベル:悲しいことに、このアップデートはローリングアップデート中に変更されるため、アップデートが行われてもセレクタは正しく動作しません。

2)私はnameownerReference.name属性のサブパートのいずれかを使用するのではと思ったカスタムフィールド(?fieldSelector

を使用します。悲しいことにfieldSelectorはbadly documentedであるか、まったく動作しません。私はjq経由でポッドの完全なリストを解析することも考えましたが、依存関係は本当に好きではありません。

3)


)私は今、(再びラベルを使用して横にどのサービスに属するポッドを認識するための方法を参照してください一般的なサービスに

を参照することで、すべてのポッドを識別し、他のアイデアがあります兄弟ポッドを特定するには?私は疑問に思っていませんでした。

+0

ラベル/セレクタは実際にあなたが見ているものです〜のために。 'kubectl get rs [name] -o = yaml'を使って' selector: 'フィールドを見てください。 –

+0

もちろん、通常はラベルを使用して選択する必要があります。私はまだ兄弟を選ぶ一般的な方法がないことに驚いていますが、いくつかの共著者と話をした後、そこには認識されていません。 – nik

答えて

0

これは、通常、appセレクタが使用するものです。

kubectlを使用して、展開のポッドを一覧表示できます。あなたはまた、YAMLファイルでポッドを一覧表示することができ

kubectl get pods -l app=nginx 

    NAME          READY  STATUS RESTARTS 
    AGE nginx-deployment-1771418926-7o5ns 1/1  Running 0   
    16h nginx-deployment-1771418926-r18az 1/1  Running 0 

$ kubectl get pod -f ./pod.yaml

リスト展開によって作成されたポッド:

次はofficial docsからです

+1

これは実際にあなたのポッドのspecで 'app'ラベルを宣言した場合、または' kubectl run'コマンド(暗黙的にラベルを追加する)を使用した場合にのみ機能します。 –

+0

それは正しいですが、それでもあなたが達成しようとしていることを行う標準的な方法と考えられます。 –

関連する問題