NIFCLOUD(以下ニフクラ)で Rancher を使って Kubernetes クラスタを構築してみたのでその手順を紹介します。今回は Rancher のニフクラ連携の検証と Rancher 自体を早く試してみたかったのでシングルサーバー構成で構築しました。Rancherサーバー自体の冗長化はドキュメントで詳しく解説されているのでそちら(Rancher: HA Install)をご覧ください。
注意事項
- 当記事を参考にした際の損害について執筆者は一切の責任を負わないものとします
- 検証用 Rancher 環境の構築手順なので本番に適用する際には別途詳細に検討してください
説明すること
- ニフクラの簡単な設定
- シングル構成の Rancher サーバーの構築方法
- Rancher を使ってニフクラ上に Kubernetes クラスタをデプロイする方法
検証環境
-
Rancher:
v2.1.4
-
Docker:
18.09.0
-
docker-machine-driver-nifcloud:
v0.0.6
手順
事前準備
- ファイアウォールグループを作成してください
- 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クラスタが同一ファイアウォールグループだったりと省略した構成ですが基本は抑えてあるので応用はしやすいと思います。