0

ローカルネットワーク上の他のkubernetesポッドのIPアドレスを取得する最良の方法は何ですか?Kubernetes:ネットワーク上の他のポッドのIPアドレスを取得する

現在、次のコマンドを使用して出力を解析しています:kubectl describe pods

残念ながら、上記のコマンドは完了までに多くの時間がかかります(少なくとも3回、多くの場合30秒以上)。ほとんどのリクエストがほぼ同時に発生すると、503スタイルのエラーが発生します。私はローカルのポッドにIPアドレスをキャッシュするためにこのコマンドの周りにキャッシュシステムを構築しましたが、10個程度のポッドが目を覚ましてこのキャッシュを作成する必要がある場合、大きな遅延があり、多くの場合エラーがあります。私は何かが間違っているように感じる。ネットワーク上の他のポッドのIPアドレスを取得することは、簡単なプロセスであるように思えます。だから、それらを得るための最善の方法は何ですか?

詳細については、コンテナエンジンでGoogleのkubernetesシステムを使用しています。標準のUbuntuイメージを実行する。


コンテキスト:コンテキストを追加するには、私が一緒にクラスタ上のポッドの間での共有のmemcachedを入れしようとしています。そうするためには、彼らはお互いのIPアドレスを知る必要があります。 memcachedの目的のためにポッド/インスタンスを簡単にリンクする方法があれば、それも役に立ちます。

答えて

1

説明されているユースケースについては、サービスを利用する必要があります。ヘッドレスサービスでは、my-svc.my-namespace.svc.cluster.localでそれらを参照することができます。これは、個々のノードを知る必要はなく、それらのノードに到達する方法のみを知っている必要があることを前提としています。

ポッドに接続されたクラスタ内の固定ネットワークIDが必要な場合は、StatefulSetを設定し、app-0.my-svc.my-namespace.svc.cluster.localapp-1.my-svc.my-namespace.svc.cluster.localなどで参照できます。

他の方法で特定のポッドIPに連絡する必要はありません。特に、いつでも再スケジュールすることができ、IPを変更することができます。あなたのユースケースについては

具体的には、それだけでStatefulSetでクラスタをサポートしていますmemcacheのヘルムチャート、使用する方が簡単かもしれません:https://github.com/kubernetes/charts/tree/master/stable/memcached

+0

Memcacheは、memcacheプールに参加しているネットワーク上のすべてのサーバーを知る必要があります。これが機能するかどうかはわかりません。 – speedplane

+0

StatefulSetを使ってネットワーク内のすべてのアイデンティティを知る必要がある場合、私の答えの2番目の部分を参照してください。 – vascop

+0

StatefulSetのことは聞いたことがなく、かなり新しくなっているようですが、Kubernetesは本当に動くターゲットです! – speedplane

1

は、あなたがこれもポッドのIPアドレスを返す

kubectl get pods -o wide 

を試してみました。これですべての情報が返されないので、describeが返されます。

+0

を、私は、このコマンドを試してみましたが、私は多分わずかに(それははるかに良いではないと思います)。また、これらのリクエストが多い場合(たとえば、各ポッドの各プロセスで1つのプロセスが作成されるなど)、503のエラーが発生します。今のところ、私はカスタムip ファイルシステムベースのキャッシュを使用しています。ネットワーク上のすべてのIPをすばやく簡単に取得する方法がないのは不思議です。 – speedplane

関連する問題