Rancherのインストールと設定:Kubernetesクラスタ管理の実践

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分待ってからブラウザでアクセスします。

  1. ブラウザを開き、RancherノードのIPアドレス`http://192.168.10.18`を入力します(信頼できる証明書がないため、ブラウザは「セキュリティリスク」を警告しますが、警告を無視してアクセスを続けます)。
  2. ページの指示に従って管理者パスワードを設定します(初回ログイン時のみ)。
  3. デフォルトでは英語表示ですが、ページ右下の言語選択ボックス(例:「English」)をクリックして「日本語」に切り替えます。

3.3 既存のKubernetesクラスタのインポート

Rancherの主要な機能の一つは、既存のKubernetesクラスタの管理です。ここでは、`master01`、`node01`、`node02`で構成されるKubernetesクラスタをRancherにインポートします。

  1. Rancherのメインインターフェースに移動し、右上の【クラスタ追加】をクリックし、【インポート】を選択します。
  2. 【クラスタ名】フィールドに`k8s-cluster`と入力し、【作成】をクリックします。
  3. 生成された3つのインポートコマンドのうち、**3番目のコマンド**(証明書チェックをバイパスする、テスト環境に適しています)を選択し、コマンド内容をコピーします。
  4. `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監視システムのデプロイ

  1. インポートした`k8s-cluster`クラスタのインターフェースに移動し、【監視を有効にしてリアルタイム監視を表示】をクリックします。
  2. 【監視コンポーネントバージョン】ドロップダウンメニューから`0.2.1`を選択し、他のパラメータはデフォルトのままにします。
  3. 【監視を有効にする】をクリックします。監視コンポーネントの起動には約10分かかります。
  4. 監視が有効になったら、クラスタインターフェースでCPU、メモリ、Pod数などのリアルタイム指標を確認できます。

3.5 Rancherダッシュボードを用いたKubernetesクラスタの管理(Nginxサービスの作成を例に)

3.5.1 ステップ1:名前空間(Namespace)の作成

  1. `k8s-cluster`クラスタのダッシュボードインターフェースに移動し、【ダッシュボード】をクリックします。
  2. 左側のメニューから【Namespaces】をクリックし、右側の【Create】をクリックします。
  3. 【Name】フィールドに`dev`と入力し、【Description】は任意で入力します(例:「開発環境の名前空間」)。
  4. 右下の【Create】をクリックして名前空間を作成します。

3.5.2 ステップ2:Deploymentリソースの作成

  1. 左側のメニューから【Deployments】をクリックし、右側の【Create】をクリックします。
  2. 基本設定:
    • 【Namespace】ドロップダウンメニューから`dev`を選択します。
    • 【Name】フィールドに`nginx-dev`と入力します。
    • 【Replicas】フィールドに`3`と入力します(3つのPodレプリカを作成します)。
  3. コンテナ設定(【Container】タブをクリック):
    • 【Container Image】フィールドに`nginx:1.14`と入力します。
    • 【Pull Policy】ドロップダウンメニューから`IfNotPresent`を選択します。
  4. ラベル設定:
    • 【Pod Labels】下の【Add Label】をクリックし、【Key】に`app`、【Value】に`nginx`と入力します。
    • 【Labels and Annotations】下の【Add Label】をクリックし、【Key】に`app`、【Value】に`nginx`と入力します。
  5. 右下の【Create】をクリックしてDeploymentを作成します。

3.5.3 ステップ3:Serviceリソースの作成

  1. 左側のメニューから【Services】をクリックし、右側の【Create】をクリックします。
  2. サービスタイプとして【Node Port】を選択します。
  3. 基本設定:
    • 【Namespace】ドロップダウンメニューから`dev`を選択します。
    • 【Name】フィールドに`nginx-dev`と入力します。
  4. ポート設定:
    • 【Port Name】フィールドに`nginx`と入力します。
    • 【Listening Port】フィールドに`80`と入力します。
    • 【Target Port】フィールドに`80`と入力します。
    • 【Node Port】フィールドに`30180`と入力します。
  5. Podの関連付け(【Selectors】タブをクリック):
    • 【Key】に`app`、【Value】に`nginx`と入力します。
  6. 右下の【Create】をクリックしてServiceを作成します。

3.5.4 ステップ4:Nginxサービスのアクセス確認

  1. 【Services】インターフェースに移動し、`nginx-dev`サービスをクリックし、【Node Port】が`30180/TCP`であることを確認します。
  2. ブラウザを開き、任意のKubernetesワーカーノードのIPアドレスとノードポート(例:`http://192.168.10.15:30180`)を入力します。
  3. ページにNginxのデフォルトのウェルカムページが表示されれば、サービスの作成が成功しています。

タグ: Kubernetes rancher container-orchestration cluster-management Docker

5月23日 08:24 投稿