14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry Pi 4(1台)でKubernetes環境を構築 (Raspberry Pi 4 + Ubuntu 19.10 + MicroK8s)

Last updated at Posted at 2020-03-01

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 Model B.jpg

Raspberry Pi 4モデルB用 ラックケース

Raspberry Pi 4 クラスターケース.jpg

複数台でクラスタを組みたくなるかも?と思い、ケースはラズパイが4台付けれるクラスタ用を購入しました。

他にもmicroSD 32GBUSB電源アダプタUSB Type C ケーブルMicro HDMI変換アダプタなども購入しています。

Raspberry Pi 4 Model B を組み立て

まずは公式HPからRaspberry Pi 4 Model B のGPIOを確認してファンの取り付け位置を確認します。

GPIO.png

左上から2、3番目の「5v」と「ground」にファンを接続

Raspberry Pi 4 組み立て1.jpg

組み立て完成!!

Raspberry Pi 4 組み立て2.jpg

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

RaspberryPi_Ubuntu_19.10.png

「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カードに書き込みます。
Etcher.png

Raspberry Pi 4 起動

Raspberry Pi 4にmicroSDカードを差し込み、電源、ディスプレイ、有線LANで接続し起動します。
※ キーボードは接続しませんでした。

Ubuntu起動確認

ubuntu起動確認.jpg

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」を入力してログイン
dashboard_login.png

トークンは下記コマンドで取得

$ 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

で出てきたトークンを入力してサインイン
dashboard_token.png

Kubernetesダッシュボードのトップ画面

dashboard_top.png
が表示されれば成功です!

まとめ

これで自宅でも簡単に 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)

14
13
0

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
14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?