Rancherの基礎知識
Rancherは、オープンソースのエンタープライズ向けマルチクラスタKubernetes管理プラットフォームです。Rancherの主な価値は、混合クラウドとオンプレミスデータセンターでのKubernetesクラスタの集中展開と管理を可能にし、セキュリティを確保し、コンテナ化されたアプリケーションのデリバリプロセスを簡素化することです。
Rancherの主な利点は以下の通りです:
- Kubernetesの概念を深く理解する必要なく、ビジュアルインターフェースでクラスタとアプリケーションを管理できます。
- パブリッククラウド、プライベートクラウド、物理マシンなど、さまざまなデプロイ環境に対応した多クラスタの一元管理が可能です。
- 組み込みのセキュリティメカニズムと監視機能により、エンタープライズレベルの生産環境の要件を満たします。
RancherとKubernetesの違い
| 比較項目 | Kubernetes(K8s) | Rancher |
|---|---|---|
| 主要な役割 | コンテナのオーケストレーションとスケジューリングシステム | 複数のKubernetesクラスタの管理プラットフォーム |
| 管理範囲 | 単一クラスタ内のコンテナ、Pod、サービスなどのリソース | 複数のKubernetesクラスタの集中管理 |
| 使用難易度 | Pod、DeploymentなどのKubernetesの核心的な概念を理解する必要があります | ビジュアルインターフェースを使用して技術的なハードルを低減します |
| 基盤の依存関係 | 他のプラットフォームに依存せず独立して動作します | Rancher 2.xはKubernetesのスケジューリングエンジンに基づいています |
環境準備
このデプロイには4台のノードサーバーが必要です。推奨されるOSはCentOS 7.xまたはUbuntu 18.04+です。ノードの役割とIPアドレスの計画は以下の通りです:
| ノードの役割 | ノード名 | IPアドレス | 主要な機能 |
|---|---|---|---|
| Kubernetesコントロールノード | master01 | 192.168.10.14 | Kubernetesクラスタの管理、rancher-agentの実行 |
| Kubernetesワーカーノード | node01 | 192.168.10.15 | コンテナアプリケーションの実行 |
| Kubernetesワーカーノード | node02 | 192.168.10.16 | コンテナアプリケーションの実行 |
| Rancher管理ノード | rancher | 192.168.10.18 | Rancherサービスのデプロイ、管理インターフェースの提供 |
Rancherのインストールと設定
3.1 Rancherコンポーネントのインストール
Rancherのインストールは2つのノードで行います:`master01`ノードで`rancher-agent`イメージをダウンロードし、`rancher`ノードで`rancher`イメージをダウンロードしてサービスを起動します。
3.1.1 master01ノード:rancher-agentイメージのダウンロード
# rancher-agentイメージのダウンロード
docker pull rancher/rancher-agent:v2.5.7
3.1.2 rancherノード:Rancherサービスのデプロイ
# 1. rancherイメージのダウンロード(バージョンv2.5.7)
docker pull rancher/rancher:v2.5.7
# 2. Rancherコンテナの起動
docker run -d \
--restart=unless-stopped \
-p 80:80 \
-p 443:443 \
--privileged \
--name rancher \
rancher/rancher:v2.5.7
3.2 Rancherプラットフォームへのログイン
Rancherコンテナが起動したら、約1-2分待ってからブラウザでアクセスします。
- ブラウザを開き、RancherノードのIPアドレス`http://192.168.10.18`を入力します(信頼できる証明書がないため、ブラウザは「セキュリティリスク」を警告しますが、警告を無視してアクセスを続けます)。
- ページの指示に従って管理者パスワードを設定します(初回ログイン時のみ)。
- デフォルトでは英語表示ですが、ページ右下の言語選択ボックス(例:「English」)をクリックして「日本語」に切り替えます。
3.3 既存のKubernetesクラスタのインポート
Rancherの主要な機能の一つは、既存のKubernetesクラスタの管理です。ここでは、`master01`、`node01`、`node02`で構成されるKubernetesクラスタをRancherにインポートします。
- Rancherのメインインターフェースに移動し、右上の【クラスタ追加】をクリックし、【インポート】を選択します。
- 【クラスタ名】フィールドに`k8s-cluster`と入力し、【作成】をクリックします。
- 生成された3つのインポートコマンドのうち、**3番目のコマンド**(証明書チェックをバイパスする、テスト環境に適しています)を選択し、コマンド内容をコピーします。
- `master01`ノードにログインし、コピーしたコマンドを貼り付け実行します。
curl --insecure -sfL https://192.168.10.18/v3/import/5blpfrwllfmcvd28nqlmxxsvnchltgtqpgwt7smxgb8dk8htf8xxrr_c-f98qf.yaml | kubectl apply -f -
3.3.1 クラスタインポート結果の確認
# 1. 名前空間の確認(cattle-systemが存在するべきです)
kubectl get ns
期待される出力:
NAME STATUS AGE
cattle-system Active 3m24s
default Active 5d
kube-node-lease Active 5d
kube-public Active 5d
kube-system Active 5d
# 2. cattle-system名前空間のPodの確認(状態はRunningであるべきです)
kubectl get pods -n cattle-system -o wide
期待される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
cattle-cluster-agent-8644f67d7f-vsttd 1/1 Running 0 2m6s 10.244.0.9 master01 <none> <none>
3.4 Rancher監視システムのデプロイ
- インポートした`k8s-cluster`クラスタのインターフェースに移動し、【監視を有効にしてリアルタイム監視を表示】をクリックします。
- 【監視コンポーネントバージョン】ドロップダウンメニューから`0.2.1`を選択し、他のパラメータはデフォルトのままにします。
- 【監視を有効にする】をクリックします。監視コンポーネントの起動には約10分かかります。
- 監視が有効になったら、クラスタインターフェースでCPU、メモリ、Pod数などのリアルタイム指標を確認できます。
3.5 Rancherダッシュボードを用いたKubernetesクラスタの管理(Nginxサービスの作成を例に)
3.5.1 ステップ1:名前空間(Namespace)の作成
- `k8s-cluster`クラスタのダッシュボードインターフェースに移動し、【ダッシュボード】をクリックします。
- 左側のメニューから【Namespaces】をクリックし、右側の【Create】をクリックします。
- 【Name】フィールドに`dev`と入力し、【Description】は任意で入力します(例:「開発環境の名前空間」)。
- 右下の【Create】をクリックして名前空間を作成します。
3.5.2 ステップ2:Deploymentリソースの作成
- 左側のメニューから【Deployments】をクリックし、右側の【Create】をクリックします。
- 基本設定:
- 【Namespace】ドロップダウンメニューから`dev`を選択します。
- 【Name】フィールドに`nginx-dev`と入力します。
- 【Replicas】フィールドに`3`と入力します(3つのPodレプリカを作成します)。
- コンテナ設定(【Container】タブをクリック):
- 【Container Image】フィールドに`nginx:1.14`と入力します。
- 【Pull Policy】ドロップダウンメニューから`IfNotPresent`を選択します。
- ラベル設定:
- 【Pod Labels】下の【Add Label】をクリックし、【Key】に`app`、【Value】に`nginx`と入力します。
- 【Labels and Annotations】下の【Add Label】をクリックし、【Key】に`app`、【Value】に`nginx`と入力します。
- 右下の【Create】をクリックしてDeploymentを作成します。
3.5.3 ステップ3:Serviceリソースの作成
- 左側のメニューから【Services】をクリックし、右側の【Create】をクリックします。
- サービスタイプとして【Node Port】を選択します。
- 基本設定:
- 【Namespace】ドロップダウンメニューから`dev`を選択します。
- 【Name】フィールドに`nginx-dev`と入力します。
- ポート設定:
- 【Port Name】フィールドに`nginx`と入力します。
- 【Listening Port】フィールドに`80`と入力します。
- 【Target Port】フィールドに`80`と入力します。
- 【Node Port】フィールドに`30180`と入力します。
- Podの関連付け(【Selectors】タブをクリック):
- 【Key】に`app`、【Value】に`nginx`と入力します。
- 右下の【Create】をクリックしてServiceを作成します。
3.5.4 ステップ4:Nginxサービスのアクセス確認
- 【Services】インターフェースに移動し、`nginx-dev`サービスをクリックし、【Node Port】が`30180/TCP`であることを確認します。
- ブラウザを開き、任意のKubernetesワーカーノードのIPアドレスとノードポート(例:`http://192.168.10.15:30180`)を入力します。
- ページにNginxのデフォルトのウェルカムページが表示されれば、サービスの作成が成功しています。