LoadBalancer タイプのサービスを公開する
LoadBalancer タイプのサービスの概要
Kubernetes 環境では、マイクロサービスは動的に作成および破棄される一連の Pod としてデプロイされます。マイクロサービスを参照する Pod のセットは常に変化しているため、Kubernetes は service と呼ばれる論理的な抽象化を提供して、一連の Pod で実行されているマイクロサービスを公開します。サービスは、ポッドの論理セットと、それらにアクセスするためのポリシーを定義します。
LoadBalancer タイプのサービスは、Kubernetes クラスター内のマイクロサービスを外部に公開する最も簡単な方法です。LoadBalancer タイプのサービスは、AWS、GCP、Azure などのパブリッククラウド上の Kubernetes 展開でネイティブにサポートされます。クラウド展開では、LoadBalancer タイプのサービスを作成すると、クラウドマネージドロードバランサーがサービスに割り当てられます。その後、ロードバランサーを使用してサービスが公開されます。
Citrix LoadBalancer タイプのサービス向けソリューション
Kubernetes クラスターをパブリッククラウドにデプロイするのではなく、ベアメタルまたはオンプレミスに Kubernetes クラスターをデプロイしたい場合がいくつかあります。ベアメタル Kubernetes クラスターでアプリケーションを実行している場合、Ingressを使用するよりも、TCP または UDP トラフィックのルーティングがタイプLoadBalancer
のサービスを使用する方がはるかに簡単です。HTTP トラフィックの場合でも、Ingress よりも便利な場合があります。ただし、ベアメタル Kubernetes クラスタではネイティブに利用できるロードバランサの実装はありません。NetScalerには、NetScaler Ingress Controller とNetScalerを使用してこのようなサービスの負荷分散を行う方法が用意されています。
Citrix のタイプLoadBalancer
のサービス向けソリューションでは 、Kubernetesクラスター内に展開されたNetScaler Ingress Controllerが、受信トラフィックの負荷分散を行うようにクラスターの外部に展開されたNetScalerを構成します。Citrix ソリューションを使用すると、展開がベアメタル、オンプレミス、パブリッククラウドのいずれであっても、Kubernetes クラスターへの着信トラフィックの負荷を分散できます。NetScaler Ingress Controllerは、NetScalerのマルチテナントを可能にする柔軟なIPアドレス管理を提供するため、1つのNetScalerを使用して複数のサービスの負荷分散やIngress機能の実行を行うことができます。したがって、ロードバランサーリソースの使用率を最大化し、運用コストを大幅に削減できます。
ロードバランサーと Kubernetes Ingress タイプのサービス
次の表は、Kubernetes Ingress と LoadBalancer タイプのサービスの比較をまとめたもので、要件に基づいて適切なオプションを選択するのに役立ちます。
サービスの種類 LoadBalancer
|
イングレス |
---|---|
サービスをよりシンプルかつ迅速に公開する方法です。必要なのは、 サービス定義でサービスタイプをtype=LoadBalancer として指定することだけです。 |
Ingress は高度な機能を提供しますが、実装にはさらに多くの手順が必要です。サービス定義に加えて Ingress オブジェクトを記述する必要があります。また、Ingressを定義する際に間違いを犯す可能性が高くなります。 |
サービスごとに個別の IP アドレスが必要です。 | 1 つの IP アドレスを使用して複数のサービスを公開する方法を提供します。 |
HTTP、TCP、UDP のいずれであっても、指定されたポートに着信するすべての種類のトラフィックをサービスに転送します。高度なルーティングを実行するためのフィルタリングやオプションはありません。 | LoadBalancer タイプのサービスに比べて機能が豊富でパワフル。Ingress には複数のルーティングオプションがあります。たとえば、Ingress を使用すると、バックエンドサービスへのパスベースおよびサブドメインベースのルーティングを実行できます。 |
LoadBalancer タイプのサービス向けCitrix ソリューションはベアメタルクラスターでどのように機能しますか
デフォルトでは、タイプLoadBalancer
のサービスは、ベアメタル Kubernetes クラスター内のサービスの NodePorts を公開するだけです。外部ロードバランサーは設定されません。
NetScalerは、IP管理と外部ロードバランサー構成の両方を提供することにより、ベアメタルKubernetesクラスター内のタイプLoadBalancer
のサービス向けのエンドツーエンドソリューションを提供します。Citrix のソリューションでは、タイプLoadBalancer
のサービスがベアメタルクラスターで作成されると、NetScaler Ingress ControllerはKubernetesクラスター(Tier-1)の外にあるNetScalerを負荷分散仮想サーバーで構成します。負荷分散仮想サーバーは、CitrixのIPAMコントローラーによって自動的に割り当てられるか、またはサービス定義でspec.loadBalancerIP
フィールドを使用して手動で指定されたIPアドレスで構成されます 。サービスに IP アドレスを設定すると、設定された IP アドレスを使用してサービスに外部からアクセスできます。
IPAMコントローラーを使用した IP アドレス管理
IPAMコントローラーは、NetScalerがIPアドレス管理用に提供するコンテナーで、Kubernetesクラスター内のポッドであるNetScalerIngress Controller と並行して実行されます。LoadBalancerタイプのサービスの場合、IPAMコントローラーを使用して、指定した IP アドレス範囲のサービスに IP アドレスを自動的に割り当てることができます。この IP アドレス範囲は、YAML を使用して IPAMコントローラーをデプロイするときに YAML ファイルで指定できます。NetScaler Ingress Controller は、サービスに割り当てられたIPアドレスを、NetScaler MPXまたはVPXの仮想IPアドレス(VIP)として構成します。 この IP アドレスを使用すると、サービスに外部からアクセスできます。
IPAMコントローラーには、 NetScalerが提供するVIPカスタムリソース定義 (CRD)が必要です。VIP CRD には、サービス名、名前空間、IP アドレスのフィールドが含まれています。VIP CRDは、NetScalerイングレスコントローラーとIPAMコントローラー間の内部通信に使用されます。
次の図は、IPAMコントローラーを使用してサービスに IP アドレスを割り当てる、サービスタイプのロードバランサの展開を示しています。
新しいタイプLoadbalancer
のサービスが作成されると、次のイベントが発生します。
- NetScaler Ingress Controllerは、サービスの
loadBalancerIP
フィールドが空になると必ずサービスのVIP CRDオブジェクトを作成します。 - IPAMコントローラーは VIP CRD オブジェクトに IP アドレスを割り当てます。
- VIP CRDオブジェクトがIPアドレスで更新されると、NetScaler Ingress Controllerが自動的にNetScalerを構成します。
注:
Citrix が提供するカスタムリソース定義(CRD)は、 次の種類
LoadBalancer
のサービスもサポートしています。つまり、CRD オブジェクトを作成して CRD をサービスに適用するときに、タイプLoadBalancer
のサービスをサービス名として指定できます。
IPAMコントローラーソリューションは、 Infobloxなどの ExternalDNS プロバイダーとソリューションを簡単に統合できるように設計されています。ExternalDNS の詳細については、「 ExternalDNS との相互運用性」を参照してください。
IPAMコントローラーによって割り当てられた IP アドレスで LoadBalancer タイプのサービスを公開する
このトピックでは、IPAMコントローラーによって割り当てられた IP アドレスで LoadBalancer タイプのサービスを公開する方法について説明します。
IPAMコントローラーからの IP アドレスを持つロードバランサタイプのサービスを公開するには、次の手順を実行します。
- VIP CRD を展開する
- NetScaler Ingress Controllerの展開
- IPAMコントローラーを展開します。
- サンプルアプリケーションを展開します。
- アプリケーションを公開するタイプ
LoadBalancer
のサービスを作成します。 - サービスにアクセスします。
ステップ 1: VIP CRD を展開する
次の手順を実行して、NetScaler IngressコントローラーとIPAMコントローラー間の通信を可能にするNetScaler VIP CRDを展開します。
kubectl create -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/crd/vip/vip.yaml
VIP CRD の詳細については、 VIP カスタムリソース定義を参照してください。
ステップ2: NetScalerIngress Controller をデプロイする
次の手順を実行して、IPAMコントローラー引数を使用してNetScaler Ingress Controller をデプロイします。
-
次のコマンドを使用して、
citrix-k8s-ingress-controller.yaml
をダウンロードします。wget https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/baremetal/citrix-k8s-ingress-controller.yaml
-
NetScalerIngress Controller YAMLファイルを編集します。
-
要件に応じて、環境変数の値を指定します。環境変数の指定の詳細については、「 Deploy NetScaler Ingress Controller」を参照してください。
-
次を使用して IPAMコントローラーを引数として指定します。
args: - --ipam citrix-ipam-controller
IPAMコントローラー引数を含むNetScalerIngress Controller YAMLファイルのサンプルを以下に示します。
注:
この YAML はデモンストレーションのみを目的としており、フルバージョンではありません。常に最新バージョンの YAML を使用し、必要に応じて編集してください。
apiVersion: v1 kind: Pod metadata: name: cic-k8s-ingress-controller labels: app: cic-k8s-ingress-controller spec: serviceAccountName: cic-k8s-role containers: - name: cic-k8s-ingress-controller image: "quay.io/citrix/citrix-k8s-ingress-controller:1.34.16" env: # Set NetScaler NSIP/SNIP, SNIP in case of HA (mgmt has to be enabled) - name: "NS_IP" value: "x.x.x.x" # Set the username - name: "NS_USER" valueFrom: secretKeyRef: name: nslogin key: username # Set user password - name: "NS_PASSWORD" valueFrom: secretKeyRef: name: nslogin key: password # Set log level - name: "EULA" value: "yes" args: - --ingress-classes citrix - --feature-node-watch false - --ipam citrix-ipam-controller imagePullPolicy: Always
-
-
次のコマンドを使用して、編集したYAMLファイルを使用してNetScaler Ingress Controller をデプロイします。
kubectl create -f citrix-k8s-ingress-controller.yaml
NetScalerイングレスコントローラーを展開する方法の詳細については、「NetScalerIngress Controller デプロイ」を参照してください。
ステップ 3: IP アドレス管理コントローラの展開
IPAMコントローラーを展開するには、次の手順を実行します。
-
citrix-ipam-controller.yaml ファイルをダウンロードします。
マニフェストには、
VIP_RANGE
とVIP_NAMESPACES
の 2 つの環境変数が含まれています 。VIP_RANGE
で有効な CIDR を使用して、適切なルーティング可能な IP 範囲を指定できます。必要に応じて、IPアドレス管理コントローラが特定の名前空間のサービスに対してのみアドレスを割り当てるように、VIP_NAMESPACES
で一連の名前空間を指定することもできます。詳細については、「 VIP_RANGE 」と「 VIP_NAMESPACES」を参照してください。
-
次のコマンドを使用して IPAMコントローラーを展開します。
kubectl create -f citrix-ipam-controller.yaml
ステップ 4: サンプルアプリケーションをデプロイする
Kubernetesクラスタにapache
アプリケーションをデプロイするには、次の手順を実行します。
注:
この例では、
apache
アプリケーションが使用されています。任意のサンプルアプリケーションをデプロイできます。
-
以下の設定で、
apache-deployment.yaml
という名前のファイルを作成します。apiVersion: apps/v1 kind: Deployment metadata: name: apache labels: name: apache spec: selector: matchLabels: app: apache replicas: 8 template: metadata: labels: app: apache spec: containers: - name: apache image: httpd:latest ports: - name: http containerPort: 80 imagePullPolicy: IfNotPresent
-
以下のコマンドを使用して、
apache
アプリケーションをデプロイします。kubectl create -f apache-deployment.yaml
-
以下を使用して Pod が実行中であることを確認します。
kubectl get pods
出力:
NAME READY STATUS RESTARTS AGE apache-7db8f797c7-2x6jc 1/1 Running 0 8s apache-7db8f797c7-cdgmw 1/1 Running 0 8s apache-7db8f797c7-lh447 1/1 Running 0 8s apache-7db8f797c7-m7mhd 1/1 Running 0 8s apache-7db8f797c7-m9rn7 1/1 Running 0 8s apache-7db8f797c7-r9jgz 1/1 Running 0 8s apache-7db8f797c7-vwhc8 1/1 Running 0 8s apache-7db8f797c7-zslwv 1/1 Running 0 8s
ステップ 5: LoadBalancer タイプのサービスを使用してサンプルアプリケーションを公開する
次の操作を実行して、タイプ LoadBalancer
のサービス (apache
) を作成します。
-
以下の設定で、
apache-service.yaml
という名前のファイルを作成します。apiVersion: v1 kind: Service metadata: name: apache labels: name: apache spec: externalTrafficPolicy: Local type: LoadBalancer ports: - name: http port: 80 targetPort: http selector: app: apache
-
以下のコマンドを使用して、サービスをデプロイします。
kubectl create -f apache-service.yaml
サービスを作成すると、IPAMコントローラーは IPAMコントローラーの展開で定義した IP アドレス範囲から IP アドレスを
apache
サービスに割り当てます。IPAMコントローラーによって割り当てられた IP アドレスは、サービス定義のstatus.loadBalancer.ingress:
フィールドに表示されます。NetScaler Ingress Controllerは、サービスに割り当てられたIPアドレスをNetScalerの仮想IP(VIP)として構成します。 -
以下のコマンドを使用して、サービスを表示します。
kubectl get service apache --output yaml
出力:
ステップ 6: サービスにアクセスする
IPAMコントローラーによってサービスに割り当てられた IP アドレスを使用して、apache
サービスにアクセスできます。IP アドレスは、サービス定義のstatus.loadBalancer.ingress:
フィールドで確認できます。curl
コマンドを使用してサービスにアクセスします。
curl <IP_address>
応答は次のようになります。
<html><body><h1>It works!</h1></body></html>
IP アドレスを指定して LoadBalancer タイプのサービスを公開する
サービス定義で IP アドレスを指定して、LoadBalancer タイプのサービスを手動で公開することもできます。
LoadBalancer タイプのサービスを手動で公開するには、サービス定義 YAML ファイルで IP アドレスを次のように指定します。
spec:
type: LoadBalancer
loadBalancerIP: "<ip-address>"
ロードバランサータイプのサービスを作成すると、NetScalerIngress Controllerは、 spec.loadBalancerIP
フィールドで定義したIPアドレスを、NetScalerの仮想IP(VIP)アドレスとして構成します。
例:IP アドレスを指定して LoadBalancer タイプのサービスを使用して Apache アプリケーションを公開する
以下の手順に従います。
-
以下の設定で、
apache-deployment.yaml
という名前のファイルを作成します。apiVersion: apps/v1 kind: Deployment metadata: name: apache labels: name: apache spec: selector: matchLabels: app: apache replicas: 8 template: metadata: labels: app: apache spec: containers: - name: apache image: httpd:latest ports: - name: http containerPort: 80 imagePullPolicy: IfNotPresent
-
以下のコマンドを使用して、
apache
アプリケーションをデプロイします。kubectl create -f apache-deployment.yaml
-
以下を使用して Pod が実行中であることを確認します。
kubectl get pods
出力:
NAME READY STATUS RESTARTS AGE apache-7db8f797c7-2x6jc 1/1 Running 0 8s apache-7db8f797c7-cdgmw 1/1 Running 0 8s apache-7db8f797c7-lh447 1/1 Running 0 8s apache-7db8f797c7-m7mhd 1/1 Running 0 8s apache-7db8f797c7-m9rn7 1/1 Running 0 8s apache-7db8f797c7-r9jgz 1/1 Running 0 8s apache-7db8f797c7-vwhc8 1/1 Running 0 8s apache-7db8f797c7-zslwv 1/1 Running 0 8s
-
タイプ
LoadBalancer
のサービス (apache
) を作成します。以下の設定でファイル名apache-service.yaml
を作成します。apiVersion: v1 kind: Service metadata: name: apache labels: name: apache spec: externalTrafficPolicy: Local loadBalancerIP: "10.217.212.16" type: LoadBalancer ports: - name: http port: 80 targetPort: http selector: app: apache
-
以下のコマンドを使用して、サービスをデプロイします。
kubectl create -f apache-service.yaml
サービス(
apache
)を作成すると、NetScaler Ingress ControllerはNetScaler VPX 仮想IPアドレス(VIP)として192.217.212.16
を構成します。 -
apache
サービスに割り当てた IP アドレス (192.217.212.16
) を使用して、サービスにアクセスします。curl
コマンドを使用してサービスにアクセスします。curl 192.217.212.16
応答は次のようになります。
<html><body><h1>It works!</h1></body></html>
ユースケースの例:NetScaler デュアルティア展開で LoadBalancer タイプのサービスを使用してマイクロサービスを公開する
この例では、NetScaler デュアルティア展開で LoadBalancer タイプのサービスを使用して、Kubernetes にデプロイされたマイクロサービスをクラスター外のクライアントに公開する方法を示します。
NetScaler VPX、MPX、またはCPXをTier-1のロードバランサーとして展開し、マイクロサービスへの大規模なNorth-Southトラフィックを管理できます。Tier-2では、NetScaler CPXをNorth-Southおよびeast-westのトラフィック用のインテリジェントなL7マイクロサービスルーターとして展開できます。この例では、NetScaler VPX(タイプLoadBalancer
のサービス )がティア1で使用され、NetScaler CPX(イングレス)がティア2で使用されています。
次の図は、この例のマイクロサービスの展開を示しています。展開には 3 つのサービスが含まれており、それぞれ青、赤、緑の色で強調表示されています。展開には 2 つのワーカーノードにまたがって実行される 12 個のポッドが含まれますこれらの展開は Kubernetes 名前空間を使用して論理的に分類されます。
前提条件
以下を用意してください:
- Kubernetes クラスターをデプロイしました。詳細については、 Kubernetes ドキュメントを参照してください。
- コンテナ化されたアプリケーションをデプロイするために Kubernetes ダッシュボードをセットアップします。詳細については、 https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/を参照してください。
- Ingress NetScalerがKubernetesポッドネットワークにアクセスしてシームレスに接続できるように、Tier-1 NetScalerに存在するルート構成です。詳細な手順については、「 NetScaler インスタンスでルートを手動で構成する」を参照してください。
LoadBalancer ソリューションタイプの Kubernetes サービスを使用してマイクロサービスをデプロイする
-
以下のコマンドを使用して、GitHub リポジトリをマスターノードにクローンします。
git clone https://github.com/citrix/example-cpx-vpx-for-kubernetes-2-tier-microservices.git
-
マスターノードの CLI コンソールを使用して、以下のコマンドを使用して namespace を作成します。
kubectl create -f namespace.yaml
次のコマンドを使用して、Kubernetes クラスターに名前空間が作成されているかどうかを確認します。
kubectl get namespaces
コマンドの出力は次のようになります。
-
Kubernetes ダッシュボードから、次のコマンドを使用して
rbac.yaml
をデフォルトの名前空間にデプロイします。kubectl create -f rbac.yaml
-
IP アドレスを Kubernetes サービスに自動的に割り当てるため、VIP CRD および IPAMコントローラーをデプロイします。次のコマンドを使用します:
kubectl create -f vip.yaml kubectl create -f ipam_deploy.yaml
-
次のコマンドを使用して、
hotdrink
、colddrink
およびguestbook
マイクロサービス用のNetScaler ADC CPXを展開します。kubectl create -f cpx.yaml -n tier-2-adc kubectl create -f hotdrink-secret.yaml -n tier-2-adc
-
以下のコマンドを使用して
hotdrink
beverage マイクロサービスをデプロイします。kubectl create -f team_hotdrink.yaml -n team-hotdrink kubectl create -f hotdrink-secret.yaml -n team-hotdrink
-
以下のコマンドを使用して
colddrink
beverage マイクロサービスをデプロイします。kubectl create -f team_colddrink.yaml -n team-colddrink kubectl create -f colddrink-secret.yaml -n team-colddrink
-
以下のコマンドを使用して、
guestbook
マイクロサービスをデプロイします。kubectl create -f team_guestbook.yaml -n team-guestbook
-
階層1のNetScalerを自動化する前に、階層1のNetScalerにログオンして、構成がNetScaler Ingress Controller からプッシュされていないことを確認します。
-
NetScaler Ingress Controllerを展開すると、NetScaler CPX構成がティア1のNetScalerに自動的にプッシュされます。
cic_vpx.yaml
で 、NetScaler VPX NS IPを使用してNS_IP
環境変数の値を変更します。NetScalerIngress Controller 展開について詳しくは、「YAMLを使用してNetScalerIngress Controller をデプロイする」を参照してください。cic_vpx.yaml
ファイルを更新したら、以下のコマンドを使用してファイルをデプロイします。kubectl create -f cic_vpx.yaml -n tier-2-adc
-
次のコマンドを使用して、IPAMコントローラーがNetScaler ADC CPXサービスにIPアドレスを割り当てているかどうかを確認します。
kubectl get svc -n tier-2-adc
-
インターネットを使用してマイクロサービスにアクセスするには、ローカルマシンのホストファイルに次の DNS エントリを追加します。
<frontend-ip from ingress_vpx.yaml> hotdrink.beverages.com <frontend-ip from ingress_vpx.yaml> colddrink.beverages.com <frontend-ip from ingress_vpx.yaml> guestbook.beverages.com
これで、次の URL を使用してマイクロサービスにアクセスできるようになりました。 https://hotdrink.beverages.com
環境変数:IPAMコントローラー
このセクションでは、IPAMコントローラーの環境変数に関する情報を提供します。
VIP_RANGE
VIP_RANGE
環境変数を使用すると、IP アドレスの範囲を定義できます。IP アドレス範囲、または一意の名前に関連付けられた IP アドレス範囲を定義できます。
IP アドレス範囲
IP アドレスの範囲は、1 つのサブネットまたは複数のサブネットから定義できます。また、 -
文字を使用して IP アドレス範囲を定義することもできます。IPAMコントローラーは、この IP アドレス範囲の IP アドレスをサービスに割り当てます。
次の例は、 VIP_RANGE
環境変数で IP アドレス範囲を定義するさまざまな方法を示しています。
To define the IP address range from a subnet:
- name: "VIP_RANGE"
value: '["10.xxx.xxx.18/31"]'
To define the IP address range from multiple subnets, ensure that the values are valid CIDRs for the subnets:
- name: "VIP_RANGE"
value: '["10.217.212.18/31", "10.217.212.20/31", "10.217.212.16/30", "10.217.212.0/24"]'
Also, you can use dash (`-`) to define the IP address range:
- name: "VIP_RANGE"
value: '["10.217.212.18 - 10.217.212.21", “10.217.212.27 - 10.217.212.31", “10.217.213.24 - 10.217.213.32" ]'
一意の名前に関連付けられた IP アドレス範囲
IP アドレス範囲に一意の名前を割り当て、その範囲をVIP_RANGE
環境変数で定義できます。IP アドレス範囲をこのように割り当てると、IP アドレス範囲を区別できます。タイプLoadBalancer
のサービスを作成するときに、サービス定義内のservice.citrix.com/ipam-range
アノテーションを使用して、IP アドレスの割り当てに使用する IP アドレス範囲を指定できます。
たとえば、Dev
、Test
、Prod
の 3 つのドメインがあり 、 管理する専用のワークロードがあります。各チームがマイクロサービストラフィックを負荷分散するために個別の IP アドレス範囲を必要とする場合は、IP アドレス範囲に一意の名前を割り当てることができます。その後、サービス定義内のservice.citrix.com/ipam-range
アノテーションに名前を定義できます。service.citrix.com/ipam-range = 'Dev'
で定義したサービスには、Dev
に関連付けられた IP アドレス範囲の IP アドレスが割り当てられます 。
次の例は、VIP_RANGE
環境変数で一意の名前に関連付けられた IP アドレス範囲を定義するさまざまな方法を示しています。
- name: "VIP_RANGE"
value: '[{"Prod": ["10.1.2.0/24"]}, {"Test": ["10.1.3.0/24"]}, {"Dev": ["10.1.4.0/24", "10.1.5.0/24"]},["10.1.6.0/24"]]'
また、-
文字を使用して IP アドレス範囲を定義することもできます。
- name: "VIP_RANGE"
value: '[{"Prod": ["10.1.2.0 - 10.1.2.255"]}, {"Test": ["10.1.3.0 - 10.1.3.255"]}, {"Dev": ["10.1.4.0/24", "10.1.5.0/24"]},["10.1.6.0/24"]]'
service.citrix.com/ipam-range
アノテーションの使用方法を示すサービス定義の例を次に示します。この例では、アノテーションを使用して、一意の名前Dev
に関連付けられた IP アドレス範囲から IP アドレスをサービスに割り当てます。
apiVersion: v1
kind: Service
metadata:
annotations:
service.citrix.com/ipam-range: "Dev"
name: apache
labels:
name: apache
spec:
externalTrafficPolicy: Local
type: LoadBalancer
selector:
name: apache
ports:
- name: http
port: 80
targetPort: http
selector:
app: apache
VIP_NAMESPACES
VIP_NAMESPACES
環境変数を使用すると、IPAMコントローラーが一連のネームスペースに対してのみ動作するように定義できます。IPAMコントローラーは、環境変数で指定された名前空間から作成されたサービスにのみ IP アドレスを割り当てます。
次の例は、VIP_NAMESPACES
環境変数で名前空間を指定する方法を示しています。
- name: "VIP_NAMESPACES"
value: 'default kube-system'
IPAMコントローラーは、default
およびkube-system
名前空間から作成されたサービスに IP アドレスを割り当てます。
注:
VIP_NAMESPACES
環境変数を使用しない場合、または値を設定しない場合、IPAMコントローラーはすべての名前空間から作成されたサービスに IP アドレスを割り当てます。
この記事の概要
- LoadBalancer タイプのサービスの概要
- Citrix LoadBalancer タイプのサービス向けソリューション
- LoadBalancer タイプのサービス向けCitrix ソリューションはベアメタルクラスターでどのように機能しますか
- IPAMコントローラーによって割り当てられた IP アドレスで LoadBalancer タイプのサービスを公開する
- IP アドレスを指定して LoadBalancer タイプのサービスを公開する
- ユースケースの例:NetScaler デュアルティア展開で LoadBalancer タイプのサービスを使用してマイクロサービスを公開する
- 環境変数:IPAMコントローラー