9.2. EgressIP オブジェクト
ニーズに合わせて EgressIP オブジェクトを効果的に設定する方法をより深く理解するには、次の YAML ファイルを参照してください。
EgressIP 名前空間セレクターが複数の名前空間のラベルに一致する場合、以下の動作を考慮してください。
- 選択された Pod のすべてのトラフィックは、単一のノードを経由する必要があります。トラフィックが多い時間帯には、ノードのネットワークインターフェイスでパフォーマンスの問題が発生する可能性があります。
- ラベルセレクターのエラーにより、多くのクラスターネームスペースの送信 IP アドレスが変更される可能性があります。
- クラスタースコープのオブジェクトを作成または変更できるのは、クラスター管理者のみです。
-
パケットは、ノード内に存在する Pod から、
EgressIPオブジェクトで参照される名前付きホストノードへ移動する必要があります。この方法では、ネットワークホップが 1 つ増えます。
単一のラベルセレクターなど、クラスター内に存在するすべての名前空間に同じ送信 IP アドレスを使用させるような送信ルールを作成しないでください。この設定では、ネットワークトラフィックが集中している時に、その IP アドレスをホストするノードがクラッシュする可能性があります。
以下の YAML は、EgressIP オブジェクトの API を説明しています。オブジェクトの範囲はクラスター全体です。これは namespace では作成されません。
apiVersion: k8s.ovn.org/v1
kind: EgressIP
metadata:
name: <name>
spec:
egressIPs:
- <ip_address>
namespaceSelector:
...
podSelector:
...
ここでは、以下のようになります。
<name>-
EgressIPsオブジェクトの名前。 <egressIPs>- 1 つ以上の IP アドレスの配列。
<namespaceSelector>- Egress IP アドレスを関連付ける namespace の 1 つ以上のセレクター。
<podSelector>- オプションのパラメーター。Egress IP アドレスを関連付けるための指定された namespace の Pod の 1 つ以上のセレクター。これらのセレクターを適用すると、namespace 内の Pod のサブセットを選択できます。
以下の YAML は namespace セレクターのスタンザを説明しています。
namespace セレクタースタンザ
namespaceSelector:
matchLabels:
<label_name>: <label_value>
ここでは、以下のようになります。
<namespaceSelector>- namespace の 1 つ以上のマッチングルール。複数のマッチングルールを指定すると、一致するすべての namespace が選択されます。
以下の YAML は Pod セレクターのオプションのスタンザを説明しています。
Pod セレクタースタンザ
podSelector:
matchLabels:
<label_name>: <label_value>
ここでは、以下のようになります。
<podSelector>-
オプションのパラメーター。指定された
namespaceSelectorルールに一致する、namespace の Pod の 1 つ以上のマッチングルール。これが指定されている場合、一致する Pod のみが選択されます。namespace の他の Pod は選択されていません。
以下の例では、EgressIP オブジェクトは 192.168.126.11 および 192.168.126.102 Egress IP アドレスを、app ラベルが web に設定されており、env ラベルが prod に設定されている namespace にある Pod に関連付けます。
EgressIP オブジェクトの例
apiVersion: k8s.ovn.org/v1
kind: EgressIP
metadata:
name: egress-group1
spec:
egressIPs:
- 192.168.126.11
- 192.168.126.102
podSelector:
matchLabels:
app: web
namespaceSelector:
matchLabels:
env: prod
以下の例では、EgressIP オブジェクトは、192.168.127.30 および 192.168.127.40 Egress IP アドレスを、environment ラベルが development に設定されていない Pod に関連付けます。
EgressIP オブジェクトの例
apiVersion: k8s.ovn.org/v1
kind: EgressIP
metadata:
name: egress-group2
spec:
egressIPs:
- 192.168.127.30
- 192.168.127.40
namespaceSelector:
matchExpressions:
- key: environment
operator: NotIn
values:
- development