Movatterモバイル変換


[0]ホーム

URL:


株式会社インターネットイニシアティブ(IIJ)

IIJ Engineers Blog

自宅にKubernetesクラスター『おうちKubernetes』を作ってみた

2020年08月24日 月曜日


5

【この記事を書いた人】
韮塚 凌平

2019年新卒入社。基盤エンジニアリング本部兼クラウド本部所属のKubernetes大好きエンジニア。自宅ラックマウントサーバ勢。休日はコスプレしたり、バイクに乗ったり、絵を描いたり、サーバメンテしたり、激渋旅館を巡ったりしてます。

「自宅にKubernetesクラスター『おうちKubernetes』を作ってみた」のイメージ
このエントリーをはてなブックマークに追加
Tweet

CONTENTS

こんにちは、IIJの韮塚(にらづか)です。
私は名古屋支社の技術部に所属しており、普段はインフラ中心のSI業務と開発向け社内ツールの管理業務をしています。

みなさん、Kubernetesは触っていますか?
いま世の中ではKubernetesが急速に普及しつつあります。
大手クラウドベンダーは独自にカスタマイズしたKubernetesをサービスとして提供しており、多くのWebサービスがその基盤を利用して稼働しています。
中にはYahoo!やサイボウズのように、自社内で独自にカスタマイズしたKubernetesを持っており、その上で自社サービス提供するような会社も多く存在します。
IIJでも「IKE(IIJ Kubernetes Engine)」という名前でKubernetesサービスが社内向けに提供されており、IIJの社内ツールなどに利用されています。

私も昨年からDockerのクジラアイコンに魅了され、Kubernetesを触り始めました。(IIJアドベントカレンダー2019)
そんなKubernetesを自宅でも触れるように、Raspberry Piを使ってKubernetesクラスターを組んでみましたので、素材集めから完成までの流れをこの記事で紹介しようと思います。

このように自宅でKubernetesクラスターを作ることを「おうちKubernetes」という名前でご存知の方もいらっしゃるとは思いますが、弊社のマスコットキャラクターのバリーくんとの2ショットを交えて紹介していますので、どうかお付き合いいただければと思います。

※ 本記事ではKubernetes自体の説明は省略しています。

背景

今や一家に一台Kubernetesクラスターの時代だから

☞だったら無料でいくらでも使えるKubernetesクラスターを自分で作ればいいじゃないか!!!!

素材

そうと決まれば素材集め。
だいたいAmazonで揃えられます。

項番品名個数値段
(円/個)
備考
1Raspberry Pi 4 Model B/4GB36,820これだけ正規代理店で購入(あとはAmazon)。最近8GBでたよね
2Raspberry Pi 用 ラックケース12,549多段になっているとかっこいいよね
3Smsung EVO Plus 32GB microSDHC3990正直64GBにしておけばよかった
4Smraza Raspberry Pi 4電源ケーブル31,129電源ケーブルに電源スイッチが付属していると便利だよね
USBハブだと給電不足になる可能性があったので分けました
5TP-Link TL-SG105E スイッチ12,500途中まで家にあったスイッチ使ってたけれど壊れたので買いました
6色んな長さのLANケーブル家に落ちてたAmazonだと買い合わせ対象商品になりがち
7MicroHDMI HDMI変換ケーブル1999Raspberry Pi 4からMicroHDMIになった。許せない
合計32,965一回作れば一生使えるので実質タダ

2,3日あれば全部届きます。
思い立ってから2,3日で自宅にKubernetesクラスターが組めるなんていい時代ですね!
Raspberry Piは全部で3台用意しましたが、それぞれ役割については後で説明します。

バリーくんと素材たち

Raspberry Pi 4 × 3台

構築(物理)

組み立ては3,4時間ほどで終わり、さほど手間取りませんでした。PC自作が出来ればたぶんできるレベルです。
(ラックケースに付属している説明書はとても大雑把なので、先人たちのブログを見ながら雰囲気で組み立てました……)

Raspberry Pi 4を買ってからレビューなどを見て気が付いたのですが、Raspberry Pi 4はRaspberry Pi 3と比べて発熱が大きく、熱対策をしないと著しく性能が低下するそうです。
なのでRaspberry Pi 4は熱対策に冷却ファンか大きめのヒートシンクを取り付ける必要があるのですが、幸いラックケースにヒートシンクとファンがセットで付属していたので事なきを得ました……。
(ファンとかつけるんだったらラズパイであるメリットがどんどんなくなっていく気がする……?)

バリーくんと組み立てたラズパイ(机が汚い)

後にこのスイッチが壊れるとは……

構築(論理)

大きく「サーバ構築」と「Kubernetes構築」の2つに分けて実施しました。

サーバ構築

SSHの設定したり、ユーザ・グループ作ったり、基本的な設定を行いました。
特にこれといって変わったことはしません。
ちなみにOSはRaspbian(32bit)を使いました。
(OSインストールに今年出たRaspberry Pi Imagerを使ってみましたが、かなり楽でした)

Kubernetes構築

Kubernetesクラスターは主に、コンテナの起動ホストとなる「Worker Node」、クラスター内のWorker Nodeを管理する「Master Node」の2つから構成されています。
今回は3台あるサーバの内1台をMaster Node、2台をWorker Nodeとして割り当てていきます。
細かいコマンドは書きませんがやったこととしては以下の通りです。

    1. Docker導入
    2. kubeadm4), kubectl5), kubelet導入6)
    1. クラスター初期化
    2. Flannel導入7)
    3. Worker Nodeのクラスター参加トークン発行
    1. クラスター参加トークンを使ってでクラスター参加
    2. 参加完了

結果

無事Kubernetesクラスターが組めました!!!!

ちなみに「n7s」は「niranetes」の略です。本名から文字りました。
毎日元気に休まず稼働しています。(日々、障害を監視・アラートしてくれるバリーくんと一緒ですね!?)

稼働中のn7s

withバリーくん

今後やりたいこと

直近ではKubernetesディストリビューションとしての環境を整えることを目標としており、PrometheusとGrafanaでクラスター内メトリクスの監視環境を作ったり、Elasticsearchを使ったログ収集環境を作っていきたいと考えています。(Raspberry Piのスペックでどこまで出来るかなぁ……)

他にもCKAの勉強やアプリケーション開発/実装の練習にも役立てていきたいと思っています!!

制作の参考にさせていただいたサイト

脚注

  1. ^GCP(Google Cloud Platform):Googleが提供するクラウドサービスのこと
  2. ^GKE(Google Kubernetes Engine):GCP上で動くGoogleのマネージドKubernetesサービスのこと
  3. ^GCLB(Google Cloud Load Balancing):GCPにある機能の1つ。主に負荷分散を行う
  4. ^kubeadm:クラスターを起動するコマンドのこと
  5. ^kubectl:クラスターにアクセスするコマンドのこと
  6. ^kubelet:クラスター内で実行されるコンポーネント
  7. ^Flannel:クラスター内のPod間ネットワークを実現するツール。非常にシンプルで実装が簡単なので今回採用した
このエントリーをはてなブックマークに追加
Tweet
5

韮塚 凌平

2020年08月24日 月曜日

2019年新卒入社。基盤エンジニアリング本部兼クラウド本部所属のKubernetes大好きエンジニア。自宅ラックマウントサーバ勢。休日はコスプレしたり、バイクに乗ったり、絵を描いたり、サーバメンテしたり、激渋旅館を巡ったりしてます。

IIJ

一緒に働く仲間を募集中!

面白そうなことをしているな、
高度な技術で社会貢献しているな、
などIIJの取り組みに共感した方は、ぜひ一緒に働きましょう

採用情報はこちら

ブログの更新以外にも、イベントや面白い
技術ネタをつぶやきます!

Tweets by IIJ_ITS

Related
関連記事


[8]ページ先頭

©2009-2025 Movatter.jp