Raspberry Pi でKubernetes(k8s)環境構築を検索
Raspberry Piを使用してKubernetes(k8s)のインストールする記事を探したところ、
複数のRaspberry Piを使用してKubernetesのクラスタ環境を作る記事をいくつか見ました。
Raspberry Pi 4 でおうちKubernetesを作ろう(Raspbian Buster Lite対応版)
ラズパイ4で作るディスプレイ付きKubernetesクラスター
ラズパイでKubernetesクラスタを構築する
etc...
一家に一台 Kubernetesクラスター。憧れますよね(●´ω`●)
Raspberry Pi 1台で簡単にKubernetes(k8s)
Raspberry Pi 1台でKubernetes環境を作りたかったため、もう少し調べてみました。
すると、
Ubuntu 19.10がリリース、ラズパイ4やMicroK8sサポートでエッジ領域を強化
「Ubuntu 19.10」リリース、エッジでのKubernetes、AI/ML開発環境も強化
という記事を見つけたので、
「Raspberry Pi 4 + Ubuntu 19.10 + MicroK8s」
を試してみることにしました。
Raspberry Pi 4 Model B を購入
Raspberry Pi 4 Model B 4GB RAM
Raspberry Pi 4モデルB用 ラックケース
複数台でクラスタを組みたくなるかも?と思い、ケースはラズパイが4台付けれるクラスタ用を購入しました。
他にもmicroSD 32GB、USB電源アダプタ、USB Type C ケーブル、Micro HDMI変換アダプタなども購入しています。
Raspberry Pi 4 Model B を組み立て
まずは公式HPからRaspberry Pi 4 Model B のGPIOを確認してファンの取り付け位置を確認します。
左上から2、3番目の「5v」と「ground」にファンを接続
組み立て完成!!
Raspberry Pi 4のOSに Ubuntu 19.10 をインストール
今回はMicroK8sを試したいので、OSは通常の「Raspbian」ではなく「Ubuntu 19.10」をインストールします。
まずはUbuntuのホームページからRaspberry Pi 4のOSイメージをダウンロード。
Install Ubuntu Server on a Raspberry Pi 2, 3 or 4
「Raspberry Pi 4」の「Ubuntu 19.10」の「Download 64-bit」を選択
「ubuntu-19.10.1-preinstalled-server-arm64+raspi3.img.xz」
がダウンロードされました。
OSイメージを MicroSD へ書き込み
Balena Etcher
使用しているOSのEtcherをダウンロード。
私の場合は作業端末がWindows10なので「Download for Windows (x86|x64)」を選択。※MacやLinux版も選択できます。
「balenaEtcher-Portable-1.5.79.exe」
がダウンロードされました。
EtcherでUbuntuのイメージをSDカードに書き込みます。
Raspberry Pi 4 起動
Raspberry Pi 4にmicroSDカードを差し込み、電源、ディスプレイ、有線LANで接続し起動します。
※ キーボードは接続しませんでした。
Ubuntu起動確認
2、3分ぐらいしたら上記のような画面が出ます。
※ 画面はここでしか確認しなかったのでHDMIは必要なかったかも(´・ω・`)
ルーター画面などでIPを確認してください。
私の場合はBuffalo ルーターだったので http://192.168.11.1/ で確認
TeraTeamなどでSSH接続
ubuntu/ubuntu
でログイン
初回接続時はパスワードの変更を求められるのでパスワード変更し再度接続
$ sudo apt update
$ sudo apt upgrade
などをして最新状態にすればUbuntuの準備は完了です。
MicroK8sのインストール
MicroK8sの公式HPを参考にインストール
boot設定を変更
Raspberry Pi 4を使用する場合、cgroupの設定が必要らしいのでbootファイルに書き込み
$ sudo vi /boot/firmware/nobtcmd.txt
cgroup_enable=memory cgroup_memory=1
を最後に追加し再起動
$ sudo reboot now
MicroK8sをsnapでインストールする
$ sudo snap install microk8s --classic --channel=1.17/stable
microk8sグループに参加する
microk8sコマンドに毎回 sudo とつけるのは面倒なのでmicrok8sグループに参加する
$ sudo usermod -a -G microk8s $USER
※ 設定を反映させるため一度ログアウト
状態を確認する
正しく設定できていれば下記のように状態が見れます
$ microk8s.status
microk8s is running
addons:
cilium: disabled
dashboard: disabled
dns: disabled
fluentd: disabled
gpu: disabled
helm: disabled
ingress: disabled
istio: disabled
jaeger: disabled
juju: disabled
knative: disabled
kubeflow: disabled
linkerd: disabled
metallb: disabled
metrics-server: disabled
prometheus: disabled
rbac: disabled
registry: disabled
storage: disabled
ubuntu@ubuntu:~$
色々アドオンがありますが最初はすべてdisabledになっていますね
※ ここでアドオンではなく
$ microk8s.status
microk8s is not running. Use microk8s.inspect for a deeper inspection.
と出ている場合はboot設定を行っていない可能性があります。(私は最初これが出ていました)
エイリアス設定
毎回microk8s.kubectlなど打つのも面倒なのでエイリアスを作成
$ sudo snap alias microk8s.kubectl kubectl
kubectl コマンドの確認
ノードを確認する
$ kubectl get node
NAME STATUS ROLES AGE VERSION
ubuntu Ready <none> 10m v1.17.3
Kubernetes環境作成完了
とりあえずここまで出来ればKubernetesの動作環境は完成です。
少し調べたり、記事用に写真などもとりながら進めましたが、2時間ぐらいでここまで作成できたと思います。分かっていたら30分もかからないかもですね。
かなり簡単にKubernetes環境が作成できましたね。
以前CentOSにkubeadmでインストールしたときは、なかなかうまくいかなかったので驚きです。
microk8s コマンド一覧
$ microk8s.
microk8s.add-node microk8s.enable microk8s.juju microk8s.reset
microk8s.cilium microk8s.helm microk8s.kubectl microk8s.start
microk8s.config microk8s.inspect microk8s.leave microk8s.status
microk8s.ctr microk8s.istioctl microk8s.linkerd microk8s.stop
microk8s.disable microk8s.join microk8s.remove-node
色々ありますね。
Microk8s公式の Command Reference でコマンドの内容は確認できます。
Kubernetesダッシュボードの設定
microk8sには「microk8s.status」コマンドで出てきた、色々なアドオンがついているみたいです。
そのうちのKubernetesダッシュボードを確認してみます。
※ dnsやstorageもあったほうがいいらしいのでついでに追加
$ microk8s.enable dashboard dns storage
ポート番号やユーザなどを確認
~$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://127.0.0.1:16443
name: microk8s-cluster
contexts:
- context:
cluster: microk8s-cluster
user: admin
name: microk8s
current-context: microk8s
kind: Config
preferences: {}
users:
- name: admin
user:
password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
username: admin
のような情報が出るのでRaspberry Pi 4のIP(例えば192.168.11.20)+「server: https://127.0.0.1:16443」のポートで接続してみます。
ログイン画面が出たら「username」「password」を入力してログイン
トークンは下記コマンドで取得
$ kubectl -n kube-system describe secret $(microk8s.kubectl -n kube-system get secret | grep kubernetes-dashboard-token | awk '{print $1}')
----------省略-------------
token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ca.crt: 1103 bytes
namespace: 11 bytes
Kubernetesダッシュボードのトップ画面
まとめ
これで自宅でも簡単に kubectl コマンドの動作確認などが出来ますね。
Raspberry Pi などのエッジ側でもKubernetesが簡単に起動できるのであれば、5Gももうすぐ始まりますし、いろいろな用途に使えそうですよね(●´ω`●)
実際に動作確認の記事なども書いていこうと思います!!
記事の続きを書きました!!
[Raspberry Pi 4(1台)でKubernetes環境を構築 (Raspberry Pi 4 + Ubuntu 19.10 + MicroK8s) Part2 (Webアプリ編)]
(https://qiita.com/toyotoyo_/items/91c054f2a8c6d88724f0)