ニフクラで Rancher を使って Kubernetes クラスタを構築してみた(シングルサーバー)


NIFCLOUD(以下ニフクラ)で Rancher を使って Kubernetes クラスタを構築してみたのでその手順を紹介します。今回は Rancher のニフクラ連携の検証と Rancher 自体を早く試してみたかったのでシングルサーバー構成で構築しました。Rancherサーバー自体の冗長化はドキュメントで詳しく解説されているのでそちら(Rancher: HA Install)をご覧ください。

注意事項

  • 当記事を参考にした際の損害について執筆者は一切の責任を負わないものとします
  • 検証用 Rancher 環境の構築手順なので本番に適用する際には別途詳細に検討してください

説明すること

  • ニフクラの簡単な設定
  • シングル構成の Rancher サーバーの構築方法
  • Rancher を使ってニフクラ上に Kubernetes クラスタをデプロイする方法

検証環境

手順

事前準備

  • ファイアウォールグループを作成してください
    • Rancher は 80 と 443 アクセスが必要なのでこの2つだけは開けておいてください
    • また ssh で接続する際のポートも開けてある必要があります
    • 本記事では rancherfw という名前で設定してあります
  • SSH Key を作成しておいてください
  • ニフクラコンパネの右上で east-2 を指定してください

プライベートLAN の作成

ニフクラではサーバーなどを作成する際に自動的にグローバルIPとプライベートIPが付与されます。このとき、プライベート側は既定ではニフクラ内の共通なプライベートLANに接続されますが、ここでは自分専用のプライベートLANを作成し、それを利用します。

ニフクラのコントロールパネルのメニューから「ネットワーク」画面に移動し「プライベートLAN作成」を選択します。

プライベートLAN作成の設定画面が出てくるので必要な情報を埋めていきます。今回は下記内容で設定しました。料金プランは適切なものを選択してください(以降省略します)。作成が完了するとネットワーク画面上に ranchercluster プライベートLANが作成されたことを確認できます。

Index Value
プライベートLAN名 ranchercluster
ゾーン east-21
CIDR 192.168.0.0/24
料金プラン 月額 or 従量

プライベートLANでのDHCPの設定

Rancher を使ってクラスタをデプロイする際にここで設定したプライベートLANを使うように設定することになりますが、DHCPを設定しておくとプライベートLAN内でのIP付与が自動的に行われ扱いやすくなるのでここで設定します。

今回はプライベートLANが 192.168.0.0/24 の範囲内なので次のようにプライベートIPの用途を定義します。

IP 用途
192.168.0.1 Rancher サーバー
192.168.0.2
~
192.168.0.10
予備
192.168.0.11
~
192.168.0.253
Kubernetes クラスタ
192.168.0.254 ルーター

ここで、ルーターはプライベートLANに設定するルーターのことで、このルーターにDHCPコンフィグを登録します。

まずはDHCPコンフィグを作成します。「ネットワーク」画面の当該部分を選択します。

遷移したDHCPコンフィグページで「DHCPコンフィグ作成」を選択します。

DHCPの作成画面に映るので必要な情報を入力します。この設定はKubernetesクラスタの各ノードが利用するものなので上記プライベートIPの用途定義表を見て次のように設定して作成します。作成されたコンフィグのIDを控えておきます。dconf-ZZZZZZZZ という形式になります。

Index Value
開始IPアドレス 192.168.0.11
終了IPアドレス 192.168.0.253

DHCPが有効なルーターの作成

DHCPコンフィグを適用するルーターを作成します。「ネットワーク」画面から「ルーター作成」を選択します。

まず、基本設定は次のように設定します。

Index Value
ルーター名 rancherrouter
ゾーン east-21
タイプ router.small(10ルール)

ネットワーク設定は次のようにします。

Index Value
ネットワーク ranchercluster(192.168.0.0/24)
IPアドレス(任意) 192.168.0.254
DHCP 有効
DHCPコンフィグ 上記で生成したコンフィグのID
DHCPオプション なし

ファイアウォールの設定をします。事前準備で作成したものを設定してください。

Index Value
ファイアウォール rancherfw

以上の設定が終わったら確認して作成してください。作成にはしばらく時間がかかります。成功すると次の図のようになります。

Rancher 用サーバーの作成

Rancher 用のサーバーを作成します。コンピューティングからサーバーメニューに移動し、サーバー作成を選択します。

イメージ選択とゾーン・サーバータイプは次のようにしました。設定できたら、確認して作成してください。

Index Value
イメージ名 Ubuntu Server 18.04 LTS
ゾーン east-21
タイプ small

サーバー設定は次のとおりです。

Index Value
サーバー名 rancherServer
SSHキー 準備で作成したもの
ファイアウォール 準備で作成したもの

特にネットワークは以下のとおりです。

Index IPアドレス
グローバル 自動割り当て
プライベート ranchercluster 指定する 192.168.0.1

インフラの作成はここまでです。以降は Rancher の構築に入ります。

Rancher サーバーの起動

Rancherのドキュメントに書いてある通りにすればシングルサーバーであれば簡単に作成することができます。

まず、先ほど作成した rancherServer にログインします。rancher は docker 化されているので、まずは Docker を導入します。

sudo apt update -y && sudo apt upgrade -y 
sudo apt install curl -y
curl -fsSL https://get.docker.com | sudo sh

次に、ufw で必要なポートを許可します。

sudo ufw allow 80
sudo ufw allow 443

これで Rancher を起動できます。

sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

公開しているIPにアクセスすれば Rancher の初期設定画面にアクセスできます。URLを入力する部分がありますが、ドメインを設定していればそれを入力してください、そうでなければ初期状態でIPが入力されているのでそのまま進んでください。後は流れに沿って初期PWなどを設定すれば初期設定は終わりです(最初に聞かれるデフォルトパスワードは admin になっています)。

ニフクラドライバを追加する

ニフクラにデプロイするためにニフクラ用のドライバを追加します。Node Drivers メニューから Add driver を選択します。

ニフクラのNode Driver は Unofficial なものが Git: heriet/docker-machine-driver-nifcloudで公開されているのでこちらを利用します。

Download URL に https://github.com/heriet/docker-machine-driver-nifcloud/releases/download/0.0.6/docker-machine-driver-nifcloud だけ入力し、あとは空白で大丈夫です。

Node Template を作成する

Kubernetes クラスタを作成するためのテンプレートを作成します。画面右上のユーザーアイコンから 「Node Template」を選択して Node Template の画面に遷移します。Add Template を選択すれば作成画面に移れます。まず、最初にクラウドのアイコンがありますが、追加されたNifcloudを選択し、次の項目を埋めていきます。変更箇所だけをここで説明します。

Index Value
accessKey ニフクラコンパネで確認
availabilityZone east-21
instanceType small(適宜)
privateNetworkId ニフクラで作成したもの
region jp-east-2
secretAccessKey ニフクラコンパネで確認
securityGroup 準備で作成したもの
usePrivateDhcp checked
usePrivateIp checked
Name Sample(このテンプレートの名前)

Engine Option の設定を下記で変更してください。

Index Value
Docker Install URL https://get.docker.com

Kubernetes クラスタを作ってみる

まず、Clusters から Add Cluster を選択します。

下にスクロールし、次のように設定します。

Index Value
Cluster Name Sample-Cluster

Node Pools は次のようにします。

NamePrefix Count Template etcd Control Plane Worker
master 1 Sample [x] [x] [ ]
worker 1 Sample [ ] [ ] [x]

設定できたら Create を選択してしばらく待ちます。Rancher のサーバーで Rancher の起動しているコンテナのログを見ておくとエラーが起きたときに気が付きやすくなります。あるいは、クラスタNodeのページに行くと進捗を確認できるので両方開いておきましょう。

クラスタのトップ画面が次のようになれば成功です。

まとめ

ニフクラでもRancherを使ってKubernetesクラスタを構築することができました。ニフクラ用のDocker Machine DriverがあるのでRancherの利便性を享受できます。今回はRancherサーバーは冗長化されておらず、またRancherサーバーとKubernetesクラスタが同一ファイアウォールグループだったりと省略した構成ですが基本は抑えてあるので応用はしやすいと思います。