docker
kubernetes
rancher
fujitsu
K5

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

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.参考資料