MicroShift is Technology Preview software only.
For more information about the support scope of Red Hat Technology Preview software, see Technology Preview Support Scope.ネットワーク
クラスターネットワークの設定および管理
概要
第1章 ネットワーク設定について リンクのコピーリンクがクリップボードにコピーされました!
ネットワークのカスタマイズとデフォルト設定を Red Hat build of MicroShift デプロイメントに適用する方法を学びます。各ノードは単一のマシンと単一の Red Hat build of MicroShift に含まれているため、デプロイごとに個別の構成、Pod、および設定が必要です。
クラスター管理者は、クラスターで実行されるアプリケーションを外部トラフィックに公開し、ネットワーク接続のセキュリティーを保護するための複数のオプションがあります。
- NodePort などのサービス
-
IngressやRouteなどの API リソース
デフォルトで、Kubernetes は各 Pod に、Pod 内で実行しているアプリケーションの内部 IP アドレスを割り当てます。Pod とそのコンテナーの間にはトラフィックを配置できますが、NodePort などのサービスで公開されている場合を除き、クラスター外のクライアントは Pod に直接ネットワークアクセスできません。
NodePort サービスの接続問題のトラブルシューティングを行うには、リリースノートの既知の問題を読みください。
1.1. OVN-Kubernetes ネットワークプラグインについて リンクのコピーリンクがクリップボードにコピーされました!
OVN-Kubernetes は、Red Hat build of MicroShift デプロイメントのデフォルトのネットワークソリューションです。OVN-Kubernetes は、Open Virtual Network (OVN) に基づく Pod およびサービス用の仮想化ネットワークです。OVN-Kubernetes Container Network Interface (CNI) プラグインは、クラスターのネットワークプラグインです。OVN-Kubernetes ネットワークプラグインを使用するクラスターは、ノードで Open vSwitch (OVS) も実行します。OVN は、宣言ネットワーク設定を実装するようにノードで OVS を設定します。
1.1.1. ネットワークトポロジー リンクのコピーリンクがクリップボードにコピーされました!
OVN-Kubernetes は、オーバーレイベースのネットワーク実装を提供します。このオーバーレイには、Service および NetworkPolicy の OVS ベースの実装が含まれています。オーバーレイネットワークは、Geneve (Generic Network Virtualization Encapsulation) トンネルプロトコルを使用します。Geneve トンネルの Pod 最大送信単位 (MTU) は、ホスト上の物理インターフェイスの MTU よりも小さい値に設定されます。この小さい MTU により、送信前にトンネルヘッダーに追加される必要な情報のためのスペースが確保されます。
OVS は Red Hat build of MicroShift ノードで systemd サービスとして実行します。OVS RPM パッケージは、microshift-networking RPM パッケージへの依存関係としてインストールされます。OVS は、microshift-networking RPM がインストールされるとすぐに開始します。
Red Hat build of MicroShift ネットワークトポロジー
1.1.1.1. 仮想化ネットワークの OVN 論理コンポーネントの説明 リンクのコピーリンクがクリップボードにコピーされました!
- OVN ノードスイッチ
<node-name>という名前の仮想スイッチ。OVN ノードスイッチの名前は、ノードのホスト名に基づいて付けられます。-
この例では、
node-nameはmicroshift-devです。
-
この例では、
- OVN クラスタールーター
ovn_cluster_routerという名前の仮想ルーター。分散ルーターとも呼ばれます。-
この例では、クラスターネットワークは
10.42.0.0/16です。
-
この例では、クラスターネットワークは
- OVN 参加スイッチ
-
joinという名前の仮想スイッチ。 - OVN ゲートウェイルーター
-
GR_<node-name>という名前の仮想ルーター。外部ゲートウェイルーターとも呼ばれます。 - OVN 外部スイッチ
-
ext_<node-name>という名前の仮想スイッチ。
1.1.1.2. ネットワークトポロジー図の接続の説明 リンクのコピーリンクがクリップボードにコピーされました!
-
ネットワークサービスデバイス
enp1s0と OVN 外部スイッチext_microshift-devの間の North-South トラフィックは、ゲートウェイブリッジbr-exによって OVS パッチポートを介して提供されます。 -
OVN ゲートウェイルーター
GR_microshift-devは、論理ルーターポート 4 を介して外部ネットワークスイッチext_microshift-devに接続しています。ポート 4 にはノード IP アドレス 192.168.122.14 が割り当てられます。 参加スイッチ
joinは、OVN ゲートウェイルーターGR_microshift-devを OVN クラスタールーターovn_cluster_routerに接続します。IP アドレス範囲は 100.62.0.0/16 です。-
OVN ゲートウェイルーター
GR_microshift-devは、論理ルーターポート 3 を介して OVN 参加スイッチjoinに接続します。ポート 3 は内部 IP アドレス 100.64.0.2 に接続します。 -
OVN クラスタールーター
ovn_cluster_routerは、論理ルーターポート 2 を介して 参加スイッチjoinに接続します。ポート 2 は内部 IP アドレス 100.64.0.1 に接続します。
-
OVN ゲートウェイルーター
-
OVN クラスタールーター
ovn_cluster_routerは、論理ルーターポート 1 を介してノードスイッチmicroshift-devに接続します。ポート 1 には、OVN クラスターネットワーク IP アドレス 10.42.0.1 が割り当てられます。 -
Pod とネットワークサービス間の East-West トラフィックは、OVN クラスタールーター
ovn_cluster_routerとノードスイッチmicroshift-devによって提供されます。IP アドレス範囲は 10.42.0.0/24 です。 -
Pod 間の East-West トラフィックは、ネットワークアドレス変換 (NAT) を使用せずに、ノードスイッチ
microshift-devによって提供されます。 -
Pod と外部ネットワーク間の North-South トラフィックは、OVN クラスタールーター
ovn_cluster_routerとホストネットワークによって提供されます。このルーターは、ovn-kubernetes管理ポートovn-k8s-mp0を介して、IP アドレス 10.42.0.2 で接続しています。 すべての Pod は、インターフェイスを介して OVN ノードスイッチに接続します。
-
この例では、Pod 1 と Pod 2 は、
Interface 1とInterface 2を介してノードスイッチに接続しています。
-
この例では、Pod 1 と Pod 2 は、
1.1.2. IP 転送 リンクのコピーリンクがクリップボードにコピーされました!
ホストネットワーク sysctl net.ipv4.ip_forward カーネルパラメーターは、起動時に ovnkube-master コンテナーによって自動的に有効になります。これは、着信トラフィックを CNI に転送するために必要です。たとえば、ip_forward が無効になっている場合は、クラスターの外部から NodePort サービスにアクセスすると失敗します。
1.1.3. ネットワークパフォーマンスの最適化 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、リソース消費を最小限に抑えるために、OVS サービスに 3 つのパフォーマンス最適化が適用されます。
-
ovs-vswitchd.serviceおよびovsdb-server.serviceへの CPU アフィニティー -
no-mlockallからopenvswitch.service -
ハンドラーと
revalidatorのスレッドをovs-vswitchd.serviceに限定
1.1.4. ネットワーク機能 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of MicroShift 4.13 で利用可能なネットワーク機能には、以下があります。
- Kubernetes ネットワークポリシー
- 動的ノード IP
- 指定されたホストインターフェイス上のクラスターネットワーク
Red Hat build of MicroShift 4.13 で利用できないネットワーク機能には、以下があります。
- Egress IP/ファイアウォール/QOS: 無効
- ハイブリッドネットワーク: サポートなし
- IPsec: サポートなし
- ハードウェアオフロード: サポートなし
1.1.5. Red Hat build of MicroShift ネットワーキングコンポーネントとサービス リンクのコピーリンクがクリップボードにコピーされました!
この簡単な概要では、Red Hat build of MicroShift でのネットワークコンポーネントとその操作を説明します。microshift-networking RPM は、ネットワーク関連の依存関係と systemd サービスを自動的に取り込み、ネットワークを初期化するパッケージです (microshift-ovs-init systemd サービスなど)。
- NetworkManager
-
NetworkManager は、Red Hat build of MicroShift ノードで初期ゲートウェイブリッジを設定するのに必要です。NetworkManager および
NetworkManager-ovsRPM パッケージは、必要な設定ファイルを含むmicroshift-networkingRPM パッケージへの依存関係としてインストールされます。Red Hat build of MicroShift の NetworkManager はkeyfileプラグインを使用し、microshift-networkingRPM パッケージのインストール後に再起動します。 - microshift-ovs-init
-
microshift-ovs-init.serviceは、microshift.service に依存する systemd サービスとして、microshift-networkingRPM パッケージによりインストールされます。OVS ゲートウェイブリッジを設定します。 - OVN コンテナー
2 つの OVN-Kubernetes デーモンセットが Red Hat build of MicroShift によってレンダリングおよび適用されます。
-
ovnkube-master
northd、nbdb、sbdb、およびovnkube-masterコンテナーが含まれます。 ovnkube-node ovnkube-node には、OVN-Controller コンテナーが含まれています。
Red Hat build of MicroShift の起動後、OVN-Kubernetes デーモンセットが
openshift-ovn-kubernetesnamespace にデプロイされます。
-
ovnkube-master
- パッケージ
OVN-Kubernetes マニフェストと起動ロジックは Red Hat build of MicroShift に組み込まれています。
microshift-networkingRPM に含まれる systemd サービスと設定は次のとおりです。-
NetworkManager.service の
/etc/NetworkManager/conf.d/microshift-nm.conf -
ovs-vswitchd.service の
/etc/systemd/system/ovs-vswitchd.service.d/microshift-cpuaffinity.conf -
/etc/systemd/system/ovsdb-server.service.d/microshift-cpuaffinity.conf -
microshift-ovs-init.service の
/usr/bin/configure-ovs-microshift.sh -
microshift-ovs-init.service の
/usr/bin/configure-ovs.sh -
CRI-O サービスの
/etc/crio/crio.conf.d/microshift-ovn.conf
-
NetworkManager.service の
1.1.6. ブリッジマッピング リンクのコピーリンクがクリップボードにコピーされました!
ブリッジマッピングにより、プロバイダーネットワークのトラフィックは、物理ネットワークに到達することが可能となります。トラフィックはプロバイダーネットワークから出て、br-int ブリッジに到達します。br-int と br-ex の間のパッチポートは、トラフィックがプロバイダーネットワークとエッジネットワークを通信できるようにします。Kubernetes Pod は、仮想イーサネットペアを介して br-int ブリッジに接続されます。仮想イーサネットペアの一端は Pod の namespace に接続され、他端は br-int ブリッジに接続されます。
1.1.6.1. プライマリーゲートウェイインターフェイス リンクのコピーリンクがクリップボードにコピーされました!
ovn.yaml 設定ファイルで、目的のホストインターフェイス名を gatewayInterface として指定できます。指定されたインターフェイスは、CNI ネットワークのゲートウェイブリッジとして機能する OVS ブリッジ br-ex に追加されます。
1.2. OVN-Kubernetes 設定ファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
OVN-Kubernetes 設定ファイルが作成されていないと、Red Hat build of MicroShift は組み込みのデフォルト OVN-Kubernetes 値を使用します。OVN-Kubernetes 設定ファイルを /etc/microshift/ovn.yaml に書き込むことができます。設定用のサンプルファイルが提供されています。
手順
ovn.yamlファイルを作成するには、次のコマンドを実行します。$ sudo cp /etc/microshift/ovn.yaml.default /etc/microshift/ovn.yaml
$ sudo cp /etc/microshift/ovn.yaml.default /etc/microshift/ovn.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 作成した設定ファイルの内容を一覧表示するには、次のコマンドを実行します。
$ cat /etc/microshift/ovn.yaml.default
$ cat /etc/microshift/ovn.yaml.defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルト値を含む yaml 設定ファイルの例
ovsInit: disableOVSInit: false gatewayInterface: "" mtu: 1400
ovsInit: disableOVSInit: false gatewayInterface: ""1 mtu: 1400Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- デフォルト値は、未指定を意味する空の文字列です。CNI ネットワークプラグインは、デフォルトの経路とのインターフェイスを自動検出します。
設定をカスタマイズするには、使用できる有効な値を一覧表示した次の表を使用します。
Expand 表1.1 サポート対象の Red Hat build of MicroShift の OVN-Kubernetes 設定 (任意) フィールド 型 デフォルト 説明 例 ovsInit.disableOVSInitbool
false
microshift-ovs-init.serviceにおける OVS ブリッジのbr-ex設定をスキップしますtrue [1]
ovsInit.gatewayInterfaceAlpha
eth0
API ゲートウェイである Ingress
eth0
mtu
uint32
auto
Pod に使用される MTU 値
1300
OVS ブリッジが必要です。
disableOVSInitが true の場合は、OVS ブリッジbr-exを手動で設定する必要があります。重要ovn.yamlファイルのmtu設定値を変更した場合に、更新された設定を適用するには、Red Hat build of MicroShift が実行しているホストを再起動する必要があります。
カスタム ovn.yaml 設定ファイルの例
ovsInit: disableOVSInit: true gatewayInterface: eth0 mtu: 1300
ovsInit:
disableOVSInit: true
gatewayInterface: eth0
mtu: 1300
ovn.yaml 設定ファイルで disableOVSInit が true に設定されている場合は、br-ex OVS ブリッジを手動で設定する必要があります。
1.3. ovnkube-master Pod の再起動 リンクのコピーリンクがクリップボードにコピーされました!
次の手順で ovnkube-master Pod を再起動します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - インフラストラクチャーにインストールされたクラスターが OVN-Kubernetes ネットワークプラグインで設定されている。
- KUBECONFIG 環境変数が設定されている。
手順
次の手順を使用して、ovnkube-master Pod を再起動します。
次のコマンドを実行して、リモートクラスターにアクセスします。
export KUBECONFIG=$PWD/kubeconfig
$ export KUBECONFIG=$PWD/kubeconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、再起動する
ovnkube-masterPod の名前を見つけます。pod=$(oc get pods -n openshift-ovn-kubernetes | awk -F " " '/ovnkube-master/{print $1}')$ pod=$(oc get pods -n openshift-ovn-kubernetes | awk -F " " '/ovnkube-master/{print $1}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
ovnkube-masterPod を削除します。oc -n openshift-ovn-kubernetes delete pod $pod
$ oc -n openshift-ovn-kubernetes delete pod $podCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、新しい
ovnkube-masterPod が実行されていることを確認します。oc get pods -n openshift-ovn-kubernetes
$ oc get pods -n openshift-ovn-kubernetesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 実行中の Pod のリストには、新しい
ovnkube-masterPod の名前と経過時間が表示されます。
1.4. HTTP(S) プロキシーの背後への Red Hat build of MicroShift のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
基本的な匿名性とセキュリティー対策を Pod に追加する場合は、HTTP(S) プロキシーの背後に Red Hat build of MicroShift クラスターをデプロイします。
プロキシーの背後に Red Hat build of MicroShift をデプロイする場合は、HTTP(S) 要求を開始するすべてのコンポーネントでプロキシーサービスを使用するように、ホストオペレーティングシステムを設定する必要があります。
クラウドサービスへのアクセスなど、Egress トラフィックを伴うユーザー固有のワークロードまたは Pod はすべて、プロキシーを使用するように設定する必要があります。Red Hat build of MicroShift には、出力トラフィックの透過的なプロキシー機能が組み込まれていません。
1.5. RPM-OStree HTTP(S) プロキシーの使用 リンクのコピーリンクがクリップボードにコピーされました!
RPM-OStree で HTTP(S) プロキシーを使用するには、rpm-ostree サービスの http_proxy-ostreed 変数を設定します。
手順
次のコマンドを実行して、この設定を
/etc/systemd/system/rpm-ostreed.service.d/00-proxy.confファイルに追加します。Environment="http_proxy=http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/"
Environment="http_proxy=http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次に、設定をリロードして、サービスを再起動して変更を適用します。
次のコマンドを実行して、設定をリロードします。
sudo systemctl daemon-reload
$ sudo systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、rpm-ostree サービスを再起動します。
sudo systemctl restart rpm-ostreed.service
$ sudo systemctl restart rpm-ostreed.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6. CRI-O コンテナーランタイムでのプロキシーの使用 リンクのコピーリンクがクリップボードにコピーされました!
CRI-O で HTTP(S) プロキシーを使用するには、HTTP_PROXY および HTTPS_PROXY 環境変数を設定する必要があります。NO_PROXY 変数を設定して、ホストのリストをプロキシーから除外することもできます。
手順
次の設定を
/etc/systemd/system/crio.service.d/00-proxy.confファイルに追加します。Environment=NO_PROXY="localhost,127.0.0.1" Environment=HTTP_PROXY="http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/" Environment=HTTPS_PROXY="http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/"
Environment=NO_PROXY="localhost,127.0.0.1" Environment=HTTP_PROXY="http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/" Environment=HTTPS_PROXY="http://$PROXY_USER:$PROXY_PASSWORD@$PROXY_SERVER:$PROXY_PORT/"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定を再読み込みします。
sudo systemctl daemon-reload
$ sudo systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow CRI-O サービスを再起動して設定を適用します。
sudo systemctl restart crio
$ sudo systemctl restart crioCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. 実行中のクラスターからの OVS インターフェイスのスナップショット取得 リンクのコピーリンクがクリップボードにコピーされました!
スナップショットは、特定の時点における OVS インターフェイスの状態とデータを表します。
手順
- 実行中の Red Hat build of MicroShift クラスターから OVS インターフェイスのスナップショットを表示するには、次のコマンドを使用します。
sudo ovs-vsctl show
$ sudo ovs-vsctl show
実行中のクラスターでの OVS インターフェイスの例
- 1 2
patch-br-ex_localhost.localdomain-to-br-intとpatch-br-int-to-br-ex_localhost.localdomainは、br-exとbr-intを接続する OVS パッチポートです。- 3 4 5
- Pod インターフェイス
eebee1ce5568761、b47b1995ada84f4、および3031f43d67c167fは、Pod サンドボックス ID の最初の 15 ビットで名前が付けられ、br-intブリッジにプラグインされます。 - 6
- ヘアピントラフィック用の OVS 内部ポート
ovn-k8s-mp0は、ovnkube-masterコンテナーによって作成されます。
1.8. ワークロードのロードバランサーのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of MicroShift は、ネットワークロードバランサーの組み込み実装を提供します。次の手順例では、ノード IP アドレスを LoadBalancer サービス設定ファイルの外部 IP アドレスとして使用します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 - クラスター管理者のロールを持つユーザーとしてクラスターにアクセスできます。
- OVN-Kubernetes ネットワークプラグインで設定されたインフラストラクチャーにクラスターがインストールされている。
-
KUBECONFIG環境変数が設定されている。
手順
次のコマンドを実行して、Pod が実行していることを確認します。
oc get pods -A
$ oc get pods -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、サンプルの名前空間を作成します。
NAMESPACE=nginx-lb-test
$ NAMESPACE=nginx-lb-testCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc create ns $NAMESPACE
$ oc create ns $NAMESPACECopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例では、テスト
nginxアプリケーションの 3 つのレプリカを名前空間にデプロイします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行すると、3 つのサンプルレプリカが正常に開始したことを確認できます。
oc get pods -n $NAMESPACE
$ oc get pods -n $NAMESPACECopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のサンプルコマンドを使用して、
nginxテストアプリケーションのLoadBalancerサービスを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記portパラメーターが、他のLoadBalancerサービスまたは Red Hat build of MicroShift コンポーネントによって占有されていないホストポートであることを確認する必要があります。サービスファイルが存在し、外部 IP アドレスが適切に割り当てられていること、および外部 IP がノード IP と同一であることを確認するには、次のコマンドを実行します。
oc get svc -n $NAMESPACE
$ oc get svc -n $NAMESPACECopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx LoadBalancer 10.43.183.104 192.168.1.241 81:32434/TCP 2m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx LoadBalancer 10.43.183.104 192.168.1.241 81:32434/TCP 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドは、
LoadBalancerサービス設定の外部 IP アドレスを使用して、例のnginxアプリケーションへの 5 つの接続を形成します。コマンドの結果は、それらのサーバー IP アドレスのリストです。次のコマンドを使用して、ロードバランサーが実行中のすべてのアプリケーションにリクエストを送信していることを確認します。EXTERNAL_IP=192.168.1.241 seq 5 | xargs -Iz curl -s -I http://$EXTERNAL_IP:81 | grep X-Server-IP
EXTERNAL_IP=192.168.1.241 seq 5 | xargs -Iz curl -s -I http://$EXTERNAL_IP:81 | grep X-Server-IPCopy to Clipboard Copied! Toggle word wrap Toggle overflow ロードバランサーがトラフィックをアプリケーションに正常に分散している場合、前のコマンドの出力には異なる IP アドレスが含まれます。次に例を示します。
出力例
X-Server-IP: 10.42.0.41 X-Server-IP: 10.42.0.41 X-Server-IP: 10.42.0.43 X-Server-IP: 10.42.0.41 X-Server-IP: 10.42.0.43
X-Server-IP: 10.42.0.41 X-Server-IP: 10.42.0.41 X-Server-IP: 10.42.0.43 X-Server-IP: 10.42.0.41 X-Server-IP: 10.42.0.43Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.9. 特定のホストインターフェイス上の NodePort サービスへの外部アクセスをブロックする リンクのコピーリンクがクリップボードにコピーされました!
OVN-Kubernetes は、Red Hat build of MicroShift ノードの外部から NodePort サービスにアクセスできるホストインターフェイスを制限しません。次の手順では、特定のホストインターフェイスで NodePort サービスをブロックし、外部アクセスを制限する方法を説明します。
前提条件
- root 権限を持つアカウントが必要です。
手順
次のコマンドを実行して、
NODEPORT変数を Kubernetes NodePort サービスに割り当てられたホストポート番号に変更します。export NODEPORT=30700
# export NODEPORT=30700Copy to Clipboard Copied! Toggle word wrap Toggle overflow INTERFACE_IP値を、ブロックするホストインターフェイスの IP アドレスに変更します。以下に例を示します。export INTERFACE_IP=192.168.150.33
# export INTERFACE_IP=192.168.150.33Copy to Clipboard Copied! Toggle word wrap Toggle overflow natテーブル PREROUTING チェーンに新しいルールを挿入して、宛先ポートと IP アドレスに一致するすべてのパケットをドロップします。以下に例を示します。sudo nft -a insert rule ip nat PREROUTING tcp dport $NODEPORT ip daddr $INTERFACE_IP drop
$ sudo nft -a insert rule ip nat PREROUTING tcp dport $NODEPORT ip daddr $INTERFACE_IP dropCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、新しいルールをリスト表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記新しく追加したルールの
handle番号をメモします。次の手順でhandle番号を削除する必要があります次のサンプルコマンドを使用してカスタムルールを削除します。
sudo nft -a delete rule ip nat PREROUTING handle 134
$ sudo nft -a delete rule ip nat PREROUTING handle 134Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.10. マルチキャスト DNS プロトコル リンクのコピーリンクがクリップボードにコピーされました!
マルチキャスト DNS プロトコル (mDNS) を使用することで、5353/UDP ポートで公開されているマルチキャストを使用した、ローカルエリアネットワーク (LAN) 内で名前解決とサービス検出が可能になります。
Red Hat build of MicroShift には、権威 DNS サーバーを Red Hat build of MicroShift のサービスに対してクライアントを参照するように再設定できないデプロイメントシナリオ向けに、埋め込みの mDNS サーバーが含まれています。埋め込みの DNS サーバーにより、Red Hat build of MicroShift によって公開された .local ドメインが LAN 上の他の要素によって検出されるようになります。
第2章 ファイアウォールの使用 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of MicroShift ではファイアウォールは必要ありませんが、ファイアウォールを使用すると、Red Hat build of MicroShift への望ましくないアクセスを防ぐことができます。
2.1. ファイアウォールを通過するネットワークトラフィックについて リンクのコピーリンクがクリップボードにコピーされました!
Firewalld は、バックグラウンドで実行され、接続要求に応答して、動的にカスタマイズ可能なホストベースのファイアウォールを作成するネットワークサービスです。Red Hat build of MicroShift で Red Hat Enterprise Linux (RHEL) for Edge を使用している場合は、firewalld がすでにインストールされているはずなので、それを設定するだけで済みます。詳細は、次の手順で説明します。全体として、firewalld サービスの実行中に次の OVN-Kubernetes トラフィックを明示的に許可する必要があります。
- CNI Pod から CNI Pod へ
- CNI Pod からホストネットワーク Pod/ホストネットワーク Pod からホストネットワーク Pod
- CNI Pod
- CNI ネットワークを使用する Kubernetes Pod
- ホストネットワーク Pod
-
ホストネットワークを使用する Kubernetes Pod 次の手順を使用して、
firewalldサービスを設定できます。ほとんどの場合、firewalld は {rhel} インストールの一部です。firewalld をお持ちでない場合は、このセクションの簡単な手順でインストールできます。
Red Hat build of MicroShift Pod は、内部 CoreDNS コンポーネントおよび API サーバーにアクセスできる必要があります。
2.2. firewalld サービスのインストール リンクのコピーリンクがクリップボードにコピーされました!
RHEL for Edge を使用している場合は、firewalld をインストールする必要があります。サービスを使用するには、設定を行うだけです。firewalld がない場合で、firewalld を使用したい場合は、次の手順を使用できます。
次の手順を使用して、Red Hat build of MicroShift の firewalld サービスをインストールして実行します。
手順
オプション:以下のコマンドを実行して、システムで firewalld を確認します。
rpm -q firewalld
$ rpm -q firewalldCopy to Clipboard Copied! Toggle word wrap Toggle overflow firewalldサービスがインストールされていない場合は、次のコマンドを実行します。sudo dnf install -y firewalld
$ sudo dnf install -y firewalldCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイアウォールを開始するには、次のコマンドを実行します。
sudo systemctl enable firewalld --now
$ sudo systemctl enable firewalld --nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 必要なファイアウォール設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスターネットワークの IP アドレス範囲は、ファイアウォールの設定時に有効にする必要があります。デフォルト値を使用するか、IP アドレス範囲をカスタマイズできます。デフォルトの 10.42.0.0/16 設定からクラスターネットワークの IP アドレス範囲をカスタマイズする場合は、ファイアウォール設定でも同じカスタム範囲を使用する必要があります。
| IP 範囲 | ファイアウォールルールが必要 | 説明 |
|---|---|---|
| 10.42.0.0/16 | いいえ | 他の Pod へのホストネットワーク Pod アクセス |
| 169.254.169.1 | はい | Red Hat build of MicroShift API サーバーへのホストネットワーク Pod アクセス |
ファイアウォール構成に必須の設定コマンドの例を次に示します。
コマンドの例
他の Pod へのホストネットワーク Pod アクセスを設定します。
sudo firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16
$ sudo firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat build of MicroShift API などのホストエンドポイントによってバックアップされたサービスへのホストネットワーク Pod アクセスを設定します。
sudo firewall-cmd --permanent --zone=trusted --add-source=169.254.169.1
$ sudo firewall-cmd --permanent --zone=trusted --add-source=169.254.169.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. オプションのポート設定の使用 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of MicroShift ファイアウォールサービスでは、オプションのポート設定が可能です。
手順
カスタマイズされたポートをファイアウォール設定に追加するには、次のコマンド構文を使用します。
sudo firewall-cmd --permanent --zone=public --add-port=<port number>/<port protocol>
$ sudo firewall-cmd --permanent --zone=public --add-port=<port number>/<port protocol>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表2.2 オプションのポート ポート プロトコル 説明 80
TCP
OpenShift Container Platform ルーターを介してアプリケーションを提供するために使用される HTTP ポート。
443
TCP
OpenShift Container Platform ルーターを介してアプリケーションを提供するために使用される HTTPS ポート。
5353
UDP
OpenShift Container Platform ルート mDNS ホストに応答する mDNS サービス。
30000-32767
TCP
NodePort サービス用に予約されたポート範囲。LAN 上のアプリケーションを公開するために使用できます。
30000-32767
UDP
NodePort サービス用に予約されたポート範囲。LAN 上のアプリケーションを公開するために使用できます。
6443
TCP
Red Hat build of MicroShift API の HTTPS API ポート。
以下は、API サーバーのポート 6443 など、Red Hat build of MicroShift で実行しているサービスへのファイアウォールを介した外部アクセスを必要とする場合に使用されるコマンドの例です。たとえば、ルーターを介して公開されるアプリケーションのポート 80 および 443 です。
コマンドの例
Red Hat build of MicroShift API サーバーのポートの設定:
sudo firewall-cmd --permanent --zone=public --add-port=6443/tcp
$ sudo firewall-cmd --permanent --zone=public --add-port=6443/tcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow ルーター経由で公開されるアプリケーションのポートの設定:
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
$ sudo firewall-cmd --permanent --zone=public --add-port=80/tcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
$ sudo firewall-cmd --permanent --zone=public --add-port=443/tcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. ファイアウォールを介したネットワークトラフィックを許可します リンクのコピーリンクがクリップボードにコピーされました!
IP アドレス範囲を設定し、Pod からネットワークゲートウェイを通過する内部トラフィックを許可する DNS サーバーを挿入することで、ファイアウォールを通過するネットワークトラフィックを許可できます。
手順
次のコマンドのいずれかを使用して、IP アドレス範囲を設定します。
次のコマンドを実行して、IP アドレス範囲をデフォルト値で設定します。
sudo firewall-offline-cmd --permanent --zone=trusted --add-source=10.42.0.0/16
$ sudo firewall-offline-cmd --permanent --zone=trusted --add-source=10.42.0.0/16Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、カスタム値を使用して IP アドレス範囲を設定します。
sudo firewall-offline-cmd --permanent --zone=trusted --add-source=<custom IP range>
$ sudo firewall-offline-cmd --permanent --zone=trusted --add-source=<custom IP range>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Pod からの内部トラフィックがネットワークゲートウェイを通過できるようにするには、次のコマンドを実行します。
sudo firewall-offline-cmd --permanent --zone=trusted --add-source=169.254.169.1
$ sudo firewall-offline-cmd --permanent --zone=trusted --add-source=169.254.169.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.1. ファイアウォール設定の適用 リンクのコピーリンクがクリップボードにコピーされました!
ファイアウォール設定を適用するには、ステップ 1 だけからなる以下の手順を使用します。
手順
- ファイアウォールを介したネットワークアクセスの設定が完了したら、次のコマンドを実行してファイアウォールを再起動し、設定を適用します。
sudo firewall-cmd --reload
$ sudo firewall-cmd --reload
2.6. ファイアウォール設定の確認 リンクのコピーリンクがクリップボードにコピーされました!
ファイアウォールを再起動したら、設定を一覧表示して確認できます。
手順
ポート関連のルールなど、デフォルトのパブリックゾーンに追加されたルールを確認するには、次のコマンドを実行します。
sudo firewall-cmd --list-all
$ sudo firewall-cmd --list-allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 信頼されたゾーンに追加されたルール (IP 範囲関連のルールなど) を確認するには、次のコマンドを実行します。
sudo firewall-cmd --zone=trusted --list-all
$ sudo firewall-cmd --zone=trusted --list-allCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7. 既知のファイアウォールの問題 リンクのコピーリンクがクリップボードにコピーされました!
-
ファイアウォールのリロードまたは再起動でトラフィックフローが中断されないようにするには、Red Hat build of MicroShift を開始する前にファイアウォールコマンドを実行します。Red Hat build of MicroShift の CNI ドライバーは、NodePort サービスを使用するトラフィックフローなど、一部のトラフィックフローに対して iptable ルールを使用します。iptable ルールは CNI ドライバーによって生成および挿入されますが、ファイアウォールのリロードまたは再起動時に削除されます。iptable ルールがないと、トラフィックフローが中断されます。Red Hat build of MicroShift の実行後にファイアウォールコマンドを実行する必要がある場合は、
openshift-ovn-kubernetesnamespace でovnkube-masterPod を手動で再起動して、CNI ドライバーによって制御されるルールをリセットします。