第22章 Kubernetes NMState

22.1. Kubernetes NMState Operator について

Kubernetes NMState Operator は、NMState の OpenShift Container Platform クラスターのノード間でステートドリブンのネットワーク設定を実行するための Kubernetes API を提供します。Kubernetes NMState Operator は、ユーザーに対して、クラスターノードの各種のネットワークインターフェイスタイプ、DNS、およびルーティングを設定する機能を提供します。さらに、クラスターノードのデーモンは、各ノードの API サーバーへのネットワークインターフェイスの状態の定期的な報告を行います。

重要

Red Hat は、ベアメタル、IBM Power、IBM Z、および LinuxONE インストールの実稼働環境で Kubernetes NMState Operator をサポートします。

警告

OVN-Kubernetes を使用する場合は、デフォルトゲートウェイインターフェイスの変更がサポートされていません。

OpenShift Container Platform で NMState を使用する前に、Kubernetes NMState Operator をインストールする必要があります。

22.1.1. Kubernetes NMState Operator のインストール

ウェブコンソールまたは CLI を使用して、Kubernetes NMState Operator をインストールできます。

22.1.1.1. Web コンソールを使用した Kubernetes NMState Operator のインストール

Web コンソールを使用して Kubernetes NMState Operator をインストールできます。インストールが完了すると、Operator はすべてのクラスターノードに NMState State Controller をデーモンセットとしてデプロイできます。

前提条件

  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  1. OperatorsOperatorHub を選択します。
  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 をクリックしてインスタンスを作成します。

概要

完了後に、Operator はすべてのクラスターノードに NMState State Controller をデーモンセットとしてデプロイしています。

22.1.1.2. CLI を使用した Kubernetes NMState Operator のインストール

OpenShift CLI (oc) を使用して、Kubernetes NMState Operator をインストールできます。インストールが完了すると、Operator はすべてのクラスターノードに NMState State Controller をデーモンセットとしてデプロイできます。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  1. nmstateOperator namespace を作成します。

    $ cat << EOF | oc apply -f -
    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        kubernetes.io/metadata.name: openshift-nmstate
        name: openshift-nmstate
      name: openshift-nmstate
    spec:
      finalizers:
      - kubernetes
    EOF
  2. OperatorGroup を作成します。

    $ cat << EOF | oc apply -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      annotations:
        olm.providedAPIs: NMState.v1.nmstate.io
      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:
      labels:
        operators.coreos.com/kubernetes-nmstate-operator.openshift-nmstate: ""
      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 のインスタンスを作成します。

    $ cat << EOF | oc apply -f -
    apiVersion: nmstate.io/v1
    kind: NMState
    metadata:
      name: nmstate
    EOF

検証

  • nmstate Operator のデプロイメントが実行されていることを確認します。

    oc get clusterserviceversion -n openshift-nmstate \
     -o custom-columns=Name:.metadata.name,Phase:.status.phase

    出力例

    Name                                             Phase
    kubernetes-nmstate-operator.4.10.0-202203120157   Succeeded