概要
Ubuntu に kubernetes をインストールしてみました
今回はクラウドは使わず localhost の lxd 上に必要なコンポーネントをデプロイしています
環境
- Ubuntu 16.04
- conjure-up 2.5.6
- kubernetes 1.10
- lxd 3.0.0 (required)
snapd のインストール
apt -y install snapd
conjure-up のインストール
snap install conjure-up --classic
一旦ログアウトして再度ログインしましょう
conjure-up
の設定を反映させます
lxd のインストール
今回は localhost に対して kubernetes 環境を構築するので lxd が必要になります
lxd 上に必要なコンポーネントをデプロイします
snap install lxd
lxd の初期化
- lxd init
いろいろ聞かれます
3 箇所で設定を変更しています
- Name of the storage backend to use -> dir
- What IPv6 address should be used? -> none
- Would you like LXD to be available over the network? -> yes
あとはすべてデフォルトを設定しています
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, ceph, dir, lvm, zfs) [default=zfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]: yes
Address to bind LXD to (not including port) [default=all]:
Port to bind LXD to [default=8443]:
Trust password for new clients:
Again:
No password set, client certificates will have to be manually trusted.Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
Error: Failed to create network 'lxdbr0': Failed to run: dnsmasq ...
みたいなエラーが出る場合はすでに 53 ポートをバインドしているプロセスがあります (参考)
例えば bind などを動かしている場合はエラーになるので停止してあげます
- systemctl stop bind9
ユーザの作成
conjure-up
コマンドは root ユーザでは実行できないのでコマンドを実行する専用のユーザを作成します
- adduser conjure
Adding user `conjure' ...
Adding new group `conjure' (1000) ...
Adding new user `conjure' (1000) with group `conjure' ...
The home directory `/home/conjure' already exists. Not copying from `/etc/skel'.
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for conjure
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
こんな感じで作成すれば OK です
パスワードなど対話形式で聞かれますので適当に設定してください
あと lxd のグループに追加し sudo ができるようにします
usermod -a -G lxd conjure
gpasswd -a conjure sudo
移行の作業は作成した conjure ユーザで行います
kubernetes のインストール
su - conjure
- conjure-up kubernetes
対話形式でインストールします
矢印の上下で「Kubernetes Core」を選択して Enter でインストールしましょう
どの環境を使用するか選択する画面になるので、今回は「localhost」を選択します
lxd が起動していれば localhost が選択できるようになっています
選択できない場合は lxd が起動しているか conjure ユーザが lxd グループに所属しているなど調べてください
ネットワークブリッジとストレージプールを選択します
とりあえずそのままで OK です
TAB でカーソルを Save に合わせて Enter で次に行きます
ネットワークプラグインは flannel
を選択します
sudo のパスワードを入力します
各コンポーネントをデプロイする設定をします
ここもデフォルトで OK です
デプロイされるので待ちましょう
以下の画面にならないでエラーになってしまう場合は ufw をオフにしてみてください
- ufw disable
lxd 上に各コンポーネントのデプロイが完了するまで待ちましょう
各コンポーネント間で連携チェックをしながらデプロイされるので、ここは割りと時間がかかります
maintenance や blocked のステータスを繰り返しますが active になるまで辛抱強く待ちます
すべて active になれば次に進みます
Quit でインストールを完了します
動作確認
kubectl コマンドが使えるので確認してみます
kubectl --kubeconfig=.kube/config cluster-info
これでダッシュボードの IP の情報や各コンポーネントのエンドポイントが表示されると思います
また lxc list コマンドで lxd 上に各コンポーネントがデプロイされていることも確認できると思います
+---------------+---------+-----------------------+------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+---------------+---------+-----------------------+------+------------+-----------+
| juju-6e5d3b-0 | RUNNING | 10.156.235.117 (eth0) | | PERSISTENT | 0 |
+---------------+---------+-----------------------+------+------------+-----------+
| juju-de4886-0 | RUNNING | 10.156.235.71 (eth0) | | PERSISTENT | 0 |
| | | 10.1.82.0 (flannel.1) | | | |
| | | 10.0.113.1 (lxdbr0) | | | |
+---------------+---------+-----------------------+------+------------+-----------+
| juju-de4886-1 | RUNNING | 172.17.0.1 (docker0) | | PERSISTENT | 0 |
| | | 10.156.235.35 (eth0) | | | |
| | | 10.1.5.1 (cni0) | | | |
| | | 10.1.5.0 (flannel.1) | | | |
+---------------+---------+-----------------------+------+------------+-----------+
おまけ kubernetes-master のエンドポイントにアクセスする
今回だと lxdbr0
の IP が振られてしまっているため Ubuntu からしかアクセスできません
が SSH のポートフォーワードを使えばクライアントマシンにアクセスすることでエンドポイントにアクセスすることができます
ssh -N -L localhost:6443:10.156.235.71:6443 root@kube -i /path/to/secret.pem
これで https://localhost:6443
で master の API 一覧を確認することができます
ちなみにパスワードは
kubectl --kubeconfig=.kube/config config view
で確認できます
ちなみにダッシュボード URL が長いのですが
https://10.156.235.71:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
でアクセスできます (IP の部分は各自の lxdbr0
の IP に変更してください)
ログインするには
kubectl -n kube-system get secret
kubectl -n kube-system describe secret default-token-bwmbd
で表示されるトークンを入力してください
最後に
Ubuntu16.04 上に kubernetes をインストールしてみました
嵌りポイントは少しありましたが割りとスムーズにインストールできました
過去に minikube を使った構築方法を紹介しましたが mac がない場合には今回の方法を使うと良いと思います
次回はこの環境にコンテナを立てたりしたいと思います
0 件のコメント:
コメントを投稿