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版でインポートしてみたいと思います。
事前準備
今回は、富士通K5の30日間無料トライアルを申し込みました。
まず申し込みに先立って、「FUJITSU MetaArc Marketplace」への登録が必須となります。
必要事項をフォーム入力して、メール受信、担当者からの電話連絡後、30日間無料トライアル開始となりますので、開始まで時間を要します。
環境構築
1.K5ポータルとIaaSポータル
ブラウザを起動して、K5ポータルにアクセスします。
右上の[Login]ボタンをクリックします。
申し込み後のメールに記載されている「契約番号」、「ユーザ名」と申し込み時に作成した「パスワード」を入力して[ログイン]ボタンをクリックします。
[IaaSポータル]ボタンをクリックします。
IaaSダッシュボードが表示されます。
2.仮想ルータと仮想ネットワークの構築
K5はOpenStackベースのマネージドサービスであるため、いきなり仮想サーバを構築して利用はできません。まずは、ネットワーク環境の構築が必須となります。
デザインパターンが公式に用意されているので利用することをお勧めします。今回は、インターネット接続パターンをベースとします。
ネットワークの作成
仮想ルータの作成
1.「ネットワーク」-「仮想ルータ」画面で、画面右上の「+」ボタンをクリックします。
2.「新規ルータ作成」画面で、以下の項目を入力し、「作成」ボタンをクリックします。
項目 | 必須 | 設定値 | 内容 |
---|---|---|---|
AZ | 必須 | jp-west-2a | システムを設置するアベイラビリティゾーンを設定してください。 |
仮想ルータ名 | 必須 | rke-router | 仮想ルータ名を入力してください。 |
仮想ルータにゲートウェイ設定
1.「仮想ルータ」画面で、作成した仮想ルータの「アクション」-「ゲートウェイ設定」メニューで、仮想ルータを接続させる「外部仮想ネットワーク」(インターネット側のネットワーク)を選択し、「設定」ボタンをクリックします。
項目 | 必須 | 設定値 | 内容 |
---|---|---|---|
外部仮想ネットワーク | 必須 | inf_az1_ext-net03 | 複数の外部仮想ネットワークから1つ選択 |
内部ネットワーク作成
1.「ネットワーク」-「仮想ネットワーク」画面で、画面右上の「+」ボタンをクリックします。
2.「仮想ネットワーク作成」画面で、以下の項目を入力し、「作成」ボタンをクリックします。
項目 | 必須 | 設定値 | 内容 |
---|---|---|---|
AZ | 必須 | jp-west-2a AZ | システムを設置するアベイラビリティゾーンを設定してください。 |
仮想ネットワーク名 | 必須 | rke-network | 仮想ネットワーク名を入力してください。 |
管理状態 | 必須 | UP | ここでは "UP" で設定してください。 |
項目 | 必須 | 設定値 | 内容 |
---|---|---|---|
サブネット作成 | 必須 | あり | ここでは "あり" で設定してください。 |
サブネット名 | 必須 | rke-subnet | サブネット名を入力してください。 |
仮想ネットワークアドレス | 必須 | 192.168.0.0/24 | CIDR形式で入力してください。 |
ゲートウェイ | 推奨 | あり | ここでは "あり" で設定してください。 |
ゲートウェイIP | 推奨 | 192.168.0.1 | 必須ではありませんが、設定してください。※この後の設定で使用します。 |
項目 | 必須 | 設定値 | 内容 |
---|---|---|---|
DHCP有効 | 推奨 | あり | 必須ではありませんが、設定してください。 |
IPアドレス割当プール | 任意 | - | 必要に応じて設定してください。 |
DNSサーバ | 推奨 | 133.162.145.9 133.162.145.10 |
K5 IaaS機能説明書のP271に各リージョンごとのDNSサーバのIPアドレスが記載されているので参照する必要があります。 |
追加のルート設定 | 任意 | - | CIDR形式の宛先(Destination)と、その宛先へ接続するルータのIPアドレス(Nexthop)を設定します。 |
4.作成された仮想ネットワークが一覧に表示されることを確認します。
仮想ルータにサブネットをアタッチ
1.「ネットワーク」-「仮想ルータ」画面で、作成した仮想ルータをクリックします。
2.「仮想ルータ詳細」画面で、「インターフェース」の項の右上にある「+」ボタンをクリックします。
3.「インタフェース設定」画面で、以下の項目を入力し、「追加」ボタンをクリックします。
項目 | 必須 | 設定値 | 内容 |
---|---|---|---|
サブネット | 必須 | rke-router | 内部ネットワーク作成の際に設定したサブネットを選択してください。 |
IPアドレス | 必須 | 192.168.0.1 | 内部ネットワーク作成の際に設定したゲートウェイIPを設定してください。 |
4.作成した設定がインターフェースの一覧に表示されることを確認します。
グローバルIPアドレス確保
1.「ネットワーク」-「グローバルIP」と選択した画面で、画面右上の「+」ボタンをクリックします。
2.グローバルIPプールの選択を行う画面が表示されます。グローバルIPアドレスの割当対象(仮想サーバまたは仮想ルータ)が接続する
グローバルIPプール(外部ネットワーク)を選択します。
今回は、仮想ルータのゲートウェイに設定した外部ネットワーク「inf_az1_ext-net03」を選択し、「次へ」をクリックします。
3.「network:router_interface(192.168.0.1) rke-router」を選択し、「次へ」をクリックします。
4.「設定」をクリックします。
3.セキュリティグループとキーペア
セキュリティグループの設定
セキュリティグループ作成
1.「ネットワーク」-「セキュリティグループ」画面で、画面右上の「+」ボタンをクリックします。
2.「セキュリティグループ作成」画面で、以下の項目を入力し、「次へ」、「作成」とボタンをクリックします。
項目 | 必須 | 設定値 | 内容 |
---|---|---|---|
サブネット | 必須 | rke-network | セキュリティグループ名を入力してください。 |
IPアドレス | 任意 | - | セキュリティグループに対する説明事項を入力してください。 |
ルールの編集
1.「ネットワーク」-「セキュリティグループ」画面で、作成したセキュリティグループ「rke-security」の「アクション」から「ルール管理」をクリックします。
2.「ルール管理」画面で、以下の2つのルールを削除します。各ルールの「アクション」にある「削除」ボタンで削除してください。
方向 | Ethernetタイプ | IPプロトコル | ポート範囲 | 接続先 |
---|---|---|---|---|
egress | IPv6 | - | - | - |
igress | IPv4 | - | - | - |
3.「セキュリティグループルール管理」画面で、「ルールの追加」ボタンをクリックします。
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 |
キーペアの作成
1.「コンピュート」-「キーペア」画面で、画面右上の「+」ボタンをクリックします。
2.「キーペア」画面で、以下の項目を入力し、「次へ」、「作成」とボタンをクリックします。
項目 | 必須 | 設定値 | 内容 |
---|---|---|---|
キーペア名 | 必須 | rke-keypair | キーペア名を入力してください。 |
AZ | 必須 | jp-west-2a | システムを設置するアベイラビリティゾーンを設定してください。 |
3.「rke-keypair.pem」を保存しますかというメッセージが表示されますので、保存します。このファイルは、仮想サーバにログインする際の ssh鍵になります。取り扱いには厳重に注意してください。キーペアは、なくした場合に再発行できません。キーペアをなくすと仮想サーバに sshでログインできなくなります。
4.仮想サーバとグローバルIPアドレス
仮想サーバの作成
1.「コンピュート」-「仮想サーバ」画面で、画面右上の「+」ボタンをクリックします。
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 |
3.「rke-network」を選択して、「次へ」ボタンをクリックします。
4.「rke-keypair」を選択して、「default」と「rke-security」にチェックを入れて、「次へ」ボタンをクリックします。
5.「次へ」ボタンをクリックします。
6.4台ともACTIVEになっていることを確認します。
グローバルIPアドレスの割り当て
4台分作成します。
1.「ネットワーク」-「グローバルIP」と選択した画面で、画面右上の「+」ボタンをクリックします。
2.「グローバルIPプール」で、「inf_az1_ext-net03」を選択します。
3.「グローバルIPアドレス割当ポート」で、「compute:jp-west-2a(192.168.0.3) k8s-01」を選択します。
※残り3台については、仮想サーバ名に合わせて設定します。
4.「設定」ボタンをクリックします。
5.作成したIPアドレスの「アクション」-「割当」を選択します。
6.「compute:jp-west-2a(192.168.0.3)k8s-01」を選択して、「グローバルIP割当」ボタンをクリックします。
※残り3台については、仮想サーバ名に合わせて設定します。
7.4台にグローバルIPアドレスが割り当てられていることを確認します。
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」ボタンをクリックします。
3.「Select」ボタンをクリックします。
4.「Save」ボタンをクリックします。
5.表示されたkubectlコマンドをコピーして、「Close」ボタンをクリックします。
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クラスタが表示され、インポート完了となります。
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に限らず、仮想サーバが用意できれば他のクラウドベンダーおよびオンプレミスで同様のことはできますので、この記事をベースに試してみましょう!!