ノート:
- このチュートリアルは、Oracle提供の無料ラボ環境で入手できます。
- Oracle Cloud Infrastructure資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了したら、これらの値をクラウド環境に固有の値に置き換えてください。
Oracle Cloudネイティブ環境でのKubernetesクラスタのスケーリング
イントロダクション
このチュートリアルでは、Oracle Cloud Native Environmentで既存のKubernetesクラスタをスケーリングする方法を示します。
Kubernetesクラスタをスケール・アップするには、ノードを追加することを意味します。同様に、ノードを削除することでスケール・ダウンが発生します。ノードは、コントロール・プレーン・ノードまたはワーカー・ノードのいずれかです。Oracleでは、クラスタを同時にスケール・アップおよびスケール・ダウンしないことをお薦めします。かわりに、2つの個別のコマンドでスケール・アップを実行してからスケール・ダウンします。
ス分割ブレイン・シナリオを回避し、定足数を維持するために、Kubernetesクラスタのコントロール・プレーンまたはワーカー・ノードを奇数でスケーリングすることをお薦めします。たとえば、3、5または7のコントロール・プレーン・ノードまたはワーカー・ノードにより、クラスタの信頼性が保証されます。
このチュートリアルでは、Oracle Cloud Native Environmentで実行されている既存の高可用性Kubernetesクラスタを使用し、3つのモジュールをデプロイします:
- Kubernetes (
kubernetes
) - Helm(
helm
) - Oracle Cloud Infrastructure Cloud Controller Managerモジュール(
oci-ccm
)
開始デプロイメントは、次のもので構成されます。
- 1つのオペレータ・ノード
- 3つのコントロール・プレーン・ノード
- 5ワーカー・ノード
これはラボに基づいて構築されます。
- Oracle Cloud Native Environmentのデプロイ
- Oracle Cloud Native Environmentによる外部Load Balancerのデプロイ
- Oracle Cloud Native EnvironmentでのOCI Cloud Controller Managerの使用
目的
このチュートリアル/ラボでは、2つの新しいコントロール・プレーン・ノードと2つの新しいワーカー・ノードを構成してクラスタに追加する手順を示します。チュートリアル/ラボでは、同じノードをクラスタから削除してクラスタをスケール・ダウンする方法を示します。
このシナリオでは、X.509プライベートCA証明書を使用してノード間の通信を保護します。HashiCorp Vaultシークレット・マネージャを使用するか、信頼できる認証局(CA)によって署名された独自の証明書を使用して、証明書を管理およびデプロイする他の方法があります。これらの他のメソッドは、このチュートリアルには含まれていません。
前提条件
ノート: 無料のラボ環境を使用する場合、これらの前提条件が開始ポイントとして提供されます。
Oracle Cloud Native Environmentで実行する高可用性Kubernetesクラスタの要件に加えて、次のものが必要です:
-
次の4つの追加Oracle Linuxシステムを使用:
- 2つのKubernetesコントロール・プレーン・ノード
- 2つのKubernetesワーカー・ノード
-
Load Balancerへのアクセス(無料の演習環境ではOCI Load Balancerを使用します)
-
システムには次のものが必要です。
- 少なくとも最新のOracle Linux 8 (x86_64)がインストールされ、Unbreakable Enterprise Kernelリリース6 (UEK R6)が実行されていること。
- Oracle Cloud Native Environmentをインストールするための前提条件ステップを完了しました
演習環境の設定
ノート: 無料のラボ環境を使用する場合、接続およびその他の使用手順については、Oracle Linux Lab Basicsを参照してください。
情報: 無料のラボ環境では、環境を作成する準備ができて、指定されたノードにOracle Cloud Native Environmentをデプロイします。このデプロイメントは、起動後に終了するまでに約20分から25分かかります。そのため、この実行中はステップを離れてから、演習を完了します。
特に明記しないかぎり、無料の演習環境内のすべてのステップはocne- operatorノードから実行でき、端末ウィンドウを開いてノードに接続することから開始することをお薦めします。Oracle Cloud Native Environmentのマルチノード・インストールでは、kubectl
コマンドは、演算子、コントロール・プレーン・ノードまたはkubectl
用に構成された別のシステムで実行されます。
-
端末を開き、sshを使用して ocne- operatorシステムに接続します。
ssh oracle@<ip_address_of_ol_node>
Kubernetesモジュールのインストール
重要特に明記されていないかぎり、すべての操作は ocne- operatorノードから実行されます。
無料のラボ環境では、環境およびモジュール構成の準備など、デプロイメント中に高可用性Oracle Cloud Native Environmentインストールを作成します。
-
myenvironment.yaml
ファイルを表示します。cat ~/myenvironment.yaml
無料のラボ環境のデプロイメントでは、クラスタの作成時に3つのコントロール・プレーン・ノードと5つのワーカー・ノードを使用します。
出力例:
[oracle@ocne-operator ~]$ cat ~/myenvironment.yaml 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.168:6443 master-nodes: - ocne-control01.lv.vcnf998d566.oraclevcn.com:8090 - ocne-control02.lv.vcnf998d566.oraclevcn.com:8090 - ocne-control03.lv.vcnf998d566.oraclevcn.com:8090 worker-nodes: - ocne-worker01.lv.vcnf998d566.oraclevcn.com:8090 - ocne-worker02.lv.vcnf998d566.oraclevcn.com:8090 - ocne-worker03.lv.vcnf998d566.oraclevcn.com:8090 - ocne-worker04.lv.vcnf998d566.oraclevcn.com:8090 - ocne-worker05.lv.vcnf998d566.oraclevcn.com: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 - module: helm name: myhelm args: helm-kubernetes-module: mycluster - module: oci-ccm name: myoci oci-ccm-helm-module: myhelm oci-use-instance-principals: true oci-compartment: ocid1.compartment.oc1..aaaaaaaau2g2k23u6mp3t43ky3i4ky7jpyeiqcdcobpbcb7z6vjjlrdnuufq oci-vcn: ocid1.vcn.oc1.eu-frankfurt-1.amaaaaaaw6qx2pia2xkfmnnknpk3jll6emb76gtcza3ttbqqofxmwjb45rka oci-lb-subnet1: ocid1.subnet.oc1.eu-frankfurt-1.aaaaaaaawfjs5zrb6wdmg43522a4l5aak5zr6vvkaaa6xogttha2ufsip7fq
ノードのFQDNのドメイン部分は、無料のラボ環境の各デプロイメントで一意になります。
-
Kubernetesモジュールをインストールします。
olcnectl module install --config-file myenvironment.yaml
ノート: ノードへのKubernetesのデプロイメントが完了するまでに20分から25分かかります。
出力例:
[oracle@ocne-operator ~]$ olcnectl module install --config-file myenvironment.yaml Modules installed successfully. Modules installed successfully. Modules installed successfully.
3つのモジュールが正常にインストールされたレスポンスがあるのはなぜですか。この例で使用されている
myenvironment.yaml
ファイルでは、次の3つのモジュールが定義されているためです。- module: kubernetes
- module: helm
- module: oci-ccm
これを理解しておくことが重要です。これらのステップの後半では、レスポンスが3回(
myenvironment.yaml
ファイルで定義されているモジュールごとに1回)返されるためです。 -
Kubernetesモジュールのデプロイメントを確認します。
olcnectl module instances --config-file myenvironment.yaml
出力例:
[oracle@ocne-operator ~]$ olcnectl module instances --config-file myenvironment.yaml INSTANCE MODULE STATE mycluster kubernetes installed myhelm helm installed myoci oci-ccm installed ocne-control01.lv.vcnf998d566.oraclevcn.com:8090 node installed ocne-control02.lv.vcnf998d566.oraclevcn.com:8090 node installed ocne-control03.lv.vcnf998d566.oraclevcn.com:8090 node installed ocne-worker01.lv.vcnf998d566.oraclevcn.com:8090 node installed ocne-worker02.lv.vcnf998d566.oraclevcn.com:8090 node installed ocne-worker03.lv.vcnf998d566.oraclevcn.com:8090 node installed ocne-worker04.lv.vcnf998d566.oraclevcn.com:8090 node installed ocne-worker05.lv.vcnf998d566.oraclevcn.com:8090 node installed
kubectlの設定
-
kubectl
コマンドを設定します。-
いずれかのコントロール・プレーン・ノードから構成ファイルをコピーします。
mkdir -p $HOME/.kube ssh -o StrictHostKeyChecking=no 10.0.0.150 "sudo cat /etc/kubernetes/admin.conf" > $HOME/.kube/config
出力例:
[oracle@ocne-operator ~]$ mkdir -p $HOME/.kube [oracle@ocne-operator ~]$ ssh -o StrictHostKeyChecking=no 10.0.0.150 "sudo cat /etc/kubernetes/admin.conf" > $HOME/.kube/config Warning: Permanently added '10.0.0.150' (ECDSA) to the list of known hosts.
-
kubectl
コマンドで使用する構成をエクスポートします。sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=$HOME/.kube/config echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
-
-
kubectl
が機能することを検証します。kubectl get nodes
出力例:
[oracle@ocne-operator ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION ocne-control01 Ready control-plane,master 17m v1.23.7+1.el8 ocne-control02 Ready control-plane,master 16m v1.23.7+1.el8 ocne-control03 Ready control-plane,master 15m v1.23.7+1.el8 ocne-worker01 Ready <none> 16m v1.23.7+1.el8 ocne-worker02 Ready <none> 15m v1.23.7+1.el8 ocne-worker03 Ready <none> 14m v1.23.7+1.el8 ocne-worker04 Ready <none> 15m v1.23.7+1.el8 ocne-worker05 Ready <none> 15m v1.23.7+1.el8 [oracle@ocne-operator ~]$
Oracle Cloud Infrastructure Cloud Controller Managerモジュールの準備完了の確認
続行する前に、Oracle Cloud Infrastructure Cloud Controller ManagerモジュールがOCI APIとの通信を確立するのを待つことが重要です。Oracle Cloud Infrastructure Cloud Controller Managerモジュールは、ブロック・ストレージのアタッチなどの機能を処理する各ノード上でポッドを実行します。このコントローラは、インストール後、この専用ポッドがOCI APIとの初期化、実行および通信を確認するまで、ポッドがスケジュールされないようにします。この通信が正常に確立されるまで、続行しようとすると、Kubernetesによるクラウド・ストレージまたはロード・バランサの使用が成功しなくなる可能性があります。
-
コンポーネントの
oci-cloud-controller-manager
ポッドのステータスを取得します。kubectl -n kube-system get pods -l component=oci-cloud-controller-manager
出力例:
[[oracle@ocne-operator ~]$ kubectl -n kube-system get pods -l component=oci-cloud-controller-manager NAME READY STATUS RESTARTS AGE oci-cloud-controller-manager-9d9gh 1/1 Running 1 (48m ago) 50m oci-cloud-controller-manager-jqzs6 1/1 Running 0 50m oci-cloud-controller-manager-xfm9w 1/1 Running 0 50m
-
ロール
csi-oci
ポッドのステータスを取得します。kubectl -n kube-system get pods -l role=csi-oci
出力例:
[[oracle@ocne-operator ~]$ kubectl -n kube-system get pods -l role=csi-oci NAME READY STATUS RESTARTS AGE csi-oci-controller-7fcbddd746-2hb5c 4/4 Running 2 (50m ago) 51m csi-oci-node-7jd6t 3/3 Running 0 51m csi-oci-node-fc5x5 3/3 Running 0 51m csi-oci-node-jq8sm 3/3 Running 0 51m csi-oci-node-jqkvl 3/3 Running 0 51m csi-oci-node-jwq8g 3/3 Running 0 51m csi-oci-node-jzxqt 3/3 Running 0 51m csi-oci-node-rmmmb 3/3 Running 0 51m csi-oci-node-zc287 1/3 Running 0 51m
ノート: 続行する前に、これらの両方のコマンドで
STATUS
がRunning
と表示されるまで待ちます。READY
列の値に開始済のコンテナがすべて表示されず、STATUS
列の下にあるコンテナが15分後にRunning
として表示されない場合は、ラボを再起動してください。
(オプション)新しいKubernetesノードの設定
ノート: この項のステップは、演習の初期デプロイメント中にすでに完了しているため、無料の演習環境では必要ありません。次のセクションに進んで、そこから続行してください。
スケール・アップ(ノードの追加)する場合、新しいノードでは、このチュートリアルのPrerequisites
セクションにリストされているすべての前提条件を満たす必要があります。
このチュートリアル/ラボでは、ノードocne-control04
およびocne-control05
は新しいコントロール・プレーン・ノードであり、ノードocne-worker06
およびocne-worker07
は新しいワーカー・ノードです。前提条件の他に、これらの新しいノードでは、Oracle Cloud Native Environment Platform Agentをインストールして有効にする必要があります。
-
Platform Agentをインストールして有効にします。
sudo dnf install olcne-agent olcne-utils sudo systemctl enable olcne-agent.service
-
プロキシ・サーバーを使用する場合は、CRI- Oで構成します。Kubernetesノードごとに、CRI- Oシステム構成ディレクトリを作成します。そのディレクトリに
proxy.conf
というファイルを作成して、プロキシ・サーバーの情報を追加します。sudo mkdir /etc/systemd/system/crio.service.d sudo vi /etc/systemd/system/crio.service.d/proxy.conf
-
proxy.conf
ファイルの例を使用して、環境内のプロキシ値に適切なプロキシ値を置き換えます。[Service] Environment="HTTP_PROXY=proxy.example.com:80" Environment="HTTPS_PROXY=proxy.example.com:80" Environment="NO_PROXY=.example.com,192.0.2.*"
-
docker
またはcontainerd
サービスが実行中の場合は、それらを停止してから無効化してください。sudo systemctl disable --now docker.service sudo systemctl disable --now containerd.service
X.509プライベートCA証明書の設定
新しいコントロール・プレーン・ノードおよびワーカー・ノードのX.509プライベートCA証明書を設定します。
-
新規ノードのリストを作成します。
VAR1=$(hostname -d) for NODE in 'ocne-control04' 'ocne-control05' 'ocne-worker06' 'ocne-worker07'; do VAR2+="${NODE}.$VAR1,"; done VAR2=${VAR2%,}
指定されたbashスクリプトは、オペレータ・ノードのドメイン名を取得し、スケール・アップ・プロシージャでクラスタに追加するノードのカンマ区切りリストを作成します。
-
新しいノードのプライベートCAと証明書のセットを生成します。
--byo-CA-cert
オプションを使用して既存のCA証明書の場所を指定し、--byo-CA-key
オプションを使用して既存のCAキーの場所を指定します。--nodes
オプションを使用して、新しいコントロール・プレーン・ノードおよびワーカー・ノードのFQDNを指定します。cd /etc/olcne sudo ./gen-certs-helper.sh \ --cert-dir /etc/olcne/configs/certificates/ \ --byo-ca-cert /etc/olcne/configs/certificates/production/ca.cert \ --byo-ca-key /etc/olcne/configs/certificates/production/ca.key \ --nodes $VAR2
出力例:
[oracle@ocne-operator ~]$ cd /etc/olcne [oracle@ocne-operator olcne]$ sudo ./gen-certs-helper.sh \ > --cert-dir /etc/olcne/configs/certificates/ \ > --byo-ca-cert /etc/olcne/configs/certificates/production/ca.cert \ > --byo-ca-key /etc/olcne/configs/certificates/production/ca.key \ > --nodes $VAR2 [INFO] Generating certs for ocne-control04.lv.vcnf998d566.oraclevcn.com Generating RSA private key, 2048 bit long modulus (2 primes) .............................+++++ ....................+++++ e is 65537 (0x010001) Signature ok subject=C = US, ST = North Carolina, L = Whynot, O = your-company, OU = private cloud, CN = example.com Getting CA Private Key [INFO] Generating certs for ocne-control05.lv.vcnf998d566.oraclevcn.com Generating RSA private key, 2048 bit long modulus (2 primes) ...+++++ ...........................................................+++++ e is 65537 (0x010001) Signature ok subject=C = US, ST = North Carolina, L = Whynot, O = your-company, OU = private cloud, CN = example.com Getting CA Private Key [INFO] Generating certs for ocne-worker06.lv.vcnf998d566.oraclevcn.com Generating RSA private key, 2048 bit long modulus (2 primes) ......+++++ .......................+++++ e is 65537 (0x010001) Signature ok subject=C = US, ST = North Carolina, L = Whynot, O = your-company, OU = private cloud, CN = example.com Getting CA Private Key [INFO] Generating certs for ocne-worker07.lv.vcnf998d566.oraclevcn.com Generating RSA private key, 2048 bit long modulus (2 primes) ....................................................................................+++++ .................................+++++ e is 65537 (0x010001) Signature ok subject=C = US, ST = North Carolina, L = Whynot, O = your-company, OU = private cloud, CN = example.com Getting CA Private Key ----------------------------------------------------------- Script To Transfer Certs: /etc/olcne/configs/certificates/olcne-tranfer-certs.sh ----------------------------------------------------------- [SUCCESS] Generated certs and file transfer script! [INFO] CA Cert: /etc/olcne/configs/certificates/production/ca.key [INFO] CA Key: /etc/olcne/configs/certificates/production/ca.cert [WARNING] The CA Key is the only way to generate more certificates, ensure it is stored in long term storage [USER STEP #1] Please ensure you have ssh access from this machine to: ocne-control04.lv.vcnf998d566.oraclevcn.com,ocne-control05.lv.vcnf998d566.oraclevcn.com,ocne-worker06.lv.vcnf998d566.oraclevcn.com,ocne-worker07.lv.vcnf998d566.oraclevcn.com
証明書の転送
新しく作成した証明書をオペレータノードからすべての新しいノードに転送します。
-
指定された転送スクリプトのユーザー詳細を更新します。
sudo sed -i 's/USER=opc/USER=oracle/g' configs/certificates/olcne-tranfer-certs.sh
ノート: スクリプトのデフォルト・ユーザーは
opc
であるため、チュートリアルではこのステップが必要です。このチュートリアル環境と無料演習環境の両方で、ユーザーoracle
を使用して製品をインストールするため、スクリプト内のUSER
変数を適宜更新してください。 -
証明書作成スクリプトによって生成された各node.keyの権限を更新します。
sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-control*/node.key sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-operator*/node.key sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-worker*/node.key
-
新しい各ノードに証明書を転送します。
ノートこのステップでは、ノード間にパスワードなしのSSHを構成する必要があります。この構成はこのチュートリアルの範囲外ですが、無料のラボ環境で事前構成されています。
bash -ex /etc/olcne/configs/certificates/olcne-tranfer-certs.sh
証明書を使用するためのプラットフォームエージェントの構成
前のステップでコピーした証明書を使用するように、新しい各ノードでプラットフォーム・エージェントを構成します。オペレータ・ノードからこのタスクを実行するには、ssh
でコマンドを実行します。
-
ocne-control04ノードを構成します。
ssh -o StrictHostKeyChecking=no ocne-control04 'sudo /etc/olcne/bootstrap-olcne.sh \ --secret-manager-type file \ --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \ --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \ --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \ --olcne-component agent'
出力例:
[oracle@ocne-operator olcne]$ ssh -o StrictHostKeyChecking=no ocne-control04 'sudo /etc/olcne/bootstrap-olcne.sh \ > --secret-manager-type file \ > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \ > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \ > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \ > --olcne-component agent' Warning: Permanently added 'ocne-control04,10.0.0.153' (ECDSA) to the list of known hosts. ��� olcne-agent.service - Agent for Oracle Linux Cloud Native Environments Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/olcne-agent.service.d ������10-auth.conf Active: active (running) since Tue 2022-08-30 15:29:37 GMT; 2s ago Main PID: 152809 (olcne-agent) Tasks: 8 (limit: 202294) Memory: 11.1M CGroup: /system.slice/olcne-agent.service ������152809 /usr/libexec/olcne-agent --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 Aug 30 15:29:37 ocne-control04 systemd[1]: Started Agent for Oracle Linux Cloud Native Environments. Aug 30 15:29:37 ocne-control04 olcne-agent[152809]: time=30/08/22 15:29:37 level=info msg=Started server on[::]:8090
-
ocne-control05ノードを構成します。
ssh -o StrictHostKeyChecking=no ocne-control05 'sudo /etc/olcne/bootstrap-olcne.sh \ --secret-manager-type file \ --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \ --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \ --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \ --olcne-component agent'
出力例:
[oracle@ocne-operator olcne]$ ssh -o StrictHostKeyChecking=no ocne-control05 'sudo /etc/olcne/bootstrap-olcne.sh \ > --secret-manager-type file \ > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \ > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \ > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \ > --olcne-component agent' Warning: Permanently added 'ocne-control05,10.0.0.154' (ECDSA) to the list of known hosts. ��� olcne-agent.service - Agent for Oracle Linux Cloud Native Environments Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/olcne-agent.service.d ������10-auth.conf Active: active (running) since Tue 2022-08-30 15:34:13 GMT; 2s ago Main PID: 153413 (olcne-agent) Tasks: 7 (limit: 202294) Memory: 9.1M CGroup: /system.slice/olcne-agent.service ������153413 /usr/libexec/olcne-agent --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 Aug 30 15:34:13 ocne-control05 systemd[1]: olcne-agent.service: Succeeded. Aug 30 15:34:13 ocne-control05 systemd[1]: Stopped Agent for Oracle Linux Cloud Native Environments. Aug 30 15:34:13 ocne-control05 systemd[1]: Started Agent for Oracle Linux Cloud Native Environments. Aug 30 15:34:13 ocne-control05 olcne-agent[153413]: time=30/08/22 15:34:13 level=info msg=Started server on[::]:8090
-
ocne-worker06ノードを構成します。
ssh -o StrictHostKeyChecking=no ocne-worker06 'sudo /etc/olcne/bootstrap-olcne.sh \ --secret-manager-type file \ --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \ --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \ --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \ --olcne-component agent'
出力例:
[oracle@ocne-operator olcne]$ ssh -o StrictHostKeyChecking=no ocne-worker06 'sudo /etc/olcne/bootstrap-olcne.sh \ > --secret-manager-type file \ > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \ > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \ > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \ > --olcne-component agent' Warning: Permanently added 'ocne-worker06,10.0.0.165' (ECDSA) to the list of known hosts. ��� olcne-agent.service - Agent for Oracle Linux Cloud Native Environments Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/olcne-agent.service.d ������10-auth.conf Active: active (running) since Tue 2022-08-30 15:41:08 GMT; 2s ago Main PID: 153988 (olcne-agent) Tasks: 8 (limit: 202294) Memory: 5.2M CGroup: /system.slice/olcne-agent.service ������153988 /usr/libexec/olcne-agent --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 Aug 30 15:41:08 ocne-worker06 systemd[1]: Started Agent for Oracle Linux Cloud Native Environments. Aug 30 15:41:08 ocne-worker06 olcne-agent[153988]: time=30/08/22 15:41:08 level=info msg=Started server on[::]:8090
-
ocne-worker07ノードを構成します。
ssh -o StrictHostKeyChecking=no ocne-worker07 'sudo /etc/olcne/bootstrap-olcne.sh \ --secret-manager-type file \ --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \ --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \ --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \ --olcne-component agent'
出力例:
[oracle@ocne-operator olcne]$ ssh -o StrictHostKeyChecking=no ocne-worker07 'sudo /etc/olcne/bootstrap-olcne.sh \ > --secret-manager-type file \ > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \ > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \ > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \ > --olcne-component agent' Warning: Permanently added 'ocne-worker07,10.0.0.166' (ECDSA) to the list of known hosts. ��� olcne-agent.service - Agent for Oracle Linux Cloud Native Environments Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/olcne-agent.service.d ������10-auth.conf Active: active (running) since Tue 2022-08-30 15:43:23 GMT; 2s ago Main PID: 154734 (olcne-agent) Tasks: 8 (limit: 202294) Memory: 9.1M CGroup: /system.slice/olcne-agent.service ������154734 /usr/libexec/olcne-agent --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 Aug 30 15:43:23 ocne-worker07 systemd[1]: olcne-agent.service: Succeeded. Aug 30 15:43:23 ocne-worker07 systemd[1]: Stopped Agent for Oracle Linux Cloud Native Environments. Aug 30 15:43:23 ocne-worker07 systemd[1]: Started Agent for Oracle Linux Cloud Native Environments. Aug 30 15:43:23 ocne-worker07 olcne-agent[154734]: time=30/08/22 15:43:23 level=info msg=Started server on[::]:8090
OCI Load Balancerへのアクセスおよびバックエンドの表示
Kubernetesコントロール・プレーンに複数のノードが定義されているため、Load Balancerが必要であるため、無料のラボ環境のデプロイ時に自動的に設定された構成を表示することは興味深いことです。これは、演習がHealthy
ステータスで作成されるとデプロイおよび構成される3つのノードと、次のステップでCritical
ステータスとして追加される2つのノードを示します。
-
ターミナルからLunaデスクトップに切り替える
-
「Luna Lab」アイコンを使用して、「Luna Lab」の詳細ページを開きます。
-
「OCIコンソール」リンクをクリックします。
-
Oracle Cloudコンソールのログイン・ページが表示されます。
-
User Name
およびPassword
を入力します(「資格証明」セクションの「Luna Lab」タブにあります)。 -
ハンバーガ・メニュー(左上)をクリックし、「ネットワーキング」および「ロード・バランサ」をクリックします。
-
「ロード・バランサ」ページが表示されます。
-
ドロップダウン・リストから、使用されているコンパートメントを見つけます。
-
表にリストされているLoad Balancer (ocne- load- balancer)をクリックします。
-
ページを下にスクロールし、(「リソース」セクションの左側にある)「バックエンド・セット」へのリンクをクリックします。
-
「バックエンド・セット」表が表示されます。「名前」列でocne- lb- backend- setというリンクをクリックします。
-
「バックエンド」へのリンク(「リソース」セクションの左側)をクリックします。
-
コントロール・プレーン・ノードを表すバックエンドが表示されます。
ノート 2つのバックエンド・ノードがまだKubernetesコントロール・プレーン・クラスタの一部ではないため、クリティカル- 接続に失敗しました状態です。スケールアップ・ステップの完了後にバックエンド・ノードのステータスを再確認するため、このブラウザ・タブは開いたままにしておきます。
Kubernetesノードの表示
クラスタ内で現在使用可能なKubernetesノードを確認します。3つのコントロール・プレーン・ノードと5つのワーカー・ノードがあることに注意してください。
-
ノードがすべてREADYステータスであることを確認します。
kubectl get nodes
出力例:
[oracle@ocne-operator olcne]$ kubectl get nodes NAME STATUS ROLES AGE VERSION ocne-control01 Ready control-plane,master 5h15m v1.23.7+1.el8 ocne-control02 Ready control-plane,master 5h14m v1.23.7+1.el8 ocne-control03 Ready control-plane,master 5h13m v1.23.7+1.el8 ocne-worker01 Ready <none> 5h14m v1.23.7+1.el8 ocne-worker02 Ready <none> 5h13m v1.23.7+1.el8 ocne-worker03 Ready <none> 5h12m v1.23.7+1.el8 ocne-worker04 Ready <none> 5h13m v1.23.7+1.el8 ocne-worker05 Ready <none> 5h14m v1.23.7+1.el8
デプロイメント構成ファイルへのコントロール・プレーン・ノードおよびワーカー・ノードの追加
クラスタに追加するすべてのコントロール・プレーン・ノードおよびワーカー・ノードに、完全修飾ドメイン名(FQDN)およびプラットフォーム・エージェント・アクセス・ポート(8090)を追加します。
YAMLデプロイメント構成ファイルを編集して、新しいクラスタ・ノードを含めます。master-nodes
セクションの下にコントロール・プレーン・ノードを追加し、worker-node
セクションにワーカー・ノードを追加します。
このチュートリアルの構成ファイルのファイル名はmyenvironment.yaml
で、現在、3つのコントロール・プレーンと5つのワーカー・ノードが含まれています。
-
現在の環境で3つのコントロール・プレーン・ノードと5つのワーカー・ノードが使用されていることを確認します。
cat ~/myenvironment.yaml
出力例:
... master-nodes: - ocne-control01.lv.vcneea798df.oraclevcn.com:8090 - ocne-control02.lv.vcneea798df.oraclevcn.com:8090 - ocne-control03.lv.vcneea798df.oraclevcn.com:8090 worker-nodes: - ocne-worker01.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker02.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker03.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker04.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker05.lv.vcneea798df.oraclevcn.com:8090 ...
-
新しいコントロール・プレーン・ノードおよびワーカー・ノードを
myenvironment.yaml
ファイルに追加します。cd ~ sed -i '19 i \ - ocne-control04.'"$(hostname -d)"':8090' ~/myenvironment.yaml sed -i '20 i \ - ocne-control05.'"$(hostname -d)"':8090' ~/myenvironment.yaml sed -i '27 i \ - ocne-worker06.'"$(hostname -d)"':8090' ~/myenvironment.yaml sed -i '28 i \ - ocne-worker07.'"$(hostname -d)"':8090' ~/myenvironment.yaml
-
コントロール・プレーンおよびワーカー・ノードが
myenvironment.yaml
ファイルに追加されていることを確認します。cat ~/myenvironment.yaml
抜粋例:
... master-nodes: - ocne-control01.lv.vcneea798df.oraclevcn.com:8090 - ocne-control02.lv.vcneea798df.oraclevcn.com:8090 - ocne-control03.lv.vcneea798df.oraclevcn.com:8090 - ocne-control04.lv.vcneea798df.oraclevcn.com:8090 - ocne-control05.lv.vcneea798df.oraclevcn.com:8090 worker-nodes: - ocne-worker01.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker02.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker03.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker04.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker05.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker06.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker07.lv.vcneea798df.oraclevcn.com:8090 ...
構成ファイルに、新しいコントロール・プレーン・ノード(ocne-control04
およびocne-control05
)および新しいワーカー・ノード(ocne-worker06
およびocne-worker07
)が含まれるようになりました。これは、スケールアップの完了後にクラスタ内に存在する必要があるコントロール・プレーン・ノードおよびワーカー・ノードのすべてを表します。
コントロール・プレーン・ノードおよびワーカー・ノードのスケール・アップ
-
module updateコマンドを実行します。
olcnectl module update
コマンドを--config-file
オプションとともに使用して、構成ファイルの場所を指定します。プラットフォームAPIサーバーは、構成ファイルをクラスタの状態で検証し、クラスタに追加する必要があるノードがさらに存在することを認識します。プロンプトが表示されたら、y
と入力します。ノート: 各モジュールが更新される間、ターミナル・ウィンドウのプロンプトが遅延します。無料のラボ環境では、この遅延は最大10分から15分になる場合があります。
olcnectl module update --config-file myenvironment.yaml
出力例:
[oracle@ocne-operator ~]$ olcnectl module update --config-file myenvironment.yaml ? [WARNING] Update will shift your workload and some pods will lose data if they rely on local storage. Do you want to continue? Yes Taking backup of modules before update Backup of modules succeeded. Updating modules Update successful ? [WARNING] Update will shift your workload and some pods will lose data if they rely on local storage. Do you want to continue? Yes Taking backup of modules before update Backup of modules succeeded. Updating modules Update successful ? [WARNING] Update will shift your workload and some pods will lose data if they rely on local storage. Do you want to continue? Yes Taking backup of modules before update Backup of modules succeeded. Updating modules Update successful
-
(クラウド・コンソールで) Load Balancerのバックエンド・セットに5つの正常なバックエンド・ノードが表示されていることを確認します。
-
新しいコントロール・プレーンおよびワーカー・ノードがクラスタに追加されていることを確認します。
kubectl get nodes
出力例:
[oracle@ocne-operator ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION ocne-control01 Ready control-plane,master 99m v1.23.7+1.el8 ocne-control02 Ready control-plane,master 97m v1.23.7+1.el8 ocne-control03 Ready control-plane,master 96m v1.23.7+1.el8 ocne-control04 Ready control-plane,master 13m v1.23.7+1.el8 ocne-control05 Ready control-plane,master 12m v1.23.7+1.el8 ocne-worker01 Ready <none> 99m v1.23.7+1.el8 ocne-worker02 Ready <none> 98m v1.23.7+1.el8 ocne-worker03 Ready <none> 98m v1.23.7+1.el8 ocne-worker04 Ready <none> 98m v1.23.7+1.el8 ocne-worker05 Ready <none> 98m v1.23.7+1.el8 ocne-worker06 Ready <none> 13m v1.23.7+1.el8 ocne-worker07 Ready <none> 13m v1.23.7+1.el8
新しいコントロール・プレーン・ノード(
ocne-control04
およびocne-control05
)および新しいワーカー・ノード(ocne-work06
およびocne-worker07
)がクラスタに含まれていることに注意してください。それにより、スケール・アップ操作が機能したことを確認しました。
コントロール・プレーン・ノードのスケール・ダウン
コントロール・プレーン・ノードとワーカー・ノードを個別にスケーリングできることを示すため、このステップではコントロール・プレーン・ノードをスケール・ダウン(削除)します。
-
現在の環境で5つのコントロール・プレーン・ノードと7つのワーカー・ノードが使用されていることを確認します。
cat ~/myenvironment.yaml
出力例:
... master-nodes: - ocne-control01.lv.vcneea798df.oraclevcn.com:8090 - ocne-control02.lv.vcneea798df.oraclevcn.com:8090 - ocne-control03.lv.vcneea798df.oraclevcn.com:8090 - ocne-control04.lv.vcneea798df.oraclevcn.com:8090 - ocne-control05.lv.vcneea798df.oraclevcn.com:8090 worker-nodes: - ocne-worker01.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker02.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker03.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker04.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker05.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker06.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker07.lv.vcneea798df.oraclevcn.com:8090 ...
-
クラスタを元の3つのコントロール・プレーンにスケール・ダウンするには、構成ファイルから
ocne-control04
およびocne-control05
コントロール・プレーン・ノードを削除します。sed -i '19d;20d' ~/myenvironment.yaml
-
構成ファイルに3つのコントロール・プレーン・ノードと7つのワーカー・ノードのみが含まれるようになったことを確認します。
cat ~/myenvironment.yaml
抜粋例:
... master-nodes: - ocne-control01.lv.vcneea798df.oraclevcn.com:8090 - ocne-control02.lv.vcneea798df.oraclevcn.com:8090 - ocne-control03.lv.vcneea798df.oraclevcn.com:8090 worker-nodes: - ocne-worker01.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker02.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker03.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker04.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker05.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker06.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker07.lv.vcneea798df.oraclevcn.com:8090 ...
-
モジュール更新の警告メッセージを抑止します。
force: true
ディレクティブを構成ファイルに追加することで、モジュールの更新中に確認プロンプトを回避および抑制できます。このdirective
は、定義されている各モジュールのname: <xxxx>
ディレクティブの直下に配置する必要があります。cd ~ sed -i '12 i \ force: true' ~/myenvironment.yaml sed -i '35 i \ force: true' ~/myenvironment.yaml sed -i '40 i \ force: true' ~/myenvironment.yaml
-
構成ファイルに
force: true
ディレクティブが含まれていることを確認します。cat ~/myenvironment.yaml
抜粋例:
[oracle@ocne-operator ~]$ cat ~/myenvironment.yaml 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 force: true args: container-registry: container-registry.oracle.com/olcne load-balancer: 10.0.0.18:6443 master-nodes: - ocne-control01.lv.vcn1174e41d.oraclevcn.com:8090 - ocne-control02.lv.vcn1174e41d.oraclevcn.com:8090 - ocne-control03.lv.vcn1174e41d.oraclevcn.com:8090 worker-nodes: - ocne-worker01.lv.vcn1174e41d.oraclevcn.com:8090 - ocne-worker02.lv.vcn1174e41d.oraclevcn.com:8090 - ocne-worker03.lv.vcn1174e41d.oraclevcn.com:8090 - ocne-worker04.lv.vcn1174e41d.oraclevcn.com:8090 - ocne-worker05.lv.vcn1174e41d.oraclevcn.com:8090 - ocne-worker06.lv.vcneea798df.oraclevcn.com:8090 - ocne-worker07.lv.vcneea798df.oraclevcn.com: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 - module: helm name: myhelm force: true args: helm-kubernetes-module: mycluster - module: oci-ccm name: myoci force: true oci-ccm-helm-module: myhelm oci-use-instance-principals: true oci-compartment: ocid1.compartment.oc1..aaaaaaaanr6cysadeswwxc7sczdsrlamzhfh6scdyvuh4s4fmvecob6e2cha oci-vcn: ocid1.vcn.oc1.eu-frankfurt-1.amaaaaaag7acy3iat3duvrym376oax7nxdyqd56mqxtjaws47t4g7vqthgja oci-lb-subnet1: ocid1.subnet.oc1.eu-frankfurt-1.aaaaaaaa6rt6chugbkfhyjyl4exznpxrlvnus2bgkzcgm7fljfkqbxkva6ya
-
コマンドを実行してクラスタを更新し、ノードを削除します。
注意: 完了には数分かかります。
olcnectl module update --config-file myenvironment.yaml
出力例:
[oracle@ocne-operator ~]$ olcnectl module update --config-file myenvironment.yaml Taking backup of modules before update Backup of modules succeeded. Updating modules Update successful Taking backup of modules before update Backup of modules succeeded. Updating modules Update successful Taking backup of modules before update Backup of modules succeeded. Updating modules Update successful
-
(クラウド・コンソールで) Load Balancerのバックエンド・セットに、3つの正常な(
Health = 'OK'
)ノードと2つの異常な(Health = 'Critical - Connection failed'
)ノードが表示されていることを確認します。2つのノードがクリティカル・ステータスであると表示される理由は、Kubernetesクラスタから削除されているためです。 -
プラットフォームAPIサーバーによってクラスタからコントロール・プレーン・ノードが削除されることを示します。コントロール・プレーン(
ocne-control04
およびocne-control05
)ノードが削除されていることを確認します。kubectl get nodes
出力例:
[oracle@ocne-operator ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION ocne-control01 Ready control-plane,master 164m v1.23.7+1.el8 ocne-control02 Ready control-plane,master 163m v1.23.7+1.el8 ocne-control03 Ready control-plane,master 162m v1.23.7+1.el8 ocne-worker01 Ready <none> 164m v1.23.7+1.el8 ocne-worker02 Ready <none> 163m v1.23.7+1.el8 ocne-worker03 Ready <none> 164m v1.23.7+1.el8 ocne-worker04 Ready <none> 164m v1.23.7+1.el8 ocne-worker05 Ready <none> 164m v1.23.7+1.el8 ocne-worker06 Ready <none> 13m v1.23.7+1.el8 ocne-worker07 Ready <none> 13m v1.23.7+1.el8
概要
これで、クラスタからKubernetesノードを追加および削除する方法の詳細を示すデモンストレーションが完了しました。この演習では、コントロール・プレーン・ノードとワーカー・ノードの両方を同時に更新することが実証されていますが、これは、Oracle Cloud Native Environment Kubernetesクラスタをスケール・アップまたはスケール・ダウンするための推奨アプローチではなく、本番環境では別々に実施される可能性が高いです。
詳細情報
その他の学習リソース
docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルでさらに無料の学習コンテンツにアクセスします。さらに、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerにします。
製品ドキュメントは、Oracleヘルプ・センターを参照してください。
Scale a Kubernetes Cluster on Oracle Cloud Native Environment
F30806-12
September 2022
Copyright © 2022, Oracle and/or its affiliates.