はじめに
前回の記事では、Terraformを使用してAWS上にEC2インスタンスを構築し、RKE2を用いてKubernetesクラスターとRancher Serverをセットアップする手順を解説しました。
今回の記事では、前回構築したRancherを活用して、複数のKubernetesクラスターを管理する方法を紹介します。
本記事の内容
- RancherからEKSクラスターを作成する方法
- 既存のKubernetesクラスターをRancherにインポートする方法
- RancherでNode数を管理する方法
- RancherからKubernetesクラスターをアップグレードする方法
- RancherのGUIからnginxをデプロイする方法
概要
本記事では、Rancherのダッシュボードを活用して、複数クラスターの構築・管理を行う手順を説明します。
前提条件
- Rancher Serverが構築済みであること
- Rancherのダッシュボードにログインできていること
構築イメージ
複数クラスターの構築イメージは以下のようになります。管理対象クラスターのセットアップ方法は後ほど解説します。
管理対象クラスターの追加
RancherからEKSクラスターを作成
Rancher Serverにログインし、ホーム画面のサイドバーからクラスター管理画面(Cluster Management)に移動します。
まずはRancherからAWS環境にアクセスできるよう、AWSの認証情報を登録します。
Cloud Credentialsを選択して、クラウドの認証情報を管理する画面に遷移します。
Createを選択し、クラウドプロバイダーの選択画面に遷移します。
Amazonを選択し、AWSのクレデンシャル情報を入力します。なお、今回使用するAWSのIAMユーザーにはAdministrator Access権限をアタッチしています。
- Credential Name: 任意の名称
- Access Key: アクセスキー
- Sercret Key: シークレットキー
AWSの認証情報を保存します。これでRancherからAWSアカウント上のリソースを操作できるようになりました。
続いて、クラスター作成メニュー画面でAmazon EKSを選択します。
クラスター初期設定画面で必要な項目を入力し、Createを押下します。
- クラスター名
- リージョン:us-east-1を選択
- Kubernetes Version: 1.30※1
- Instance Type: t3.medium
- スケール設定
- Desired ASG Size: 2
- Minimum ASG Size: 2
- Maximum ASG Size: 2
※1: あとでRancherのダッシュボードからクラスターのアップグレードをするため、最新よりひとつ前のバージョンを選択しています。
クラスターの作成が完了したら、サイドバーからEKSクラスターのダッシュボードに遷移します。
Nodeを選択すると、クラスター内のNodeの情報を閲覧できます。
これでEKSクラスターの構築が完了しました。このように、Rancherのダッシュボードから簡単にEKSクラスターを構築することができます。また、構築後もRancherの画面UIからNodeを操作することができます。
既存のKubernetesクラスターをRancherにインポートする
クラスターの概要
今回は、以下の構成でKubernetesクラスターを構築し、Rancherにインポートします:
- Control Plane:3台
- Worker Node:2台
既存のKubernetesクラスターをRancherにインポートすることで、Rancherの管理下で監視・操作が可能になります。
前提条件
Terraformを利用して、以下の設定を含むEC2インスタンスを5台デプロイします:
- OS:Ubuntu 24.04
- 各インスタンスのセキュリティグループ設定が完了していること(ポート443, 9345などが開放済み)
Terraformのコードはこちらを使用します。
Kubernetesディストリビューションは前回同様RKE2を使用します。
Terraformを実行し、AWS上にリソースを作成します:
$ terraform init
$ terraform apply
1. Control Planeの構築
Control Planeの構築手順は前回の記事で詳しく説明しています。
以下をご参照ください: RKE2でControl Planeを構築する方法
2. Worker Nodeの構築
ここでは、Worker Nodeを追加する手順を解説します。
参考:公式ドキュメント(Linux Agent (Worker) Node Installation)
Worker Node用にデプロイしたEC2インスタンスにSSHでログインします:
IPアドレスはTerraformのoutput「worker_node_public_ips」に出力されます。
$ ssh -i <YOUR_INSTANCE_KEY> ubuntu@<WORKER_NODE_PUBIC_IP>
RKE2エージェントのインストール
以下のコマンドを実行して、RKE2エージェントをインストールします:
$ curl -sfL https://get.rke2.io | sudo INSTALL_RKE2_TYPE="agent" sh -
$ sudo systemctl enable rke2-agent.service
RKE2エージェントの設定
設定ファイルを作成し、Control Planeと接続するための情報を記述します:
$ sudo mkdir -p /etc/rancher/rke2/
$ sudo vi /etc/rancher/rke2/config.yaml
設定内容(例):
server: https://<NLB_DNS_NAME>:9345
token: <TOKEN_FROM_SERVER>
※TOKEN_FROM_SERVERはControl Planeで設定したtokenと同じ
Worker Nodeを起動します。
$ sudo systemctl start rke2-agent.service
ノードの状態確認
Control Plane用のインスタンスにSSHでログインし、ノードの状態を確認します。
$ kubectl get nodes
Worker Nodeが正常に表示されれば、クラスターの構築は完了です。
3. Rancherにクラスターをインポートする
構築したKubernetesクラスターをRancherにインポートします。
- Rancher UIにアクセスし、サイドバーからクラスター管理画面に遷移します。
- Import Existingを選択します。
- Cluster Import画面で「Generic」を選択します。
- クラスター名を入力し、Createボタンを押下します。
- クラスターを構築したEC2インスタンスにSSHでログインし、RancherのUI画面に表示されたkubectl applyコマンドを実行してください。
$ kubectl apply -f <AUTO_GENERATED_MANIFEST>
Rancherは管理対象クラスターを識別するために、cluster-agentというエージェントを利用します。このエージェントは、RancherのUIで自動生成されるマニフェストを対象クラスターに適用することで起動します。
- cluster-agentが正常に起動すると、Rancherはcluster-agentを通じてクラスターを認識します。Rancherのサイドバーからクラスターの詳細画面に遷移できるようになります。
Nodesを選択すると、事前に作成した通り、Control Planeが3台、Worker Nodeが2台稼働していることを確認できます。これで、KubernetesクラスターをRancherにインポートして、クラスターを管理できるようになりました。
Rancherを使ったクラスター管理
Node数の調整
連携したKubernetesクラスターをRancherの画面上から操作してみます。
- サイドバーからクラスター管理画面に遷移し、先ほど作成したEKSクラスターを選択します。
- Edit Configを選択してクラスター設定の編集画面に遷移します。
- Node Groupsのgroup1でAutoScalingGroupのスケール数を引き上げて保存します。すると、クラスターの更新が開始されます。
- Desired ASG Size: 5
- Maximum ASG Size: 5
- クラスター更新完了後、全てのNodeがActive状態になったことを確認します。
これで、Rancherの操作画面からクラスターのNode数を増やすことができました。
続いて、増やしたNode数を減らしてみます。
- 先ほどと同じ手順でEKSクラスターのクラスター設定編集画面に遷移し、今度はASGのスケール数を引き下げます。
- Desired ASG Size: 3
- クラスター更新完了後、指定したDesired Sizeの数までNode数が減少したことを確認します。
このように、Rancherからクラスター内で稼働するNode数を調整することが可能です。
※Node数の調整はRancherのUIから作成したクラスターのみ利用可能です。インポートしたクラスターはRancherから操作できないため、Node数を増減させることができません。
公式ドキュメント: Node Options Available for Each Cluster Creation Option
クラスターのアップグレード
EKSクラスターのアップグレード
RancherからKubernetesクラスターのバージョンをアップグレードすることができます。
- サイドバーからクラスター管理画面に遷移し、EKSクラスターのEdit Configを選択します。
- 編集画面内のプルダウンからKubernetesの新しいバージョンを指定して保存します。
- クラスターの更新が開始されます。バージョンアップ完了までおよそ10分ほどかかります。
- AWSのマネジメントコンソールでEKSの画面に遷移すると、EKSクラスターが更新状態になっていることを確認できます。
- クラスターの更新が完了すると、EKSクラスターのバージョンが1.31に更新されていることが確認できます。
インポートしたクラスターのアップグレード
続いて、先ほどインポートしたクラスターもアップグレードしてみます。
- EKSクラスターの時と同じ手順で、クラスター管理画面のEdit Configからクラスター設定情報の編集画面に遷移します。
- 編集画面でKubernetesの新しいバージョン(今回は1.31)を選択して保存します。
- クラスターの更新が完了すると、Kubernetes Versionの表示が指定したバージョンに更新されていることが確認できます。これで、インポートしたクラスターのアップグレードは完了です。
このように、Rancherを利用すれば、Kubernetesクラスターのバージョンアップを簡単かつ効率的に実施できます。また、クラスター一覧画面で各クラスターのバージョンが一目で確認できるため、どのクラスターに更新が必要かを即座に把握することができます。これにより、複数クラスターのバージョン管理がシンプルになり、運用負荷を軽減することができます。
ワークロード管理
RancherのWeb UIから管理対象クラスター内にPodをデプロイしてみます。
- サイドバーからインポートしたクラスターのダッシュボードに遷移します。
- Workloads内のDeploymentsを選択し、Deployments画面内でCreateを選択します。
- Deploymentの設定画面でnginxのPodを6つ起動する設定を入力します。
- Createボタンを押下し、しばらくするとnginxのPodが6つ起動します。
今度はnginxのPodのレプリカ数を減らしてみましょう。
- Deployment一覧画面で先ほど作成したnginx-demo-deploymentを選択し、Edit Configで設定編集画面に遷移します。
- 編集画面でreplicasを3に変更して保存します。
- Deploymentの更新が完了すると、nginxのPod数が指定した数まで減少します。
RancherのGUIを活用すれば、Kubernetesクラスター内のリソース設定を直感的に管理できます。マニフェストファイルを一から作成する必要がなく、UI画面上で簡単にリソースの作成や編集が可能です。また、GUIでの操作に加え、必要に応じてYAMLファイルを直接編集して詳細な設定を行うこともできます。
まとめ
Rancherを導入することで、ブラウザ上から複数のKubernetesクラスターを効率的に管理できます。特にマルチクラスター環境の運用を効率化するため、Rancherは強力なツールとなります。
次回の記事では、Rancherのモニタリング機能について詳しく解説しますので、ご期待ください。