ノート:

Oracle Cloud Native Environmentによる外部Load Balancerのデプロイ

イントロダクション

Oracle Cloud Native Environmentは、クラウド・ネイティブ・アプリケーションを開発および管理するための完全統合型スイートです。Kubernetesモジュールはコア・モジュールです。コンテナのデプロイおよび管理に使用され、CRI- O、runCおよびKataコンテナも自動的にインストールおよび構成されます。CRI- Oは、Kubernetesクラスタのコンテナ・ランタイムを管理します。このランタイムは、runCまたはKata Containersです。

目的

このチュートリアル/ラボでは、次の方法について説明します。

サポート・ノート: 本番デプロイメントには、Oracle Cloud Instructure Load BalancerISなどの外部ロード・バランサを使用することをお薦めします。

前提条件

このチュートリアルの手順を実行するためのホストシステムを、このセクションに示します。次が必要です:

演習環境の設定

ノート: 無料のラボ環境を使用する場合、接続およびその他の使用手順については、Oracle Linux Lab Basicsを参照してください。

この演習には複数のシステムがあり、それぞれに異なるステップを実行する必要があります。まず、端末ウィンドウまたはタブを開き、次のノードに接続することをお薦めします。これにより、繰り返しログインおよびログアウトする必要がなくなります。ノードは次のとおりです。

  1. 端末を開き、sshを介して各ノードに接続します。

    ssh oracle@<ip_address_of_ol_node>
    

Load Balancerの設定(オプション)

ノート: 無料のラボ環境を使用する場合、最初のラボ・デプロイメント・フェーズで完了したため、この項で説明するステップは不要です。かわりに、Lunaのラボ・ユーザーは次のページに直接進んでください: プラットフォームCLI構成ファイルの作成。それ以外の場合は、これらのステップを独自のOracle Cloud Infrastructureテナンシにレプリケートするユーザーに対して、これを構成する方法の詳細が提供されます。

Oracle Cloud Infrastructure Load Balancerの作成

  1. クラウド・コンソールにログインします。

    public_ip_address

  2. ハンバーガ・メニュー(左上)をクリックし、「ネットワーキング」および「ロード・バランサ」をクリックします。

    public_ip_address

  3. 「ロード・バランサ」ページが表示されます。

    public_ip_address

  4. ドロップダウン・リストから、使用されているコンパートメントを見つけます。

    public_ip_address

  5. 「Load Balancerの作成」ボタンをクリックします。

    public_ip_address

  6. ポップアップ・ダイアログ・ボックスで、「Load Balancerの作成」ボタンをクリックして、デフォルトのLoad Balancerタイプを選択します。

    public_ip_address

Load Balancer詳細の更新

  1. デフォルトの「表示タイプ」セクションを見つけて、「プライベート」オプションをクリックします。

    public_ip_address

  2. 「ネットワーキングの選択」セクションまでページを下にスクロールします。

  3. 「ビジュアル・クラウド・ネットワーク」および「サブネット」のドロップダウン・リスト・ボックスで指定した値を選択します。

    ノート: イメージに表示される値は、ラボが開始されるたびに異なります

    public_ip_address

  4. 「次」をクリックすると次の手順に移動します。

Load Balancerポリシーおよびプロトコルの設定

  1. 次に、ロード・バランシング・ポリシーとヘルス・チェック・プロトコルを設定します。

    • デフォルトのロード・バランシング・ポリシー(重み付けラウンド・ロビン)を受け入れます
  2. 「ヘルス・チェック・ポリシーの指定」セクションで、表示される設定を入力します。

    • 「プロトコル」で、「TCP」を選択します
    • Port値を 80から 6443に変更します

    public_ip_address

バックエンド・ノードの追加

  1. 「バックエンドの追加」ボタンをクリックすると、ウィンドウが開きます。

    public_ip_address

  2. 次のノードを選択し、「選択したバックエンドの追加」ボタンをクリックします。

    • ocne-control01
    • ocne-control02
    • ocne-control03
  3. 新しく選択した各バックエンド・サーバー「ポート」列を、デフォルト値80から6443に更新します。

    public_ip_address

  4. 「次へ」ボタンをクリックして、次のステップに進みます。

Load Balancerリスナーの構成

  1. 「TCP」ボタンを選択します

  2. イングレス・トラフィックに使用されるポート443から6443に変更します

    入力した値はこのイメージのようになります。

    public_ip_address

  3. 「次へ」ボタンをクリックします。

Load Balancerロギングの構成

  1. 設定プロセスの最後のステップは、「ロギングの管理」オプションです。

    public_ip_address

    このシナリオの変更は必要ないため、「送信」ボタンをクリックしてLoad Balancerを作成します。

Load Balancer情報

  1. 作成すると、新しく作成されたLoad Balancerの概要ページが表示されます。

    public_ip_address

    ノート: 「全体的なヘルス」および「バックエンド・セットのヘルス」セクションは、「OK」(緑色)と表示されない場合があります。これは、Oracle Cloud Native EnvironmentがKubernetesコントロール・プレーン・ノードおよびワーカー・ノードにまだ作成されていないためです。ステップではこれに対処します。

プラットフォームCLI構成ファイルの作成

管理者は構成ファイルを使用して、環境とモジュールの作成および管理を簡略化できます。有効なYAML構文で記述された構成ファイルには、作成する環境およびモジュールに関するすべての情報が含まれます。構成ファイルを使用すると、プラットフォームCLIコマンドオプションのエントリが繰り返し保存されます。

ノート: Oracle Cloud Native Environmentの構成に使用されるmyenvironment.yamlに複数のコントロール・プレーン・ノードが入力されている場合、olcnectlでは、ロード・バランサの詳細(この場合はOracle Cloud Infrastructureロード・バランサ)がmyenvironment.yamlファイルに入力されている必要があります。これを実現するには、myenvironment.yamlに新しい引数(load-balancer: <enter-your-OCI-LB-ip-here>)を入力します。

構成ファイルの例:

environments:
  - environment-name: myenvironment
    globals:
      api-server: 127.0.0.1:8091
      secret-manager-type: file
      olcne-ca-path: /etc/olcne/configs/certificates/production/ca.cert
      olcne-node-cert-path: /etc/olcne/configs/certificates/production/node.cert
      olcne-node-key-path:  /etc/olcne/configs/certificates/production/node.key
    modules:
      - module: kubernetes
        name: mycluster
        args:
          container-registry: container-registry.oracle.com/olcne
          load-balancer: 10.0.0.<XXX>:6443
          master-nodes: ocne-control01:8090,ocne-control02:8090,ocne-control03:8090
          worker-nodes: ocne-worker01:8090,ocne-worker02:8090
          selinux: enforcing
          restrict-service-externalip: true
          restrict-service-externalip-ca-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/ca.cert
          restrict-service-externalip-tls-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/node.cert
          restrict-service-externalip-tls-key: /etc/olcne/configs/certificates/restrict_external_ip/production/node.key

演習のデプロイメント中に、構成ファイルが自動的に生成され、演習で使用する準備が整います。構成ファイルの手動作成の詳細は、「構成ファイルの使用」のドキュメントを参照してください。

構成ファイルの更新

  1. (ocne- operatorで)構成ファイルの内容を表示します。

    cat ~/myenvironment.yaml
    
  2. (ocne- operatorで) ロードバランサの IPv4アドレス値を myenvironment.yamlファイルに追加します。

    LB_IP=$(oci lb load-balancer list --auth instance_principal --compartment-id $COMPARTMENT_OCID | jq -r '.data[]."ip-addresses"[]."ip-address"')
    sed -i "14i\          load-balancer: $LB_IP:6443" ~/myenvironment.yaml
    

    前述のコマンドを正常に実行するには、オペレータノード上で次の準備手順を実行する必要があります。これらのステップは、無料のラボ・デプロイメントの一部として実行します。

    • Oracle Cloud Infrastructure CLIをインストールしました。

    • Oracle Cloud Native EnvironmentをデプロイするコンパートメントのOCIDを参照します。

    • これらの環境変数をユーザーの~/.bashrcファイルに追加しました。

      • COMPARTMENT_OCID=<compartment_ocid>
      • LC_ALL=C.UTF-8
      • LANG=C.UTF-8
  3. (ocne- operatorで) load balancer値が myenviroment.yamlファイルに追加されていることを確認します。

    cat ~/myenvironment.yaml
    

環境およびKubernetesモジュールの作成

  1. (ocne- operator上)環境を作成します。

    cd ~
    olcnectl environment create --config-file myenvironment.yaml
    

    出力例:

    [oracle@ocne-operator ~]$ olcnectl environment create --config-file myenvironment.yaml
    Environment myenvironment created.
    
  2. (ocne- operatorで) Kubernetesモジュールを作成します。

    olcnectl module create --config-file myenvironment.yaml
    

    出力例:

    [oracle@ocne-operator ~]$ olcnectl module create --config-file myenvironment.yaml
    Modules created successfully.
    
  3. (ocne- operator上) Kubernetesモジュールを検証します。

    olcnectl module validate --config-file myenvironment.yaml
    

    出力例:

    [oracle@ocne-operator ~]$ olcnectl module validate --config-file myenvironment.yaml
    Validation of module mycluster succeeded.
    

    この無料のラボ環境では、検証エラーはありません。エラーがある場合は、このコマンドの出力として、ノードを修正するために必要なコマンドが示されます。

  4. (ocne- operator上) Kubernetesモジュールをインストールします。

    olcnectl module install --config-file myenvironment.yaml
    

    ノート: ノードへのKubernetesのデプロイメントが完了するまでに数分かかります。

    出力例:

    [oracle@ocne-operator ~]$ olcnectl module install --config-file myenvironment.yaml
    Modules installed successfully.
    
  5. (ocne- operator上) Kubernetesモジュールのデプロイメントを確認します。

    olcnectl module instances --config-file myenvironment.yaml
    

    出力例:

    [oracle@ocne-operator ~]$ olcnectl module instances --config-file myenvironment.yaml
    INSTANCE           	MODULE    	STATE    
    mycluster          	kubernetes	installed
    ocne-control01:8090	node      	installed
    ocne-control02:8090	node      	installed
    ocne-control03:8090	node      	installed
    ocne-worker01:8090 	node      	installed
    ocne-worker02:8090 	node      	installed
    [oracle@ocne-operator ~]$
    

kubectlの設定

  1. (ocne- controlxxノード上) kubectlコマンドを設定します。

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    export KUBECONFIG=$HOME/.kube/config
    echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
    
  2. (sysop01で) kubectlコマンドを設定します。

    1. コントロール・プレーン・ノードの1つから構成ファイルをコピーします。

      mkdir -p $HOME/.kube
      ssh -o StrictHostKeyChecking=no 10.0.0.150 "sudo cat /etc/kubernetes/admin.conf" > $HOME/.kube/config
      
    2. kubectlコマンドで使用する構成をエクスポートします。

      sudo chown $(id -u):$(id -g) $HOME/.kube/config
      export KUBECONFIG=$HOME/.kube/config
      echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
      
  3. (sysop01) kubectlが機能することを確認します。

    kubectl get nodes
    

    出力例:

    [oracle@sysop01 ~]$ kubectl get nodes
    NAME             STATUS   ROLES                  AGE     VERSION
    ocne-control01   Ready    control-plane,master   5m10s   v1.23.7+1.el8
    ocne-control02   Ready    control-plane,master   3m33s   v1.23.7+1.el8
    ocne-control03   Ready    control-plane,master   4m29s   v1.23.7+1.el8
    ocne-worker01    Ready    <none>                 3m15s   v1.23.7+1.el8
    ocne-worker02    Ready    <none>                 3m8s    v1.23.7+1.el8
    [oracle@sysop01 ~]$
    

Load Balancerによるコントロール・プレーン・ノード停止の管理の確認

外部ロード・バランサの背後に3つのコントロール・プレーン・ノードがあるOracle Cloud Native Environmentのインストールが完了しました。

次の項では、外部ロード・バランサがコントロール・プレーン・ノードに障害が発生したときに検出し、ラウンド・ロビン・トラフィック分散ポリシーから削除することを確認します。最後のテスト・ステップでは、欠落しているノードがリカバリされると、自動的にクラスタに再結合され、クラスタベースのトラフィックを再度処理できるようになります。

Load Balancerがアクティブであることの確認

無料のラボ環境を使用する場合は、Oracle Linux Lab Basicsのドキュメントに示すようにクラウド・コンソールにサインインします。

Load Balancer詳細へのアクセス

  1. まだ接続していない場合は、クラウド・コンソールにログインします。

    public_ip_address

  2. ハンバーガ・メニュー(左上)をクリックし、「ネットワーキング」および「ロード・バランサ」をクリックします。

    public_ip_address

  3. 「ロード・バランサ」ページが表示されます。

    public_ip_address

  4. ドロップダウン・リストから、使用しているコンパートメントを見つけます。

    public_ip_address

    このステップの手順が必要な場合は、Oracle Linux Lab Basicsで詳細を参照してください。

  5. 事前作成されたLoad Balancerのサマリーの詳細は、このイメージのようになります。

    public_ip_address

  6. 「ocne- load- balancer」リンクをクリックします。

  7. (ブラウザの左側の「リソース」見出しの下にある)「バックエンド・セット」リンクまでスクロール・ダウンします。

  8. 「バックエンド・セット」リンクをクリックします。

    public_ip_address

  9. 既存のバックエンド・セットへのリンクが表示されます。リンクをクリックします(この例では ocne- lb- backend- setと呼ばれます)。

    public_ip_address

  10. (ブラウザの左側の「リソース」見出しの下にある)「バックエンド」リンクをクリックします。

    public_ip_address

  11. この画面では、正常なノードが3つ存在することが確認されます。

    public_ip_address

コントロール・プレーン・ノード・インスタンスの1つを停止

  1. ハンバーガ・メニュー(左上)をクリックし、「コンピュート」「インスタンス」の順に移動します。

    public_ip_address

  2. 「インスタンス」ページが表示されます。

    public_ip_address

  3. リストされているコントロール・プレーン・ノードのいずれかをクリックします(例: ocne-control01)。

  4. インスタンスの詳細が表示されます。

    public_ip_address

  5. *停止ボタンをクリックします。

  6. ポップアップ・ダイアログ・ボックスで、「ただちに電源を切ってインスタンスを強制停止」チェック・ボックスを選択し、「インスタンスの強制停止」ボタンをクリックします。

    ノート: システム全体でデータの損失、破損または悪化が発生する可能性があるため、本番システムでこれを実行しないでください。

    public_ip_address

  7. インスタンスの詳細ページでインスタンスが「停止済」であることが確認されるまで待ちます。

    public_ip_address

Oracle Cloud Infrastructure Load Balancerによるコントロール・プレーン・ノード障害の登録の確認

  1. 「ネットワーキング」 > 「ロード・バランサ」に移動します。

  2. 「ocne- load- balancer」リンクをクリックします。

  3. 左下のパネルの「リソース」で、「バックエンド・セット」をクリックします。

  4. 次に、「バックエンド・セット」表に表示された名前をクリックします(例: ocne- lb- backend- set)。

  5. 「バックエンド」をクリックしてノードを表示します。

    このページのステータスは自動的に更新されます。通常、表示されるステータスが変更されるまで2~3分かかります。

  6. 表示される初期レポート・ステージは、「警告」ステータスである必要があります。

    public_ip_address

  7. 数分後(2分から3分後)、ステータスは「クリティカル」ステータスに更新されます。つまり、ノードがOracle Cloud Infrastructureロード・バランサ・プロセスによって応答していないことが確認されたため、ロード・バランサは受信リクエストを、使用できないバックエンド制御プラン・ノードに転送しなくなります。

    public_ip_address

Oracle Cloud Native Environmentクラスタの応答の確認

クラスタに2つ以上のアクティブなメンバーが残っている場合、アクティブなコントロール・プレーン・ノードはkubectlコマンドに応答する必要があります。

  1. (sysop01上) kubectlが応答し、NotReady (使用不可)として停止したコントロール・プレーン・ノードをレポートすることを確認します。

    kubectl get nodes
    

    出力例:

    [oracle@sysop01 ~]$ kubectl get nodes
    NAME             STATUS     ROLES                  AGE   VERSION
    ocne-control01   NotReady   control-plane,master   26m   v1.23.7+1.el8
    ocne-control02   Ready      control-plane,master   25m   v1.23.7+1.el8
    ocne-control03   Ready      control-plane,master   24m   v1.23.7+1.el8
    ocne-worker01    Ready      <none>                 24m   v1.23.7+1.el8
    ocne-worker02    Ready      <none>                 26m   v1.23.7+1.el8
    [oracle@sysop01 ~]$
    

    ノート: * **NotReadyステータスが表示されるまで、2分から3分かかる可能性があります。ステータスが「準備完了」からNotReadyに変わるまで、kubectl get nodesコマンドを定期的に繰り返してください。

停止したコントロール・プレーン・ノードの再起動

  1. Comコンピュート > インスタンスに移動します。

  2. 以前に停止したコントロール・プレーン・ノードをクリックします。

  3. 「起動」ボタンをクリックしてインスタンスを起動します。

    「ステータス」セクションが緑色になるまで待機し、インスタンスが「実行中」であることを確認します。

    public_ip_address

コントロール・プレーン・ノードがOracle Cloud Infrastructure Load Balancerクラスタに再度参加していることの確認

  1. 「ネットワーキング」 > 「ロード・バランサ」に移動します。

  2. 「ocne- load- balancer」リンクをクリックします。

  3. 左下のパネルの「リソース」で、「バックエンド・セット」をクリックします。

  4. 次に、「バックエンド・セット」表に表示された名前をクリックします(例: ocne- lb- backend- set)。

  5. 「バックエンド」をクリックしてノードを表示します。

    このページのステータスは自動的に更新されます。通常、表示されるステータスが変更されるまで2~3分かかります。

  6. 再起動されたノードが検出されるまで、「全体的なヘルス」「警告」ステータスが表示されます。

    public_ip_address

  7. 検出されると、「全体的な状態」「OK」としてレポートされます。

    public_ip_address

この段階では、制御ノードがクラスタに再参加し、3つのコントロール・プレーン・ノードすべてが、クラスタへの受信トラフィックを配分するラウンド・ロビンに参加しています。

コントロール・プレーン・ノード・ステータスの取得

  1. (sysop01上) kubectlが応答し、再起動したコントロール・プレーン・ノードのステータスがReady (使用可能)であることを確認します。

    kubectl get nodes
    

    出力例:

    [oracle@sysop01 ~]$ kubectl get nodes
    NAME             STATUS     ROLES                  AGE   VERSION
    ocne-control01   Ready      control-plane,master   26m   v1.23.7+1.el8
    ocne-control02   Ready      control-plane,master   25m   v1.23.7+1.el8
    ocne-control03   Ready      control-plane,master   24m   v1.23.7+1.el8
    ocne-worker01    Ready      <none>                 24m   v1.23.7+1.el8
    ocne-worker02    Ready      <none>                 26m   v1.23.7+1.el8
    [oracle@sysop01 ~]$
    

    *注意: ステータス変更には、更新されたステータスが表示されるまで2~3分かかる場合があります。ステータスが変更されるまで、kubectl get nodesコマンドを定期的に繰り返してください。

    これにより、ロード・バランサが正しく構成され、リクエストが正常に受け入れられていることが確認されます。

詳細情報

その他の学習リソース

docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。