第28章 Kubernetes NMState
28.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、および OpenStack インストール上の実稼働環境で Kubernetes NMState Operator をサポートします。
OpenShift Container Platform で NMState を使用する前に、Kubernetes NMState Operator をインストールする必要があります。
Kubernetes NMState Operator は、セカンダリー NIC のネットワーク設定を更新します。プライマリー NIC または br-ex ブリッジのネットワーク設定を更新できません。
OpenShift Container Platform は nmstate を使用して、ノードネットワークの状態を報告し、これを設定します。これにより、たとえばすべてのノードに Linux ブリッジを作成するなど、単一の設定マニフェストをクラスターに適用して、ネットワークポリシー設定を変更できるようになります。
ノードのネットワークは、以下のオブジェクトによって監視され更新されます。
NodeNetworkState- そのノード上のネットワークの状態を報告します。
NodeNetworkConfigurationPolicy-
ノードで要求されるネットワーク設定について説明します。
NodeNetworkConfigurationPolicyマニフェストをクラスターに適用して、インターフェイスの追加および削除など、ノードネットワーク設定を更新します。 NodeNetworkConfigurationEnactment- 各ノードに制定されたネットワークポリシーを報告します。
28.1.1. Kubernetes NMState Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
ウェブコンソールまたは CLI を使用して、Kubernetes NMState Operator をインストールできます。
28.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 をクリックしてインスタンスを作成します。
概要
完了後に、Operator はすべてのクラスターノードに NMState State Controller をデーモンセットとしてデプロイしています。
28.1.1.2. CLI を使用した Kubernetes NMState Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift CLI (oc) を使用して、Kubernetes NMState Operator をインストールできます。インストールが完了すると、Operator はすべてのクラスターノードに NMState State Controller をデーモンセットとしてデプロイできます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。
手順
nmstateOperator namespace を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OperatorGroupを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow nmstateOperator にサブスクライブします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow nmstateOperator デプロイメントのClusterServiceVersion(CSV) ステータスがSucceededであることを確認します。oc get clusterserviceversion -n openshift-nmstate \ -o custom-columns=Name:.metadata.name,Phase:.status.phase
$ oc get clusterserviceversion -n openshift-nmstate \ -o custom-columns=Name:.metadata.name,Phase:.status.phaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Name Phase kubernetes-nmstate-operator.4.14.0-202210210157 Succeeded
Name Phase kubernetes-nmstate-operator.4.14.0-202210210157 SucceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow nmstateOperator のインスタンスを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow NMState Operator のすべての Pod が
Running状態であることを確認します。oc get pod -n openshift-nmstate
$ oc get pod -n openshift-nmstateCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Name Ready Status Restarts Age pod/nmstate-handler-wn55p 1/1 Running 0 77s pod/nmstate-operator-f6bb869b6-v5m92 1/1 Running 0 4m51s ...
Name Ready Status Restarts Age pod/nmstate-handler-wn55p 1/1 Running 0 77s pod/nmstate-operator-f6bb869b6-v5m92 1/1 Running 0 4m51s ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
28.1.2. Kubernetes NMState Operator のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
Operator Lifecycle Manager (OLM) を使用して Kubernetes NMState Operator をアンインストールできますが、設計上、OLM は関連付けられているカスタムリソース定義 (CRD)、カスタムリソース (CR)、API サービスを削除しません。
OLM が使用する Subcription リソースから Kubernetes NMState Operator をアンインストールする前に、削除する Kubernetes NMState Operator リソースを特定します。そうすることで、実行中のクラスターに影響を与えることなくリソースを削除できます。
Kubernetes NMState Operator を再インストールする必要がある場合は、「CLI を使用した Kubernetes NMState Operator のインストール」または「Web コンソールを使用した Kubernetes NMState Operator のインストール」を参照してください。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
jqCLI ツールがインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。
手順
次のコマンドを実行して、
Subcriptionリソースに対する Kubernetes NMState Operator のサブスクリプションを解除します。oc delete --namespace openshift-nmstate subscription kubernetes-nmstate-operator
$ oc delete --namespace openshift-nmstate subscription kubernetes-nmstate-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow Kubernetes NMState Operator に関連付けられている
ClusterServiceVersion(CSV) リソースを見つけます。oc get --namespace openshift-nmstate clusterserviceversion
$ oc get --namespace openshift-nmstate clusterserviceversionCopy to Clipboard Copied! Toggle word wrap Toggle overflow CSV リソースをリストする出力例
NAME DISPLAY VERSION REPLACES PHASE kubernetes-nmstate-operator.v4.18.0 Kubernetes NMState Operator 4.18.0 Succeeded
NAME DISPLAY VERSION REPLACES PHASE kubernetes-nmstate-operator.v4.18.0 Kubernetes NMState Operator 4.18.0 SucceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow CSV リソースを削除します。ファイルを削除すると、OLM は Operator 用に作成した
RBACなどの特定リソースを削除します。oc delete --namespace openshift-nmstate clusterserviceversion kubernetes-nmstate-operator.v4.18.0
$ oc delete --namespace openshift-nmstate clusterserviceversion kubernetes-nmstate-operator.v4.18.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
nmstateCR と関連するDeploymentリソースを削除します。oc -n openshift-nmstate delete nmstate nmstate
$ oc -n openshift-nmstate delete nmstate nmstateCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete --all deployments --namespace=openshift-nmstate
$ oc delete --all deployments --namespace=openshift-nmstateCopy to Clipboard Copied! Toggle word wrap Toggle overflow nmstateCR を削除した後、console.operator.openshift.io/clusterCR からnmstate-console-pluginコンソールプラグイン名を削除します。次のコマンドを実行して、有効なプラグインのリスト内に存在する
nmstate-console-pluginエントリーの位置を保存します。次のコマンドは、jqCLI ツールを使用して、エントリーのインデックスをINDEXという名前の環境変数に保存します。INDEX=$(oc get console.operator.openshift.io cluster -o json | jq -r '.spec.plugins | to_entries[] | select(.value == "nmstate-console-plugin") | .key')
INDEX=$(oc get console.operator.openshift.io cluster -o json | jq -r '.spec.plugins | to_entries[] | select(.value == "nmstate-console-plugin") | .key')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のパッチコマンドを実行して、
console.operator.openshift.io/clusterCR からnmstate-console-pluginエントリーを削除します。oc patch console.operator.openshift.io cluster --type=json -p "[{\"op\": \"remove\", \"path\": \"/spec/plugins/$INDEX\"}]"$ oc patch console.operator.openshift.io cluster --type=json -p "[{\"op\": \"remove\", \"path\": \"/spec/plugins/$INDEX\"}]"1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
INDEXは補助変数です。この変数には別の名前を指定できます。
次のコマンドを実行して、
nmstates.nmstate.ioなどのカスタムリソース定義 (CRD) をすべて削除します。oc delete crd nmstates.nmstate.io
$ oc delete crd nmstates.nmstate.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete crd nodenetworkconfigurationenactments.nmstate.io
$ oc delete crd nodenetworkconfigurationenactments.nmstate.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete crd nodenetworkstates.nmstate.io
$ oc delete crd nodenetworkstates.nmstate.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete crd nodenetworkconfigurationpolicies.nmstate.io
$ oc delete crd nodenetworkconfigurationpolicies.nmstate.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow namespace を削除します。
oc delete namespace kubernetes-nmstate
$ oc delete namespace kubernetes-nmstateCopy to Clipboard Copied! Toggle word wrap Toggle overflow