機械翻訳について

4 Oracle Cloud Infrastructureロード・バランサの使用

この章では、Oracle Cloud Infrastructure Cloud Controller Managerモジュールを使用して、Oracle Cloud InfrastructureインスタンスのOracle Cloud Native EnvironmentでKubernetesアプリケーションのロード・バランサを設定する方法について説明します。

Oracle Cloud Infrastructureロード・バランサの概要

Oracle Cloud Infrastructureフレキシブル・ネットワーク・ロード・バランシング・サービス(「Oracle Cloud Infrastructureロード・バランサ」)は、1つのエントリ・ポイントからVirtual Cloud Network (VCN)内の多数のバックエンド・サーバーへの自動トラフィック分散を提供します。 接続レベルで動作し、レイヤー3/レイヤー4 (IPプロトコル)データに基づいて受信クライアント接続を正常なバックエンド・サーバーにロード・バランシングします。

「Oracle Cloud Infrastructureロード・バランサ」の詳細については、Oracle Cloud Infrastructureのドキュメント」を参照してください。

Kubernetes Cloud Controller Manager ServiceControllerは、Kubernetes LoadBalancerサービスの作成時にロード・バランサの作成を行います。 Platform API Serverは、Oracle Cloud Infrastructure APIと通信して、「Oracle Cloud Infrastructureロード・バランサ」をプロビジョニングおよび管理します。

Oracle Cloud Infrastructure Load Balancerを使用したアプリケーションの作成

この項では、「Oracle Cloud Infrastructureロード・バランサ」を使用して外部IPアドレスを提供するKubernetesアプリケーションを作成できることを確認するための基本的なテストについて説明します。

Oracle Cloud Infrastructureロード・バランサを使用するテスト・アプリケーションを作成するには:

  1. LoadBalancerサービスを使用するKubernetesアプリケーションを作成します。 この例のデプロイメントでは、レプリカ数2および関連するLoadBalancerサービスを含むNGINXアプリケーションを作成します。

    コントロール・プレーン・ノードで、nginx-oci-lb.yamlという名前のファイルを作成し、次のファイルをファイルにコピーします。

    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: container-registry.oracle.com/olcne/nginx:1.17.7 
            ports:
            - containerPort: 80
    ---
    kind: Service
    apiVersion: v1
    metadata:
      name: nginx-service
      annotations: 
        service.beta.kubernetes.io/oci-load-balancer-security-list-management-mode: "None"
        service.beta.kubernetes.io/oci-load-balancer-internal: "true"
        service.beta.kubernetes.io/oci-load-balancer-shape: "flexible"
        service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10"
        service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "10"
    spec:
      selector:
        app: nginx
      type: LoadBalancer
      ports:
      - name: http
        port: 80
        targetPort: 80

    annotationsセクションには、「Oracle Cloud Infrastructureロード・バランサ」のプロビジョニングに必要な情報が含まれています。 ここからロード・バランサ・シェイプを設定します。 たとえば、フレキシブル・シェイプのかわりに10Mbpsシェイプを使用するには、次を使用します:

     annotations: 
        service.beta.kubernetes.io/oci-load-balancer-security-list-management-mode: "None"
        service.beta.kubernetes.io/oci-load-balancer-internal: "true"
        service.beta.kubernetes.io/oci-load-balancer-shape: "10Mbps"

    一部のOracle Cloud Infrastructureテナンシでは、ネットワーク・サブネットを識別するためにoci-load-balancer-subnet1注釈を含める必要もあります。たとえば:

        service.beta.kubernetes.io/oci-load-balancer-subnet1: "ocid1.subnet.oc1..unique_ID" 

    含めることができる注釈の完全なリストは、次のアップストリーム・ドキュメントを参照してください:

    https://github.com/oracle/oci-cloud-controller-manager/blob/master/docs/load-balancer-annotations.md

  2. NGINXデプロイメントおよびLoadBalancerサービスを起動します:

    kubectl apply -f nginx-oci-lb.yaml
  3. kubectl get deploymentコマンドを使用して、nginx-deploymentアプリケーションが実行されていることを確認できます:

    kubectl get deployments.apps

    出力は次のようになります:

    NAME               READY   UP-TO-DATE   AVAILABLE   AGE
    nginx-deployment   2/2     2            2           31s
  4. kubectl get svcコマンドを使用して、nginx-deploymentサービスが実行されていることを確認できます:

    kubectl get svc nginx-service

    出力は次のようになります:

    NAME            TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)        AGE
    nginx-service   LoadBalancer   10.99.107.243   203.0.113.10      80:31288/TCP   10m

    Oracle Cloud Infrastructureは、IPアドレスの割当てに数分かかる場合があります。 これが完了するまで、EXTERNAL-IP列にはnginx-servicepending状態が表示されます。 IPアドレスが割り当てられると、このフィールドはIPアドレスを表示するように変更されます。

    ヒント:

    ロード・バランサは、Oracle Cloud Infrastructure「ネットワーク」 > 「ロード・バランサ」の下に作成されます。

    nginx-service LoadBalancerのEXTERNAL-IPには203.0.113.10というIPアドレスがあります。 このIPアドレスは、Oracle Cloud Infrastructureによって提供され、アプリケーションへの接続に使用できる外部IPアドレスです。

  5. curlを使用してNGINXアプリケーションのIPアドレスに接続し、アプリケーションのポート(この例では203.0.113.10:80)を追加して、NGINXのデフォルト・ページを表示します。

    curl 203.0.113.10:80

    出力は次のようになります:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
        body {
            width: 35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h1>Welcome to nginx!</h1>
    <p>If you see this page, the nginx web server is successfully installed and
    working. Further configuration is required.</p>
    
    <p>For online documentation and support please refer to
    <a href="http://nginx.org/">nginx.org</a>.<br/>
    Commercial support is available at
    <a href="http://nginx.com/">nginx.com</a>.</p>
    
    <p><em>Thank you for using nginx.</em></p>
    </body>
    </html>
  6. nginx-service LoadBalancerサービスは、次を使用して削除できます:

    kubectl delete svc nginx-service

    ヒント:

    ロード・バランサがOracle Cloud Infrastructure「ネットワーク」 > 「ロード・バランサ」で削除されていることがわかります。

  7. nginx-deploymentアプリケーションは、次のものを使用して削除できます:

    kubectl delete deployments.apps nginx-deployment