Kubernetes クラスタで入力方向コントローラとして NSX Advanced Load Balancer を使用するには、NSX ALB Enterprise バージョンが必要です。または、Tanzu Kubernetes Grid クラスタの入力方向コントローラとして Contour を使用することもできます。
AKO を介して Tanzu Kubernetes Grid に統合すると、NSX ALB は次の 3 つの入力方向モードをサポートします:NodePort、ClusterIP、および NodePortLocal。要件に基づいてタイプを選択します。
NSX ALB 入力方向に NodePort モードを使用する場合は、入力方向バックエンド サービスを NodePort モードにする必要があります。このタイプでは、ネットワーク トラフィックは、クライアントから NSX ALB SE にルーティングされ、次にクラスタ ノードにルーティングされてから、ポッドに到達します。NSX ALB SE はトラフィックをノードにルーティングし、kube-proxy
はトラフィックをノードからターゲット ポッドにルーティングします。
次の図は、ネットワーク トラフィックが NodePort
モードでどのようにルーティングされるかを示しています。
NodePort モードでは、異なるクラスタ間での NSX ALB SE の共有がサポートされます。ただし、このタイプのサービスは、NodePort モードのバックエンド サービスを使用する必要があるため、クラスタ内のポートを公開できます。また、ノードからポッドにトラフィックをルーティングするために、kube-proxy
に余分なホップが必要です。
管理クラスタで NodePort 入力方向モードを構成するには、次の手順を実行します。
次のように、AKODeploymentConfig
CR オブジェクトを作成します。
apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
kind: AKODeploymentConfig
metadata:
name: install-ako-for-l7-node-port
spec:
adminCredentialRef:
name: avi-controller-credentials
namespace: tkg-system-networking
certificateAuthorityRef:
name: avi-controller-ca
namespace: tkg-system-networking
controller: 10.191.192.137
cloudName: Default-Cloud
serviceEngineGroup: Default-Group
clusterSelector:
matchLabels:
nsx-alb-node-port-l7: "true"
controlPlaneNetwork:
cidr: 10.191.192.0/20
name: VM Network
dataNetwork:
cidr: 10.191.192.0/20
name: VM Network
extraConfigs:
cniPlugin: antrea
disableStaticRouteSync: true
ingress:
defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
disableIngressClass: false # required
serviceType: NodePort # required
shardVSSize: SMALL
nodeNetworkList: # required
- networkName: VM Network
cidrs:
- 10.191.192.0/20
管理クラスタに変更を適用します。
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port.yaml
ワークロード クラスタで NodePort 入力方向モードを有効にするには、ワークロード クラスタ構成 YAML ファイルを作成し、次のフィールドを追加します。
AVI_LABELS: '{"nsx-alb-node-port-l7":"true"}'
tanzu cluster create
コマンドを使用してワークロード クラスタを展開します。
ワークロード クラスタを vSphere に展開する方法の詳細については、「ワークロード クラスタの作成」を参照してください。
NSX ALB 入力方向サービス プロバイダは、install-ako-l7-node-port
AKODeploymentConfig オブジェクトのクラスタ セレクタと一致する AVI_LABELS
を持つワークロード クラスタで NodePort モードを使用するように構成されました。
ClusterIP モードでは、ネットワーク トラフィックはクライアントから NSX ALB SE にルーティングされ、次にポッドにルーティングされます。このモードでは、入力方向バックエンド サービス タイプとして ClusterIP が必要です。NSX ALB SE は、スタティック ルートを利用してトラフィックをポッドにルーティングします。
次の図は、ネットワーク トラフィックが ClusterIP
モードでどのようにルーティングされるかを示しています。
ClusterIP モードは、SE からポッドに直接ルーティングすることで、ネットワーク トラフィックを簡素化します。このモードでは、クラスタ内のポートの公開も防止されます。ただし、このモードでは、SE をクラスタに接続する必要があるため、SE をクラスタ間で共有することはできません。
この機能を有効にするには、次の手順を実行します。
次のように、AKODeploymentConfig
CR オブジェクトを作成します。
apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
kind: AKODeploymentConfig
metadata:
name: install-ako-for-l7-cluster-ip
spec:
adminCredentialRef:
name: avi-controller-credentials
namespace: tkg-system-networking
certificateAuthorityRef:
name: avi-controller-ca
namespace: tkg-system-networking
controller: 10.191.192.137
cloudName: Default-Cloud
serviceEngineGroup: SEG-2 # must be unique, can only be used for one cluster
clusterSelector:
matchLabels:
nsx-alb-cluster-ip-l7: "true"
controlPlaneNetwork:
cidr: 10.191.192.0/20
name: VM Network
dataNetwork:
cidr: 10.191.192.0/20
name: VM Network
extraConfigs:
cniPlugin: antrea
disableStaticRouteSync: false # required
ingress:
defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
disableIngressClass: false # required
serviceType: ClusterIP # required
shardVSSize: SMALL
nodeNetworkList: # required
- networkName: VM Network
cidrs:
- 10.191.192.0/20
管理クラスタに変更を適用します。
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-cluster-ip.yaml
ワークロード クラスタで ClusterIP 入力方向モードを有効にするには、ワークロード クラスタ構成 YAML ファイルを作成し、次のフィールドを追加します。
AVI_LABELS: '{"nsx-alb-cluster-ip-l7":"true"}'
tanzu cluster create
コマンドを使用してワークロード クラスタを展開します。
ワークロード クラスタを vSphere に展開する方法の詳細については、「ワークロード クラスタの作成」を参照してください。
NSX ALB 入力方向サービス プロバイダは、install-ako-l7-cluster-ip
AKODeploymentConfig オブジェクトのクラスタ セレクタと一致する AVI_LABELS
を持つワークロード クラスタで ClusterIP モードを使用するように構成されました。
他のワークロード クラスタで ClusterIP 入力方向モードを有効にするには、Avi Controller に新しい SE を作成し、管理クラスタにファイルを適用する前に新しい SE の名前を指定する AKODeploymentConfig
オブジェクトを作成する必要があります。
Antrea を CNI として使用する場合は、NSX ALB で NodePortLocal 入力方向モードを有効にできます。Antrea の NodePortLocal 機能を利用して、SE からポッドにトラフィックを直接ルーティングします。このモードでは、ネットワーク トラフィックはクライアントから NSX ALB SE にルーティングされ、次にポッドにルーティングされます。このモードでは、入力方向バックエンド タイプとして ClusterIP が必要です。また、Tanzu Kubernetes Grid で ANTREA_NODEPORTLOCAL
構成変数を true
に設定する必要があります。Antrea の NodePortLocal 機能の詳細については、Antrea ドキュメントの「NodePortLocal (NPL)」を参照してください。
次の図は、ネットワーク トラフィックが NodePortLocal
モードでどのようにルーティングされるかを示しています。
NodePortLocal
モードは、SE からポッドに直接ルーティングすることで、ネットワーク トラフィックを簡素化します。このモードでは、クラスタの共有 SE がサポートされ、クラスタ内のポートの公開を防止します。
既存の管理クラスタで NodePortLocal 入力方向モードを構成するには、次の手順を実行します。
次のように、AKODeploymentConfig
CR オブジェクトを作成します。
apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
kind: AKODeploymentConfig
metadata:
name: install-ako-for-l7-node-port-local
spec:
adminCredentialRef:
name: avi-controller-credentials
namespace: tkg-system-networking
certificateAuthorityRef:
name: avi-controller-ca
namespace: tkg-system-networking
controller: 10.191.192.137
cloudName: Default-Cloud
serviceEngineGroup: Default-Group
clusterSelector:
matchLabels:
nsx-alb-node-port-local-l7: "true"
controlPlaneNetwork:
cidr: 10.191.192.0/20
name: VM Network
dataNetwork:
cidr: 10.191.192.0/20
name: VM Network
extraConfigs:
cniPlugin: antrea
disableStaticRouteSync: true
ingress:
defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
disableIngressClass: false # required
serviceType: NodePortLocal # required
shardVSSize: SMALL
nodeNetworkList: # required
- networkName: VM Network
cidrs:
- 10.191.192.0/20
管理クラスタに変更を適用します。
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port-local.yaml
ワークロード クラスタで NodePortLocal 入力方向モードを有効にするには、ワークロード クラスタ構成 YAML ファイルを作成し、次のフィールドを追加します。
AVI_LABELS: '{"nsx-alb-node-port-local-l7":"true"}'
ANTREA_NODEPORTLOCAL: "true"
tanzu cluster create
コマンドを使用してワークロード クラスタを展開します。
NSX ALB 入力方向サービス プロバイダは、install-ako-l7-node-port-local
AKODeploymentConfig オブジェクトのクラスタ セレクタと一致する AVI_LABELS
を持つワークロード クラスタで NodePortLocal モードを使用するように構成されました。
NSX ALB をクラスタ エンドポイント VIP プロバイダとして使用する場合は、管理クラスタで NodePort 入力方向モードのみがサポートされます。クラスタ エンドポイント VIP プロバイダとして NSX ALB を使用しない場合は、3 つの入力方向モードがすべてサポートされます。
管理クラスタで L7 入力方向を有効にするには、次の手順を実行します。
管理クラスタで AKODeploymentConfig
ファイルを編集します。
kubectl --context=MGMT-CLUSTER-CONTEXT edit adc install-ako-for-management-cluster
開いたファイルで、次の例のように spec.extraConfigs.ingress
フィールドを変更します。
extraConfigs:
cniPlugin: antrea
disableStaticRouteSync: true
ingress:
defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
disableIngressClass: false # required
serviceType: NodePort # required
shardVSSize: SMALL
nodeNetworkList: # required
- networkName: VM Network
cidrs:
- 10.191.192.0/20