NetScalerノードコントローラーを使用したOpenShift向けOVN-CNIサポート
ノードコントローラーとルーターポッドは、OpenShift 4.xクラスターのデフォルトCNIであるOVN-Kubernetesをサポートするようになりました。OpenShiftノードとNetScaler®の間で、
ovn-k8s-mp0インターフェースを使用してVXLANオーバーレイネットワークが確立されます。
NetScaler Node Controllerは、NetScalerへのVXLANオーバーレイを構築するために、各ノードで1つのkube-cnc-routerポッドを実行します。この機能強化により、そのポッドセットは自己修復可能になります。ルーターポッドが削除されたり、単一ノードで障害が発生したりした場合(例えば、ノードネットワークの一時的な問題の後など)、Node Controllerはそのノードのポッドのみを自動的に再作成します。これは、Node Controller全体を再起動することなく、健全なノードを中断することなく行われます。各ノードは、ポッドの再作成やコントローラーの再起動後も安定したVTEP IPを維持します。さらに、この機能強化により、Kubernetesネイティブの活性プローブと準備プローブがNode Controllerとルーターポッドの両方に追加されます。詳細については、「自己修復ルーターポッドとネイティブヘルスチェック」を参照してください。
OVN-Kubernetesを使用してOpenShiftをデプロイする
前提条件
-
OVN-Kubernetes CNIを備えたOpenShift 4.xクラスター
-
すべてのクラスターノードから到達可能なNetScaler (NetScaler)
-
VTEPオーバーレイ用の専用サブネット(ポッドまたはノードCIDRと重複しないこと)
-
kubectl/ocCLI(クラスター管理者アクセス権付き)
ステップ1: 名前空間とシークレットを作成する
oc new-project netscaler
kubectl create secret generic nslogin \
--from-literal=username='<your-adc-username>' \
--from-literal=password='<your-adc-password>' \
-n netscaler
NetScalerでNSNCのシステムユーザーアカウントを作成するを参照してください
ステップ2: セキュリティコンテキスト制約を作成する(OpenShiftのみ)
ルーターポッドはOpenShiftで特権アクセスを必要とします。サービスアカウントのセキュリティコンテキスト制約(SCC)バインディングを作成します。
oc adm policy add-scc-to-user privileged system:serviceaccount:<namespace>:<service account of node controller>
<namespace>と<service account of node controller>を更新します。
ステップ3: ノードコントローラーをデプロイする
helm repo add netscaler https://netscaler.github.io/netscaler-helm-charts/
helm install nsnc netscaler/netscaler-node-controller --set license.accept=yes,nsIP=<NSIP>,vtepIP=<NetScaler SNIP>,vxlan.id=<VXLAN ID>,vxlan.port=<VXLAN PORT>,network=<IP-address-range-for-VTEP-overlay>,adcCredentialSecret=<Secret-for-NetScaler-credentials>,cniType=<CNI-overlay-name>,nsncRouterImage=<Image of nsncRouter>
| 変数 | 説明 | 例 |
|---|---|---|
nsIP |
NetScaler管理IP (NSIP/SNIP/CLIP) | - |
adcCredentialSecret |
NetScaler資格情報 (シークレット nslogin 経由) |
— |
network |
VTEPオーバーレイサブネット — ポッド/ノードCIDRと重複してはなりません | 172.16.3.0/24 |
vtepIP |
VTEPエンドポイントとして使用されるNetScaler SNIP | 10.10.10.2 |
vxlan.id |
VXLAN VNI — NetScaler上の既存のVXLANと競合してはなりません | 175 |
vxlan.port |
VXLAN UDPポート — NetScaler上の既存のVXLANと競合してはなりません | 8472 |
cniType |
OpenShift OVN-Kubernetesの場合はovnに設定します |
ovn |
nsncRouterImage |
ノードコントローラールーターイメージ | quay.io/netscaler/nsnc-router:2.0.0 |
image |
ノードコントローラーイメージ | quay.io/netscaler/netscaler-k8s-node-controller/3.0.0 |
ステップ4: デプロイの検証
ノードコントローラーポッドが実行中であることを確認します:
kubectl get pods -n netscaler
ノードごとにルーターポッドが作成されていることを確認します:
kubectl get pods -n netscaler | grep cnc-router
CNCルーターConfigMapが設定されていることを確認します:
kubectl get configmap -n netscaler -o yaml
各ノードには次のエントリが必要です:
Host-<node>, Node-<ip>, Mac-<ip>, Interface-<ip>, CNI-<ip>。
NetScalerで検証します:
show vxlan
show bridgetable
show route
show ip
期待される結果: VXLANトンネル、ノードごとのブリッジテーブルエントリ、SNIP、およびポッドネットワークルートがすべて存在します。
クリーンアップ / アンインストール
helm delete nsnc -n netscaler
制限事項
-
ノードコントローラーの削除中に、NetScalerからブリッジテーブルエントリはクリーンアップされません。(ルート、VXLAN、SNIPのみが削除されます)。