Edited at

Rancher Kubernetes Engine(RKE) & Rancher 2.0 Technical Preview on Fujitsu K5

More than 1 year has passed since last update.

GKE、AKS、EKS等、kubernetesのマネージドサービスが海外の大手クラウドベンダーが展開する中、Rancher LabsからRancher Kubernetes Engine(RKE)がリリースされました。

RKEは、KopsやKubesprayのように仮想サーバやオンプレミス環境にkubernetesクラスタ環境を簡単かつ高速に構築できるツールです。

kubernetesのマネージドサービスを実施している国内クラウドは2017年12月時点では無いので、このRKEを利用して富士通K5にkubernetesクラスタを構築して、そのkubernetesクラスタをRancher2.0 Technical Preview版でインポートしてみたいと思います。

image.png


事前準備

今回は、富士通K5の30日間無料トライアルを申し込みました。

「K5 30日間無料トライアル」

まず申し込みに先立って、「FUJITSU MetaArc Marketplace」への登録が必須となります。

「FUJITSU MetaArc Marketplace」

必要事項をフォーム入力して、メール受信、担当者からの電話連絡後、30日間無料トライアル開始となりますので、開始まで時間を要します。


環境構築


1.K5ポータルとIaaSポータル

ブラウザを起動して、K5ポータルにアクセスします。

K5ポータル

右上の[Login]ボタンをクリックします。

image.png

申し込み後のメールに記載されている「契約番号」、「ユーザ名」と申し込み時に作成した「パスワード」を入力して[ログイン]ボタンをクリックします。

image.png

[IaaSポータル]ボタンをクリックします。

image.png

IaaSダッシュボードが表示されます。

image.png


2.仮想ルータと仮想ネットワークの構築

K5はOpenStackベースのマネージドサービスであるため、いきなり仮想サーバを構築して利用はできません。まずは、ネットワーク環境の構築が必須となります。

デザインパターンが公式に用意されているので利用することをお勧めします。今回は、インターネット接続パターンをベースとします。


ネットワークの作成


仮想ルータの作成

1.「ネットワーク」-「仮想ルータ」画面で、画面右上の「+」ボタンをクリックします。

image.png

2.「新規ルータ作成」画面で、以下の項目を入力し、「作成」ボタンをクリックします。

項目
必須
設定値
内容

AZ
必須
jp-west-2a
システムを設置するアベイラビリティゾーンを設定してください。

仮想ルータ名
必須
rke-router
仮想ルータ名を入力してください。

image.png


仮想ルータにゲートウェイ設定

1.「仮想ルータ」画面で、作成した仮想ルータの「アクション」-「ゲートウェイ設定」メニューで、仮想ルータを接続させる「外部仮想ネットワーク」(インターネット側のネットワーク)を選択し、「設定」ボタンをクリックします。

image.png

項目
必須
設定値
内容

外部仮想ネットワーク
必須
inf_az1_ext-net03
複数の外部仮想ネットワークから1つ選択

image.png


内部ネットワーク作成

1.「ネットワーク」-「仮想ネットワーク」画面で、画面右上の「+」ボタンをクリックします。

image.png

2.「仮想ネットワーク作成」画面で、以下の項目を入力し、「作成」ボタンをクリックします。

項目
必須
設定値
内容

AZ
必須
jp-west-2a AZ
システムを設置するアベイラビリティゾーンを設定してください。

仮想ネットワーク名
必須
rke-network
仮想ネットワーク名を入力してください。

管理状態
必須
UP
ここでは "UP" で設定してください。

image.png

項目
必須
設定値
内容

サブネット作成
必須
あり
ここでは "あり" で設定してください。

サブネット名
必須
rke-subnet
サブネット名を入力してください。

仮想ネットワークアドレス
必須
192.168.0.0/24
CIDR形式で入力してください。

ゲートウェイ
推奨
あり
ここでは "あり" で設定してください。

ゲートウェイIP
推奨
192.168.0.1
必須ではありませんが、設定してください。※この後の設定で使用します。

image.png

項目
必須
設定値
内容

DHCP有効
推奨
あり
必須ではありませんが、設定してください。

IPアドレス割当プール
任意
-
必要に応じて設定してください。

DNSサーバ
推奨
133.162.145.9
133.162.145.10

K5 IaaS機能説明書のP271に各リージョンごとのDNSサーバのIPアドレスが記載されているので参照する必要があります。

追加のルート設定
任意
-
CIDR形式の宛先(Destination)と、その宛先へ接続するルータのIPアドレス(Nexthop)を設定します。

image.png

image.png

4.作成された仮想ネットワークが一覧に表示されることを確認します。

image.png


仮想ルータにサブネットをアタッチ

1.「ネットワーク」-「仮想ルータ」画面で、作成した仮想ルータをクリックします。

image.png

2.「仮想ルータ詳細」画面で、「インターフェース」の項の右上にある「+」ボタンをクリックします。

image.png

3.「インタフェース設定」画面で、以下の項目を入力し、「追加」ボタンをクリックします。

項目
必須
設定値
内容

サブネット
必須
rke-router
内部ネットワーク作成の際に設定したサブネットを選択してください。

IPアドレス
必須
192.168.0.1
内部ネットワーク作成の際に設定したゲートウェイIPを設定してください。

image.png

4.作成した設定がインターフェースの一覧に表示されることを確認します。

image.png


グローバルIPアドレス確保

1.「ネットワーク」-「グローバルIP」と選択した画面で、画面右上の「+」ボタンをクリックします。

image.png

2.グローバルIPプールの選択を行う画面が表示されます。グローバルIPアドレスの割当対象(仮想サーバまたは仮想ルータ)が接続する

グローバルIPプール(外部ネットワーク)を選択します。

今回は、仮想ルータのゲートウェイに設定した外部ネットワーク「inf_az1_ext-net03」を選択し、「次へ」をクリックします。

image.png

3.「network:router_interface(192.168.0.1) rke-router」を選択し、「次へ」をクリックします。

image.png

4.「設定」をクリックします。

image.png


3.セキュリティグループとキーペア


セキュリティグループの設定


セキュリティグループ作成

1.「ネットワーク」-「セキュリティグループ」画面で、画面右上の「+」ボタンをクリックします。

image.png

2.「セキュリティグループ作成」画面で、以下の項目を入力し、「次へ」、「作成」とボタンをクリックします。

項目
必須
設定値
内容

サブネット
必須
rke-network
セキュリティグループ名を入力してください。

IPアドレス
任意
-
セキュリティグループに対する説明事項を入力してください。

image.png

image.png


ルールの編集

1.「ネットワーク」-「セキュリティグループ」画面で、作成したセキュリティグループ「rke-security」の「アクション」から「ルール管理」をクリックします。

image.png

2.「ルール管理」画面で、以下の2つのルールを削除します。各ルールの「アクション」にある「削除」ボタンで削除してください。

方向
Ethernetタイプ
IPプロトコル
ポート範囲
接続先

egress
IPv6
-
-
-

igress
IPv4
-
-
-

3.「セキュリティグループルール管理」画面で、「ルールの追加」ボタンをクリックします。

image.png

4.「ルールの追加」ポップアップが表示されるので、以下のルールを追加します。

ルール
方向
接続先
CIDR

ALL TCP
受信
CIDR
0.0.0.0/0

ALL TCP
送信
CIDR
0.0.0.0/0

ALL UDP
受信
CIDR
0.0.0.0/0

ALL UDP
送信
CIDR
0.0.0.0/0

image.png


キーペアの作成

1.「コンピュート」-「キーペア」画面で、画面右上の「+」ボタンをクリックします。

image.png

2.「キーペア」画面で、以下の項目を入力し、「次へ」、「作成」とボタンをクリックします。

項目
必須
設定値
内容

キーペア名
必須
rke-keypair
キーペア名を入力してください。

AZ
必須
jp-west-2a
システムを設置するアベイラビリティゾーンを設定してください。

image.png

image.png

3.「rke-keypair.pem」を保存しますかというメッセージが表示されますので、保存します。このファイルは、仮想サーバにログインする際の ssh鍵になります。取り扱いには厳重に注意してください。キーペアは、なくした場合に再発行できません。キーペアをなくすと仮想サーバに sshでログインできなくなります。


4.仮想サーバとグローバルIPアドレス


仮想サーバの作成

1.「コンピュート」-「仮想サーバ」画面で、画面右上の「+」ボタンをクリックします。

image.png

2.「仮想サーバ作成」画面で、以下の項目を入力し、「作成」ボタンをクリックします。

合計4台の仮想サーバを準備します。仮想サーバ名についてはそれぞれ任意の名前を設定してください。

項目
必須
設定値
内容

AZ
必須
jp-west-2a
システムを設置するアベイラビリティゾーンを設定してください。

仮想サーバ名
必須
k8s-01
今回は、2台目はk8s-02、3台目はk8s-03、4台目はrancher-serverとします。

仮想サーバタイプ
必須
S-2
仮想サーバタイプ(フレーバー)を入力してください。

仮想サーバのブートソース
必須
イメージ
仮想サーバを何から作成するかを示す作成元を設定してください。

イメージ
必須
パブリック Ubuntu Server 16.04 LTS (English) 01
OSイメージを選択してください。

デバイスサイズ(GB)
必須
100
イメージサイズと同じサイズを指定してください。

デバイス名
必須
/dev/vda

image.png

3.「rke-network」を選択して、「次へ」ボタンをクリックします。

image.png

4.「rke-keypair」を選択して、「default」と「rke-security」にチェックを入れて、「次へ」ボタンをクリックします。

image.png

5.「次へ」ボタンをクリックします。

image.png

image.png

6.4台ともACTIVEになっていることを確認します。

image.png


グローバルIPアドレスの割り当て

4台分作成します。

1.「ネットワーク」-「グローバルIP」と選択した画面で、画面右上の「+」ボタンをクリックします。

image.png

2.「グローバルIPプール」で、「inf_az1_ext-net03」を選択します。

image.png

3.「グローバルIPアドレス割当ポート」で、「compute:jp-west-2a(192.168.0.3) k8s-01」を選択します。

※残り3台については、仮想サーバ名に合わせて設定します。

image.png

4.「設定」ボタンをクリックします。

image.png

5.作成したIPアドレスの「アクション」-「割当」を選択します。

image.png

6.「compute:jp-west-2a(192.168.0.3)k8s-01」を選択して、「グローバルIP割当」ボタンをクリックします。

※残り3台については、仮想サーバ名に合わせて設定します。

image.png

7.4台にグローバルIPアドレスが割り当てられていることを確認します。

image.png


5.RKEの事前準備

Fujitsu K5上のk8s-01、k8s-02、k8s-03、rancher-serverのサーバ(4台)にログインして、以下の設定を行います。

TeraTermやターミナルを起動して、ユーザ名は「ubuntu」、秘密鍵はキーペアー作成時にダウンロードした「rke-keypair.pem」を利用してログインします。


rootパスワードの設定

パスワードは「k5rancher」とします。


コマンド

$ sudo passwd root

sudo: unable to resolve host k8s-01
Enter new UNIX password:k5rancher
Retype new UNIX password:k5rancher
passwd: password updated successfully


Dockerのインストール

今回は、Docker1.12.6をインストールします。


コマンド

$ su -

Password:k5rancher
# curl https://releases.rancher.com/install-docker/1.12.6.sh | sh

・(途中省略)

Client:
Version: 1.12.6
API version: 1.24
Go version: go1.6.4
Git commit: 78d1802
Built: Tue Jan 10 20:38:45 2017
OS/Arch: linux/amd64

Server:
Version: 1.12.6
API version: 1.24
Go version: go1.6.4
Git commit: 78d1802
Built: Tue Jan 10 20:38:45 2017
OS/Arch: linux/amd64

If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

sudo usermod -aG docker your-user

Remember that you will have to log out and back in for this to take effect!



ubuntuユーザをdockerグループに追加

sudo無しで、ubuntuユーザがdockerコマンドを実行できるようにします。


コマンド

# usermod -aG docker ubuntu

# id ubuntu
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev),110(lxd),999(docker)
# exit
$ exit


6.RKEのインストールと実行

今回はMacにRKEをインストールします。


事前準備

キーペアー作成時にダウンロードした秘密鍵「rke-keypair.pem」を「id_rsa」とリネームして「~/.ssh/」に保存します。


コマンド

$ cd ~/.ssh

$ mv rke-keypair.pem id_rsa
$ chmod 600 id_rsa


RKEのインストール

ターミナルを起動して、以下の作業を行います。

1.GitHubからRKE v0.0.8-dev 「rke_Darwin-amd64」をダウンロードします。

2.rke_Darwin-amd64.dmsファイルのリネーム


コマンド

$ mv rke_darwin-amd64.dms rke


3.rke_Darwin-amd64.dmsファイルのリネーム


コマンド

$ chmod +x rke


4.rke_Darwin-amd64.dmsファイルのリネーム


コマンド

$ ./rke

NAME:
rke - Rancher Kubernetes Engine, Running kubernetes cluster in the cloud
USAGE:
rke [global options] command [command options] [arguments...]
VERSION:
v0.0.8-dev
AUTHOR(S):
Rancher Labs, Inc.
COMMANDS:
up Bring the cluster up
remove Teardown the cluster and clean cluster nodes
version Show cluster Kubernetes version
config, config Setup cluster configuration
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--debug, -d Debug logging
--help, -h show help
--version, -v print the version


RKEの実行

1.cluster.ymlの作成


コマンド

$ vim cluster.yml

-------------------------------------------------------
nodes:
- address: k8s-01のIPアドレス
user: ubuntu
role: [controlplane]
- address: k8s-02のIPアドレス
user: ubuntu
role: [worker]
- address: k8s-03のIPアドレス
user: ubuntu
role: [etcd]

services:
etcd:
image: quay.io/coreos/etcd:latest
kube-api:
image: rancher/k8s:v1.8.3-rancher2
kube-controller:
image: rancher/k8s:v1.8.3-rancher2
scheduler:
image: rancher/k8s:v1.8.3-rancher2
kubelet:
image: rancher/k8s:v1.8.3-rancher2
kubeproxy:
image: rancher/k8s:v1.8.3-rancher2
-------------------------------------------------------
:wq


2.kubernetesクラスタの構築


コマンド

$ ./rke up

INFO[0000] Building Kubernetes cluster
INFO[0000] [ssh] Checking private key

・(途中省略)


INFO[0215] Finished building Kubernetes cluster successfully

3.kubectlコマンドの実行

kubernetes cluster構築後に、「.kube_config_cluster.yml」ファイルが作成されるので、このファイルを「~/.kube/config」にコピーします。


コマンド

$ cp .kube_config_cluster.yml ~/.kube/config


kubectlコマンドを実行して、nodeを確認します。


コマンド

$ kubectl get nodes

NAME STATUS AGE VERSION
133.162.150.112 Ready 2m v1.8.3-rancher1
133.162.150.113 Ready 1m v1.8.3-rancher1


7.Rancher2.0 Serverの構築

Fujitsu K5のrancher-serverにログインして、以下の作業を行います。


Rancher2.0 Technical Previewのインストール

1.Rancher2.0 Technical Previewのインストールします。


コマンド

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:preview

sudo: unable to resolve host rancher-server
Unable to find image 'rancher/server:preview' locally
preview: Pulling from rancher/server

d5c6f90da05d: Pull complete
1300883d87d5: Pull complete
c220aa3cfc1b: Pull complete
2e9398f099dc: Pull complete
dc27a084064f: Pull complete
fb057b4f9d32: Pull complete
7c2367c9da10: Pull complete
128f718d684b: Pull complete
7506cb06dccd: Pull complete
c03c29278db6: Pull complete
1d034432ac3a: Pull complete
8ef692ea6d39: Pull complete
9bda041b46da: Pull complete
351adca835a1: Pull complete
f7f9f4c42531: Pull complete
675994dd3785: Pull complete
2fddecfa7289: Pull complete
adf3afe279d6: Pull complete
1c4c29606398: Pull complete
6c0321314e4d: Pull complete
49d6d97dfd08: Pull complete
9c54e8aae030: Pull complete
d70c4ce6fa87: Pull complete
Digest: sha256:24133c805eed31d307b908fa4c78c76f395ede0e3401af274d291cdaa4f1ec48
Status: Downloaded newer image for rancher/server:preview
12c2eb82bc09a10c71f41f81e3628c02abbee0c0cdbcb40472a223369e04b67a


2.ブラウザを起動して「http://rancher-serverグローバルIP:8080/」にアクセスして、「Got it」ボタンをクリックします。

image.png

3.「Select」ボタンをクリックします。

image.png

4.「Save」ボタンをクリックします。

image.png

5.表示されたkubectlコマンドをコピーして、「Close」ボタンをクリックします。

image.png

6.Macのターミナルで、コピーしたkubectlコマンドをペーストして実行します。


コマンド

$ kubectl apply -f http://133.162.150.116:8080/v3/scripts/E2A971C771C2490D37DA:1483142400000:bFtbg8NB4xKJxFuhFu7ODaN2gik.yaml

namespace "cattle-system" created
serviceaccount "rancher" created
clusterrolebinding "rancher" created
secret "rancher-credentials-a75c00ba" created
pod "cluster-register-a75c00ba" created
daemonset "rancher-agent" created

7.上部メニューの「Hosts」を選択すると、K5上のkubernetesクラスタが表示され、インポート完了となります。

image.png


kubernetesクラスタの削除

kubernetesクラスタも簡単に削除できます。


コマンド

$ ./rke remove

Are you sure you want to remove Kubernetes cluster [y/n]: y
INFO[0001] Tearing down Kubernetes cluster

・(途中省略)

INFO[0017] Cluster removed successfully

以上で、Fujitsu K5上にRKEでkubernetesクラスタを構築して、Rancher2.0 Technical Previewでインポートは完了となります。

Fujitsu K5に限らず、仮想サーバが用意できれば他のクラウドベンダーおよびオンプレミスで同様のことはできますので、この記事をベースに試してみましょう!!


8.参考資料