ノート:
- このチュートリアルは、Oracle提供の無料ラボ環境で入手できます。
- Oracle Cloud Infrastructure資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了したら、これらの値をクラウド環境に固有の値に置き換えてください。
Oracle Cloud Native Environmentによる外部Load Balancerのデプロイ
イントロダクション
Oracle Cloud Native Environmentは、クラウド・ネイティブ・アプリケーションを開発および管理するための完全統合型スイートです。Kubernetesモジュールはコア・モジュールです。コンテナのデプロイおよび管理に使用され、CRI- O、runCおよびKataコンテナも自動的にインストールおよび構成されます。CRI- Oは、Kubernetesクラスタのコンテナ・ランタイムを管理します。このランタイムは、runCまたはKata Containersです。
目的
このチュートリアル/ラボでは、次の方法について説明します。
- 高可用性を実現するために、Oracle Cloud Infrastructureロード・バランサでKubernetesクラスタを構成します
- 5ノード・クラスタでのOracle Cloud Native Environmentの構成
- コントロール・プレーン・ノード間のLoad Balancerフェイルオーバーが正常に完了したことを確認します
サポート・ノート: 本番デプロイメントには、Oracle Cloud Instructure Load BalancerISなどの外部ロード・バランサを使用することをお薦めします。
前提条件
このチュートリアルの手順を実行するためのホストシステムを、このセクションに示します。次が必要です:
-
6つの Oracle Linuxシステムを次のように使用します。
- オペレータ・ノード(ocne- operator)
- 3つのKubernetesコントロール・プレーン・ノード(ocne-control01、ocne-control02、ocne-control03)
- 2つのKubernetesワーカー・ノード(ocne-worker01、ocne-worker02)
- kubectlがインストールされている1つのOracle Linuxシステム(sysop01)
ノート: 本番環境では、コントロール・プレーン・ノードが5つ以上、ワーカー・ノードが3つ以上あるクラスタを使用することをお薦めします。
-
各システムには、少なくとも次のものがインストールされている必要があります。
- 最新のOracle Linux 8 (x86_64)がインストールされ、Unbreakable Enterprise Kernelリリース6 (UEK R6)が実行されていること
-
この環境は、次のように事前構成されています。
oracle
ユーザー・アカウントの作成(インストール時に使用)oracle
アカウントのsudo
アクセス権を付与しました- インスタンス間でキーベースのSSH (パスワードなしSSHとも呼ばれる)を設定します。
- Oracle Cloud Native Environmentリリース1.5がインストールされている(環境は作成されていない)
演習環境の設定
ノート: 無料のラボ環境を使用する場合、接続およびその他の使用手順については、Oracle Linux Lab Basicsを参照してください。
この演習には複数のシステムがあり、それぞれに異なるステップを実行する必要があります。まず、端末ウィンドウまたはタブを開き、次のノードに接続することをお薦めします。これにより、繰り返しログインおよびログアウトする必要がなくなります。ノードは次のとおりです。
- ocne演算子
- 次のいずれか:
- ocne-control01
- ocne-control02
- ocne-control03
- sysop01
-
端末を開き、sshを介して各ノードに接続します。
ssh oracle@<ip_address_of_ol_node>
Load Balancerの設定(オプション)
ノート: 無料のラボ環境を使用する場合、最初のラボ・デプロイメント・フェーズで完了したため、この項で説明するステップは不要です。かわりに、Lunaのラボ・ユーザーは次のページに直接進んでください: プラットフォームCLI構成ファイルの作成。それ以外の場合は、これらのステップを独自のOracle Cloud Infrastructureテナンシにレプリケートするユーザーに対して、これを構成する方法の詳細が提供されます。
Oracle Cloud Infrastructure Load Balancerの作成
-
クラウド・コンソールにログインします。
-
ハンバーガ・メニュー(左上)をクリックし、「ネットワーキング」および「ロード・バランサ」をクリックします。
-
「ロード・バランサ」ページが表示されます。
-
ドロップダウン・リストから、使用されているコンパートメントを見つけます。
-
「Load Balancerの作成」ボタンをクリックします。
-
ポップアップ・ダイアログ・ボックスで、「Load Balancerの作成」ボタンをクリックして、デフォルトのLoad Balancerタイプを選択します。
Load Balancer詳細の更新
-
デフォルトの「表示タイプ」セクションを見つけて、「プライベート」オプションをクリックします。
-
「ネットワーキングの選択」セクションまでページを下にスクロールします。
-
「ビジュアル・クラウド・ネットワーク」および「サブネット」のドロップダウン・リスト・ボックスで指定した値を選択します。
ノート: イメージに表示される値は、ラボが開始されるたびに異なります。
-
「次」をクリックすると次の手順に移動します。
Load Balancerポリシーおよびプロトコルの設定
-
次に、ロード・バランシング・ポリシーとヘルス・チェック・プロトコルを設定します。
- デフォルトのロード・バランシング・ポリシー(重み付けラウンド・ロビン)を受け入れます
-
「ヘルス・チェック・ポリシーの指定」セクションで、表示される設定を入力します。
- 「プロトコル」で、「TCP」を選択します
- Port値を 80から 6443に変更します
バックエンド・ノードの追加
-
「バックエンドの追加」ボタンをクリックすると、ウィンドウが開きます。
-
次のノードを選択し、「選択したバックエンドの追加」ボタンをクリックします。
- ocne-control01
- ocne-control02
- ocne-control03
-
新しく選択した各バックエンド・サーバーの「ポート」列を、デフォルト値80から6443に更新します。
-
「次へ」ボタンをクリックして、次のステップに進みます。
Load Balancerリスナーの構成
-
「TCP」ボタンを選択します
-
イングレス・トラフィックに使用されるポートを443から6443に変更します
入力した値はこのイメージのようになります。
-
「次へ」ボタンをクリックします。
Load Balancerロギングの構成
-
設定プロセスの最後のステップは、「ロギングの管理」オプションです。
このシナリオの変更は必要ないため、「送信」ボタンをクリックしてLoad Balancerを作成します。
Load Balancer情報
-
作成すると、新しく作成されたLoad Balancerの概要ページが表示されます。
ノート: 「全体的なヘルス」および「バックエンド・セットのヘルス」セクションは、「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
演習のデプロイメント中に、構成ファイルが自動的に生成され、演習で使用する準備が整います。構成ファイルの手動作成の詳細は、「構成ファイルの使用」のドキュメントを参照してください。
構成ファイルの更新
-
(ocne- operatorで)構成ファイルの内容を表示します。
cat ~/myenvironment.yaml
-
(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
-
-
(ocne- operatorで) load balancer値が myenviroment.yamlファイルに追加されていることを確認します。
cat ~/myenvironment.yaml
環境およびKubernetesモジュールの作成
-
(ocne- operator上)環境を作成します。
cd ~ olcnectl environment create --config-file myenvironment.yaml
出力例:
[oracle@ocne-operator ~]$ olcnectl environment create --config-file myenvironment.yaml Environment myenvironment created.
-
(ocne- operatorで) Kubernetesモジュールを作成します。
olcnectl module create --config-file myenvironment.yaml
出力例:
[oracle@ocne-operator ~]$ olcnectl module create --config-file myenvironment.yaml Modules created successfully.
-
(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.
この無料のラボ環境では、検証エラーはありません。エラーがある場合は、このコマンドの出力として、ノードを修正するために必要なコマンドが示されます。
-
(ocne- operator上) Kubernetesモジュールをインストールします。
olcnectl module install --config-file myenvironment.yaml
ノート: ノードへのKubernetesのデプロイメントが完了するまでに数分かかります。
出力例:
[oracle@ocne-operator ~]$ olcnectl module install --config-file myenvironment.yaml Modules installed successfully.
-
(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の設定
-
(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
-
(sysop01で)
kubectl
コマンドを設定します。-
コントロール・プレーン・ノードの1つから構成ファイルをコピーします。
mkdir -p $HOME/.kube ssh -o StrictHostKeyChecking=no 10.0.0.150 "sudo cat /etc/kubernetes/admin.conf" > $HOME/.kube/config
-
kubectl
コマンドで使用する構成をエクスポートします。sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=$HOME/.kube/config echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
-
-
(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詳細へのアクセス
-
まだ接続していない場合は、クラウド・コンソールにログインします。
-
ハンバーガ・メニュー(左上)をクリックし、「ネットワーキング」および「ロード・バランサ」をクリックします。
-
「ロード・バランサ」ページが表示されます。
-
ドロップダウン・リストから、使用しているコンパートメントを見つけます。
このステップの手順が必要な場合は、Oracle Linux Lab Basicsで詳細を参照してください。
-
事前作成されたLoad Balancerのサマリーの詳細は、このイメージのようになります。
-
「ocne- load- balancer」リンクをクリックします。
-
(ブラウザの左側の「リソース」見出しの下にある)「バックエンド・セット」リンクまでスクロール・ダウンします。
-
「バックエンド・セット」リンクをクリックします。
-
既存のバックエンド・セットへのリンクが表示されます。リンクをクリックします(この例では ocne- lb- backend- setと呼ばれます)。
-
(ブラウザの左側の「リソース」見出しの下にある)「バックエンド」リンクをクリックします。
-
この画面では、正常なノードが3つ存在することが確認されます。
コントロール・プレーン・ノード・インスタンスの1つを停止
-
ハンバーガ・メニュー(左上)をクリックし、「コンピュート」、「インスタンス」の順に移動します。
-
「インスタンス」ページが表示されます。
-
リストされているコントロール・プレーン・ノードのいずれかをクリックします(例: ocne-control01)。
-
インスタンスの詳細が表示されます。
-
*停止ボタンをクリックします。
-
ポップアップ・ダイアログ・ボックスで、「ただちに電源を切ってインスタンスを強制停止」チェック・ボックスを選択し、「インスタンスの強制停止」ボタンをクリックします。
ノート: システム全体でデータの損失、破損または悪化が発生する可能性があるため、本番システムでこれを実行しないでください。
-
インスタンスの詳細ページでインスタンスが「停止済」であることが確認されるまで待ちます。
Oracle Cloud Infrastructure Load Balancerによるコントロール・プレーン・ノード障害の登録の確認
-
「ネットワーキング」 > 「ロード・バランサ」に移動します。
-
「ocne- load- balancer」リンクをクリックします。
-
左下のパネルの「リソース」で、「バックエンド・セット」をクリックします。
-
次に、「バックエンド・セット」表に表示された名前をクリックします(例: ocne- lb- backend- set)。
-
「バックエンド」をクリックしてノードを表示します。
このページのステータスは自動的に更新されます。通常、表示されるステータスが変更されるまで2~3分かかります。
-
表示される初期レポート・ステージは、「警告」ステータスである必要があります。
-
数分後(2分から3分後)、ステータスは「クリティカル」ステータスに更新されます。つまり、ノードがOracle Cloud Infrastructureロード・バランサ・プロセスによって応答していないことが確認されたため、ロード・バランサは受信リクエストを、使用できないバックエンド制御プラン・ノードに転送しなくなります。
Oracle Cloud Native Environmentクラスタの応答の確認
クラスタに2つ以上のアクティブなメンバーが残っている場合、アクティブなコントロール・プレーン・ノードはkubectl
コマンドに応答する必要があります。
-
(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
コマンドを定期的に繰り返してください。
停止したコントロール・プレーン・ノードの再起動
-
Comコンピュート > インスタンスに移動します。
-
以前に停止したコントロール・プレーン・ノードをクリックします。
-
「起動」ボタンをクリックしてインスタンスを起動します。
「ステータス」セクションが緑色になるまで待機し、インスタンスが「実行中」であることを確認します。
コントロール・プレーン・ノードがOracle Cloud Infrastructure Load Balancerクラスタに再度参加していることの確認
-
「ネットワーキング」 > 「ロード・バランサ」に移動します。
-
「ocne- load- balancer」リンクをクリックします。
-
左下のパネルの「リソース」で、「バックエンド・セット」をクリックします。
-
次に、「バックエンド・セット」表に表示された名前をクリックします(例: ocne- lb- backend- set)。
-
「バックエンド」をクリックしてノードを表示します。
このページのステータスは自動的に更新されます。通常、表示されるステータスが変更されるまで2~3分かかります。
-
再起動されたノードが検出されるまで、「全体的なヘルス」に「警告」ステータスが表示されます。
-
検出されると、「全体的な状態」は「OK」としてレポートされます。
この段階では、制御ノードがクラスタに再参加し、3つのコントロール・プレーン・ノードすべてが、クラスタへの受信トラフィックを配分するラウンド・ロビンに参加しています。
コントロール・プレーン・ノード・ステータスの取得
-
(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
コマンドを定期的に繰り返してください。これにより、ロード・バランサが正しく構成され、リクエストが正常に受け入れられていることが確認されます。
詳細情報
- Oracle Cloud Native Environmentのドキュメント
- Oracle Cloud Native Environmentトレーニング
- Oracle Linuxラーニング・サブスクリプション
- Oracle Linuxカリキュラム
その他の学習リソース
docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Deploy an External Load Balancer with Oracle Cloud Native Environment
F61283-03
September 2022
Copyright © 2022, Oracle and/or its affiliates.