2017-08-15 3 views
1

私はベアメタル上にフランネルネットワークを持つKubernetesクラスタをセットアップしました。サービスを展開してクラスタ内で実行しています。このサービスは、同じサブネット内の他のエンドデバイスを検出するためにブロードキャストされます。同じサブネット内のハードウェアをKubernetesポッドに参加させることは可能ですか?

問題は、ブロードキャストを受信するクライアントエージェントが、リソースが制約されたハードウェア上で実行されていることです。これらのデバイスは、マスタノードとワーカーノードと同じサブネットで実行されています。ポッド(ネットマスク:10.244.0.0/16)に配備されたサービスは、ホストOSサブネット(ネットマスク:192.168.0.0/24)で実行されているクライアントを検出できません。ポッドのサブネットでクライアントに参加するにはどうすればいいですか?

ご協力いただきありがとうございます。

答えて

0

ポッド設定でhostNetwork: trueを追加して、同じサブネットでホストとポッドを動作させることになりました。その場合、コンテナはホストネットワークを使用しています。 here

からインスピレーションを受けた構成は、次のようになります。

apiVersion: v1 
kind: ReplicationController 
metadata: 
name: worker 
namespace: default 
spec: 
replicas: 4 
selector: 
    name: worker 
template: 
    metadata: 
    labels: 
     name: worker 
spec: 
    hostNetwork: true 
    containers: 
     - image: 10.0.0.1:5000/worker 
     name: worker 
     imagePullPolicy: IfNotPresent 
0

問題は実際には異なるサブネット(ポッドネットワークとベアメタルネットワーク)にあることです。したがって、異なるサブネット間のサービス検出に使用できるオプションを確認する必要があります。いくつかは、(P2Pネットワークの仕事のように)トラッカーの使用を提案しますhttps://serverfault.com/a/304344/380575

また、外部サービス/エンドポイントをクラスタ外で実行されているサービスに追加することもできますが、これが機能することは非常に不確実です。

要点:他のサブネットでサービスが必要な場合は、トラッカーを使用するか、静的エンドポイントを作成することができます。

関連する問題