第6章 ネットワーク Operator
6.1. Kubernetes NMState Operator
Kubernetes NMState Operator は、NMState の OpenShift Container Platform クラスターのノード間でステートドリブンのネットワーク設定を実行するための Kubernetes API を提供します。Kubernetes NMState Operator は、ユーザーに対して、クラスターノードの各種のネットワークインターフェイスタイプ、DNS、およびルーティングを設定する機能を提供します。さらに、クラスターノードのデーモンは、各ノードの API サーバーへのネットワークインターフェイスの状態の定期的な報告を行います。
Red Hat は、ベアメタル、IBM Power®、IBM Z®、IBM® LinuxONE、VMware vSphere、および Red Hat OpenStack Platform (RHOSP) インストール上の実稼働環境で Kubernetes NMState Operator をサポートしています。
Red Hat では、Microsoft Azure 上で Kubernetes NMState Operator を使用するためのサポートが提供されていますが、その機能は限られています。サポートは、インストール後のタスクとしてシステム上の DNS サーバーを設定することに限定されています。
OpenShift Container Platform で NMState を使用する前に、Kubernetes NMState Operator をインストールする必要があります。
Kubernetes NMState Operator は、セカンダリー NIC のネットワーク設定を更新します。Operator は、プライマリー NIC のネットワーク設定を更新したり、ほとんどのオンプレミスネットワーク上の br-ex
ブリッジを更新したりすることはできません。
ベアメタルプラットフォームでは、Kubernetes NMState Operator を使用して br-ex
ブリッジネットワーク設定を更新することは、マシン設定マニフェストファイルで br-ex
ブリッジをインターフェイスとして設定した場合にのみサポートされます。br-ex
ブリッジをインストール後のタスクとして更新するには、クラスターの NodeNetworkConfigurationPolicy
カスタムリソース (CR) の NMState 設定で、br-ex
ブリッジをインターフェイスとして設定する必要があります。詳細は、インストール後の設定 の カスタマイズされた br-ex ブリッジを含むマニフェストオブジェクトの作成 を参照してください。
OpenShift Container Platform は nmstate
を使用して、ノードネットワークの状態を報告し、これを設定します。これにより、たとえばすべてのノードに Linux ブリッジを作成するなど、単一の設定マニフェストをクラスターに適用して、ネットワークポリシー設定を変更できるようになります。
ノードのネットワークは、以下のオブジェクトによって監視され更新されます。
NodeNetworkState
- そのノード上のネットワークの状態を報告します。
NodeNetworkConfigurationPolicy
-
ノードで要求されるネットワーク設定を説明します。
NodeNetworkConfigurationPolicy
CR をクラスターに適用して、インターフェイスの追加および削除など、ノードネットワーク設定を更新します。 NodeNetworkConfigurationEnactment
- 各ノードに制定されたネットワークポリシーを報告します。
6.1.1. Kubernetes NMState Operator のインストール
ウェブコンソールまたは CLI を使用して、Kubernetes NMState Operator をインストールできます。
6.1.1.1. Web コンソールを使用した Kubernetes NMState Operator のインストール
Web コンソールを使用して Kubernetes NMState Operator をインストールできます。インストールが完了すると、Operator はすべてのクラスターノードに NMState State Controller をデーモンセットとしてデプロイできます。
前提条件
-
cluster-admin
権限を持つユーザーとしてログインしている。
手順
-
Operators
OperatorHub を選択します。 -
All Items の下の検索フィールドに、
nmstate
と入力し、Enter をクリックして Kubernetes NMState Operator を検索します。 - Kubernetes NMState Operator の検索結果をクリックします。
- Install をクリックして、Install Operator ウィンドウを開きます。
- Install をクリックして Operator をインストールします。
- Operator のインストールが完了したら、View Operator をクリックします。
-
Provided APIs で Create Instance をクリックし、
kubernetes-nmstate
のインスタンスを作成するダイアログボックスを開きます。 ダイアログボックスの Name フィールドで、インスタンスの名前が
nmstate
であることを確認します。注記名前の制限は既知の問題です。インスタンスはクラスター全体のシングルトンです。
- デフォルト設定を受け入れ、Create をクリックしてインスタンスを作成します。
概要
Kubernetes NMState Operator をインストールすると、Operator によって NMState State Controller がすべてのクラスターノードにデーモンセットとしてデプロイされます。
6.1.1.2. CLI を使用した Kubernetes NMState Operator のインストール
OpenShift CLI (oc)
を使用して、Kubernetes NMState Operator をインストールできます。インストールが完了すると、Operator はすべてのクラスターノードに NMState State Controller をデーモンセットとしてデプロイできます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
nmstate
Operator namespace を作成します。$ cat << EOF | oc apply -f - apiVersion: v1 kind: Namespace metadata: name: openshift-nmstate spec: finalizers: - kubernetes EOF
OperatorGroup
を作成します。$ cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-nmstate namespace: openshift-nmstate spec: targetNamespaces: - openshift-nmstate EOF
nmstate
Operator にサブスクライブします。$ cat << EOF| oc apply -f - apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: kubernetes-nmstate-operator namespace: openshift-nmstate spec: channel: stable installPlanApproval: Automatic name: kubernetes-nmstate-operator source: redhat-operators sourceNamespace: openshift-marketplace EOF
nmstate
Operator デプロイメントのClusterServiceVersion
(CSV) ステータスがSucceeded
であることを確認します。$ oc get clusterserviceversion -n openshift-nmstate \ -o custom-columns=Name:.metadata.name,Phase:.status.phase
出力例
Name Phase kubernetes-nmstate-operator.4.17.0-202210210157 Succeeded
nmstate
Operator のインスタンスを作成します。$ cat << EOF | oc apply -f - apiVersion: nmstate.io/v1 kind: NMState metadata: name: nmstate EOF
NMState Operator の Pod が稼働していることを確認します。
$ oc get pod -n openshift-nmstate
出力例
Name Ready Status Restarts Age pod/nmstate-cert-manager-5b47d8dddf-5wnb5 1/1 Running 0 77s pod/nmstate-console-plugin-d6b76c6b9-4dcwm 1/1 Running 0 77s pod/nmstate-handler-6v7rm 1/1 Running 0 77s pod/nmstate-handler-bjcxw 1/1 Running 0 77s pod/nmstate-handler-fv6m2 1/1 Running 0 77s pod/nmstate-handler-kb8j6 1/1 Running 0 77s pod/nmstate-handler-wn55p 1/1 Running 0 77s pod/nmstate-operator-f6bb869b6-v5m92 1/1 Running 0 4m51s pod/nmstate-webhook-66d6bbd84b-6n674 1/1 Running 0 77s pod/nmstate-webhook-66d6bbd84b-vlzrd 1/1 Running 0 77s
6.1.1.3. Kubernetes NMState Operator によって収集されたメトリクスの表示
Kubernetes NMState Operator である kubernetes-nmstate-operator
は、kubernetes_nmstate_features_applied
コンポーネントからメトリクスを収集し、すぐに使用できるメトリクスとして公開できます。メトリクスを表示するユースケースとして、NodeNetworkConfigurationPolicy
カスタムリソースを作成し、そのポリシーがアクティブであることを確認する状況を考えてみましょう。
kubernetes_nmstate_features_applied
メトリクスは API ではないため、OpenShift Container Platform のバージョン間で変更になる可能性があります。
Developer および Administrator パースペクティブでは、メトリクス UI には、選択したプロジェクトの定義済み CPU、メモリー、帯域幅、およびネットワークパケットクエリーがいくつか含まれています。プロジェクトの CPU、メモリー、帯域幅、ネットワークパケット、およびアプリケーションメトリクスについてカスタム Prometheus Query Language (PromQL) クエリーを実行できます。
次の例は、OpenShift Container Platform クラスターに適用される NodeNetworkConfigurationPolicy
マニフェストの例を示しています。
# ... interfaces: - name: br1 type: linux-bridge state: up ipv4: enabled: true dhcp: true dhcp-custom-hostname: foo bridge: options: stp: enabled: false port: [] # ...
NodeNetworkConfigurationPolicy
マニフェストはメトリクスを公開し、Cluster Monitoring Operator (CMO) が利用できるようにします。次の例は、公開されたメトリクスの一部を示しています。
controller_runtime_reconcile_time_seconds_bucket{controller="nodenetworkconfigurationenactment",le="0.005"} 16 controller_runtime_reconcile_time_seconds_bucket{controller="nodenetworkconfigurationenactment",le="0.01"} 16 controller_runtime_reconcile_time_seconds_bucket{controller="nodenetworkconfigurationenactment",le="0.025"} 16 ... # HELP kubernetes_nmstate_features_applied Number of nmstate features applied labeled by its name # TYPE kubernetes_nmstate_features_applied gauge kubernetes_nmstate_features_applied{name="dhcpv4-custom-hostname"} 1
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 - 管理者として Web コンソールにログインし、Kubernetes NMState Operator をインストールしている。
- 開発者として、またはメトリクスで表示しているプロジェクトの表示権限を持つユーザーとしてクラスターへのアクセスがある。
- ユーザー定義プロジェクトのモニタリングが有効化されている。
- ユーザー定義プロジェクトにサービスをデプロイしている。
-
NodeNetworkConfigurationPolicy
マニフェストを作成し、クラスターに適用している。
手順
OpenShift Container Platform Web コンソールの Developer パースペクティブからメトリクスを表示する場合は、次のタスクを実行します。
- Observe をクリックします。
-
特定のプロジェクトのメトリクスを表示するには、Project: リストでプロジェクトを選択します。たとえば、
openshift-nmstate
です。 - Metrics タブをクリックします。
プロット上のメトリクスを視覚化するには、Select query リストからクエリーを選択するか、Show PromQL を選択して、選択したクエリーに基づいてカスタム PromQL クエリーを作成します。
注記Developer パースペクティブでは、1 度に 1 つのクエリーのみを実行できます。
OpenShift Container Platform Web コンソールの Administrator パースペクティブからメトリクスを表示する場合は、次のタスクを実行します。
-
Observe
Metrics をクリックします。 -
Expression フィールドに
kubernetes_nmstate_features_applied
と入力します。 - Add query をクリックし、Run queries をクリックします。
-
Observe
視覚化されたメトリクスを調べるには、次のいずれかのタスクを実行します。
プロットを拡大して時間範囲を変更するには、次のいずれかのタスクを実行します。
- 時間範囲を視覚的に選択するには、プロットをクリックして水平にドラッグします。
- 時間範囲を選択するには、コンソールの左上にあるメニューを使用します。
- 時間の範囲をリセットするには、Reset zoom を選択します。
- 特定の時点におけるすべてのクエリーの出力を表示するには、その時点でプロット上にマウスカーソルを置きます。クエリー出力がポップアップボックスに表示されます。