16.8. SDN プラグイン間の移行
SDN プラグインをすでに 1 つ使用していて、別のプラグインへ切り替える場合には、以下を実行します。
-
設定ファイル内のすべての マスター と ノード で
networkPluginName
パラメーターを変更します。 すべてのマスターで API およびマスターサービスを再起動します。
# master-restart api # master-restart controllers
すべてのマスターおよびノードでノードサービスを停止します。
# systemctl stop atomic-openshift-node.service
OpenShift SDN プラグイン間の切り換えを行う場合、すべてのマスターおよびノードで OpenShift SDN を再起動します。
oc delete pod --all -n openshift-sdn
すべてのマスターおよびノードでノードサービスを再起動します。
# systemctl restart atomic-openshift-node.service
OpenShift SDN プラグインからサードパーティーのプラグインへ切り替える場合は、OpenShift SDN 固有のアーティファクトを消去します。
$ oc delete clusternetwork --all $ oc delete hostsubnets --all $ oc delete netnamespaces --all
さらに、ovs-multitenant に切り替えると、ユーザーはサービスカタログを使用してサービスをプロビジョニングできなくなります。openshift-monitoring も同様です。これを修正するには、以下のプロジェクトをグローバルにします。
$ oc adm pod-network make-projects-global kube-service-catalog $ oc adm pod-network make-projects-global openshift-monitoring
この問題は、クラスターが最初に ovs-multitenant でインストールされている場合には表示されません。これらのコマンドが Ansible Playbook の一部として実行されたためです。
ovs-subnet から ovs-multitenant OpenShift SDN プラグインに切り替えると、クラスター内の既存のすべてのプロジェクトが完全に分離します (つまり、これらに固有の VNID が割り当てられます)。クラスター管理者は、管理者 CLI を使用して プロジェクトネットワークの変更 を選択できます。
以下を実行して VNID をチェックします。
$ oc get netnamespace
16.8.1. ovs-multitenant から ovs-networkpolicy への移行
v1
NetworkPolicy 機能のみが OpenShift Container Platform で利用可能です。つまり、egress ポリシータイプ、IPBlock、および podSelector
と namespaceSelector
の組み合わせは Openshift Container Platform では使用できません。
NetworkPolicy
機能はクラスターとの通信に障害を発生させる可能性があるため、これらの機能をデフォルトの OpenShift Container Platform プロジェクトに適用しないでください。
SDN プラグインセクション間の移行 での上記の一般的なプラグインの移行に加え、ovs-multitenant プラグインから ovs-networkpolicy プラグインへの移行にはもう 1 つの追加の手順があります。すべての namespace には NetID
がなければなりません。これは、以前に プロジェクトを結合 している場合や、プロジェクトをグローバル化 している場合に、ovs-networkpolicy プラグインに切り換える前にやり直しを実行する必要があります。 そうしない場合には、NetworkPolicy オブジェクトが適切に機能しなくなる可能性があります。
ヘルパースクリプトを使うと、NetID's
の修正、以前に分離した namespace を分離するための NetworkPolicy オブジェクトの作成、および以前に結合した namespace 間の接続の有効化を実行できます。
ovs-multitenant プラグインを実行した状態でヘルパースクリプトを使用して ovs-networkpolicy プラグインを移行するには、以下の手順に従ってください。
スクリプトをダウンロードし、実行ファイルパーミッションを追加します。
$ curl -O https://raw.githubusercontent.com/openshift/origin/release-3.11/contrib/migration/migrate-network-policy.sh $ chmod a+x migrate-network-policy.sh
スクリプトを実行します (クラスター管理者ロールが必要です)。
$ ./migrate-network-policy.sh
このスクリプトを実行すると、すべての namespace が他のすべての namespace から完全に分離されるので、ovs-networkpolicy プラグインへの移行が完了するまでは、異なる namespace にある Pod 間で接続を試行してもこれに失敗します。
新たに作成した namespace に同じポリシーをデフォルトで適用したい場合には、移行スクリプトで作成した default-deny および allow-from-global-namespaces
ポリシーと一致する デフォルトの NetworkPolicy オブジェクト
が作成されるように設定します。
スクリプトが失敗するか他のエラーが発生した場合、または ovs-multitenant プラグインに戻したい場合は、移行取り消し (un-migration) スクリプト を使用します。このスクリプトは移行スクリプトが実行した変更を取り消し、以前に結合した namespace を再度結合します。