第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 権限を持つユーザーとしてログインしている。

手順

  1. Operators OperatorHub を選択します。
  2. All Items の下の検索フィールドに、nmstate と入力し、Enter をクリックして Kubernetes NMState Operator を検索します。
  3. Kubernetes NMState Operator の検索結果をクリックします。
  4. Install をクリックして、Install Operator ウィンドウを開きます。
  5. Install をクリックして Operator をインストールします。
  6. Operator のインストールが完了したら、View Operator をクリックします。
  7. Provided APIsCreate Instance をクリックし、kubernetes-nmstate のインスタンスを作成するダイアログボックスを開きます。
  8. ダイアログボックスの Name フィールドで、インスタンスの名前が nmstate であることを確認します。

    注記

    名前の制限は既知の問題です。インスタンスはクラスター全体のシングルトンです。

  9. デフォルト設定を受け入れ、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 権限を持つユーザーとしてログインしている。

手順

  1. nmstate Operator namespace を作成します。

    $ cat << EOF | oc apply -f -
    apiVersion: v1
    kind: Namespace
    metadata:
      name: openshift-nmstate
    spec:
      finalizers:
      - kubernetes
    EOF
  2. 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
  3. 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
  4. 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

  5. nmstate Operator のインスタンスを作成します。

    $ cat << EOF | oc apply -f -
    apiVersion: nmstate.io/v1
    kind: NMState
    metadata:
      name: nmstate
    EOF
  6. 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 マニフェストを作成し、クラスターに適用している。

手順

  1. OpenShift Container Platform Web コンソールの Developer パースペクティブからメトリクスを表示する場合は、次のタスクを実行します。

    1. Observe をクリックします。
    2. 特定のプロジェクトのメトリクスを表示するには、Project: リストでプロジェクトを選択します。たとえば、openshift-nmstate です。
    3. Metrics タブをクリックします。
    4. プロット上のメトリクスを視覚化するには、Select query リストからクエリーを選択するか、Show PromQL を選択して、選択したクエリーに基づいてカスタム PromQL クエリーを作成します。

      注記

      Developer パースペクティブでは、1 度に 1 つのクエリーのみを実行できます。

  2. OpenShift Container Platform Web コンソールの Administrator パースペクティブからメトリクスを表示する場合は、次のタスクを実行します。

    1. Observe Metrics をクリックします。
    2. Expression フィールドに kubernetes_nmstate_features_applied と入力します。
    3. Add query をクリックし、Run queries をクリックします。
  3. 視覚化されたメトリクスを調べるには、次のいずれかのタスクを実行します。

    1. プロットを拡大して時間範囲を変更するには、次のいずれかのタスクを実行します。

      • 時間範囲を視覚的に選択するには、プロットをクリックして水平にドラッグします。
      • 時間範囲を選択するには、コンソールの左上にあるメニューを使用します。
    2. 時間の範囲をリセットするには、Reset zoom を選択します。
    3. 特定の時点におけるすべてのクエリーの出力を表示するには、その時点でプロット上にマウスカーソルを置きます。クエリー出力がポップアップボックスに表示されます。

6.1.2. 関連情報

6.1.3. 次のステップ

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.