LoginSignup
0

More than 3 years have passed since last update.

Kublrを使用してGCP にk8sクラスタを構築する

Posted at

はじめに

業務でオンプレ環境にk8sクラスタを構築する必要があり、その候補のひとつとしてKublrが上がっていたのでインストールしてみた。

kublr v1.11.2 をdockerコンテナで稼働させてk8sクラスタを構築するところまでをやっています。

kublrとは

kublr 公式

Enterprise Readyなコンテナ管理プラットフォーム。機能的にもManaged Kubernetesと同等なのかな?Rancher と近いものがあると思う。マルチクラスタを作成・管理することができ、各ノードにエージェントを入れてコントロールプレーンで統合管理する。

準備

  • Kublrのアカウントを作成して、自分のKublr Licenseを取得する。
  • GCPアカウント
  • VM (ubuntu 16.04 LTS): 3 インスタンス
    スペックは公式の推奨をちゃんと見たほうがいいです。
ノード vCPU Memory Volume
管理用 1 2GB 10GB ここにkublr-in-a-boxを入れる
マスター 2 4GB 10GB マスターとワーカーは一緒でもできるのかもしれないが、なぜかできなかったので分けている。公式にもできるとは書いていない(と思う)
ワーカー 4 16GB 200GB

参考

https://docs.kublr.com/quickstart/kublr-in-a-box/
https://docs.kublr.com/quickstart/onpremise/

インストール

kublrのインストール

主にGCPのブラウザからsshでターミナルを起動して管理用ノードを操作する。別にローカルマシンからsshで入ってもいい。

管理用ノードに docker をインストール
(*) Rancherのインストーラを拝借してインストールしました。

$ curl https://releases.rancher.com/install-docker/18.09.sh | sh

docker コマンドをsudo なしで実行できるようにしておく。(任意でいい)
でユーザ名を確認

$ whoami
<user name>

$ sudo usermod -aG docker <user name>
# 一回セッションを終わらせる
$ exit

kublr-in-a-boxをインストール

$ docker run --name kublr -d --restart=unless-stopped -p 9080:9080 -e KUBLR_HOST=<HOST_IP>:9080 -e KUBLR_LICENSE=<your-license> kublr/kublr:1.11.2

ブラウザで http://<HOST_IP>:9080 にアクセスするとKublrのコンソールが開く。
Username, Passwordは登録時にメールで届いているものを入力するとコンソールが表示される。
デフォルトは多分みんな同じ。

kublrの設定

sshで公開鍵認証を使用して他のノードにアクセスするための鍵を作成する。

$ whoami
<user name>

$ ssh-keygen -b 4096 -C <user name>

kublrの画面で設定に使用する秘密鍵を準備

$ cat ~/.ssh/id_rsa

画面に表示される秘密鍵をコピーして覚えておく。
次にkublrのUIから"Credentials"を選択し、"+ ADD CREDENTIALS"ボタンをして秘密鍵を登録しておく。

CREDENTIALS TYPE: "SSH Private Key"
NAME: 任意の名前
SSH Private Key: コピーした秘密鍵をペースト

入力が終わったら保存して終わり。

マスター、ワーカーノードの設定

いずれのノードも管理用ノードからSSHで接続するため、公開鍵認証によって接続できるようにしておく。

管理用ノードで公開鍵をコピーする

$ cat ~/.ssh/id_rsa.pub

画面に表示される公開鍵をコピーして覚えておく。
GCPのインスタンスの設定編集から公開鍵を登録する。

  • ナビゲーションメニュー => Compute Engine => VM インスタンス
  • 該当するノードの詳細画面を開き、編集。
  • "SSH 認証鍵" のセクションで公開鍵をペーストして保存

マスター、ワーカーに公開鍵認証にて接続できることを確認しておく。

k8s クラスタの構築

kublrのUIから"Clusters"を選択し、"+ ADD CLUSTER" ボタンをして設定画面を開く。

設定項目名 設定値
Cluster Name any name 自分がクラスタにつけたい名前。なんでもいい
Provider BARE-METAL 今回は手動にてIaaS上にクラスタを作成するため
Masters 1 node
Installation Type Automated using SSH 公開鍵をコピーしておいたのはこのため
User Name your-username whoamiで取得したユーザ名
SSH Key Name Credentialsで作成した秘密鍵の名前 この鍵と各ノードに設定した公開鍵が対になっている必要がある
IP/DNS of Master 1 マスターノードの IP
Create Nodes
> InstanceGroup 1
> > Installation Type Automated using SSH 公開鍵をコピーしておいたのはこのため
> > User Name 上のと同じ
> > SSH Key Name 上のと同じ
> > Add IP/DNS Addresses ワーカーノードの IP
その他の設定 好みで有効にしてみてください

"CONFIRM AND INSTALL" を押すとクラスタの構築が開始する。
ちょっと待つと"Congratulation"的なメッセージが出るが、そこからすべての機能が立ち上がるまで結構時間がかかる。

最終的にClusterのステータス画面で、

Overall Status
Cluster is ready

と表示されるとクラスタ構築が完了。

image.png

失敗したことなど

  • 社内の強固なproxy&FW環境下にあるデバッグ用サーバーにインストールしようとしたが、外部に何度かアクセスする処理があり、失敗。情報システム部と連携してインストールする必要がありそうなので途中でやめた。
  • offlineでインストールはできないっぽい。
  • 1VMインスタンスにシングルノード構成でクラスタ構築しようとしたところ、途中でdockerを再起動する処理があり、kublrコンテナも再起動され、script内で行っていた認証情報をすべて忘れてしまい、インストール途中で認証エラーになって止まる。結果、中途半端な状態でクラスタが構成されて何度もやり直す&デバッグする羽目に。。。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0