51
  1. kubernetesサービスを公開できますservice。これで問題ありません。
  2. 1 つの Web インスタンスと 10 の Java サーバー インスタンスがあるとします。
  3. インストールされたjconsoleを介してこれらの10個のJavaサーバーインスタンスにアクセスするために使用するWindowsゲートウェイがあります。
  4. 明らかに、kubernetes サービスを介してすべてのアプリの jmx ポートを公開しているわけではありません。

ここでのオプションは何ですか? これらの 10 台のサーバー jmx ポートへの外部 kubernetes クラスター Windows ゲートウェイ アクセスを許可するにはどうすればよいですか? ここでの練習はありますか?

4

4 に答える 4

4

https://stackoverflow.com/a/39927197/1387184に追加して、同じポッドのすべてのインスタンスを一度に監視したかったのですが、ポートを 1099 としてハードコーディングしているため、ポートフォワードを 1 つしか実行できないため困難でした。そのポートを持つポッド。

Docker の実行時にシェル スクリプトを使用してポッドを動的に割り当てる

Dockerfile CMD /run.sh

run.sh

JMX_PORT=$(((RANDOM % 20)+1099))

echo "Running JMX on Port $JMX_PORT"

java ``eval echo $JAVA_OPTS`` ...

展開.yml env: - name: JAVA_OPTS value: "-Xms256m -Xmx6144m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT -Djava.rmi.server.hostname=127.0.0.1"

eval は JMX_PORT を bash 値に評価し、開始時に各 Pod が異なる Pod を取得する可能性があります。私

于 2018-09-09T09:20:09.017 に答える
3

次の方法でそれを行いました

  1. ポッドごとに一意のラベルを追加します。例: podid=asdw23443
  2. podid=asdw23443 のセレクターで新しいサービスを作成します。サービスで、ノードポートまたはロードバランサーを介してポッドの jmx ポートを公開していることを確認してください。

サービス中のノードポートを選択している場合は、NAT 操作を行っているため、jconsole を介して接続する必要がある各 jvm に対して次の JVM 引数を指定する必要がある場合があります。

-Djava.rmi.server.hostname=<your-ip-address>
于 2016-02-20T03:01:12.593 に答える
1

1 つの方法は、pod_name などの一意の文字列 \id を使用してポッドにラベルを追加し、expose コマンドを使用して、この一意の ID\string のセレクターで新しいサービスを作成することだと思います。

kubectl label pods <podname> podname=<podname>
kubectl expose pod <podname> --port=9010 --name=<podname>_jmx
于 2016-02-19T10:29:01.500 に答える