弊社でKubernetesをメインとして使っていますがよくわからなかったので自分で構築してみることにします。
学習のために本番と近しい環境にしたいので今回はあえて仮想環境を使わずに構築します。
ここからは不要な方は飛ばしてもOK
基礎情報 Kubernetesとは何か
Kubernetes(通称「k8s」)
デプロイとかスケーリング、管理を自動化するためのオープンソースのプラットフォームです。
Dockerはコンテナごとに1つの機能しか動かせませんが、
Kubernetesを使えば、複数のコンテナをまとめて管理したり、一緒に動かすことができます!
基礎情報 Kubernetesの基本構成
-
クラスター
ノードを1つのクラスターとしてまとめて管理します。 -
マスターノード
Kubernetes自体を制御、管理します。 -
ノード
アプリケーションなどを実際に実行します。クラスターの中に複数のノードが存在します。 -
ポッド
コンテナをまとめた最小単位です。通常、1つのポッドの中には最低1つまたは複数のコンテナが入っていて、同じネットワークやストレージを共有しています。 -
コンテナ
Dockerコンテナのことをさします。
早速やっていく
今回はk3sを使用していきます。
本物のKubernetesにめちゃくちゃちゃ近いminikubeなんかもありますが学習コストが高いので今回は使用しません。
k3sを簡単に解説すると...
軽量なKubernetes。インストールが簡単で、メモリ使用量は半分、100MB未満のバイナリにすべてが収まります。
ここから手順になります
使うもの
- 初期化しても大丈夫なPC
- USB(8GB以上メモリ)
以上。
また、精密な作業なので意識のあるうちにやること(眠い時は禁物)
Windows11を使用しています。
1.バックアップを取る(必要な人)
スタートボタン → 設定 → 検索窓で「バックアップ」を検索 → Windowsバックアップをみて設定に漏れがないか確認する。
2.Ubuntuをダウンロード
今回はUbuntu Desktop 24.04.2 LTS
を使用。
3.Rufusをダウンロード
窓の杜にてダウンロード。
今回はv4.7
を使用。
https://forest.watch.impress.co.jp/library/software/rufus/
4.Rufusを使ってUSBにUbuntuを焼く
以下の通りに設定する。
デバイス → USBの名前
ブートの種類 → 先ほどダウンロードしたububtuファイル
パーティション構成 → GPT
ファイルシステム → FAT32v
クラスターサイズ → 16キロバイト
設定したら書き込み開始。10分くらいかかる。
5.k3sをいれる
F12
を押しながら起動すると、セーフモードに入る。
(機種によって違うので、確かめること)
一番上のTry or install Ubuntu
を選択して中に入る。
ここで早速問題発生。
タッチパッドが動きませんでした。
今回使用したのはdynabookのS73だったがよくよく調べてみたらlenovoでも同じ現象が起きているらしい...。
どうやらSynaptics社のタッチパッドが原因とのこと。有効化の方法があるらしいので調べてやってみてください。
私はUSB接続のマウスを使用して一旦凌ぎました。
最初の設定を終わらせて
Ctrl + Alt + T
してターミナルを開く。
curlをインストール
$ sudo apt install curl
K3sをインストール(クラスターの構築)
$ curl -sfL https://get.k3s.io | sudo sh -
ステータス確認
# サービス起動状態の確認 (k3sサービスが起動中か、ログにエラーが出ていないかが確認できる)
$ sudo systemctl status k3s
k3sのバージョン確認
# ちなみにこのときは`v1.32.3`
$ k3s --version
nginxを立ち上げてみる!
起動
# 必ずk3sに --snapshotter=fuse-overlayfsを明示して起動させる
sudo curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--snapshotter=fuse-overlayfs" sh -
起動後の確認(ノードの確認)
# ubuntuがReadyになっていればok
sudo kubectl get nodes
nginx デプロイ(ポッドの作成)
sudo kubectl create deployment nginx --image=nginx
起動後の確認(ポッドの確認)
sudo kubectl get pods
外部公開
# nginxのPodがRunningになっていればok
sudo kubectl expose deployment nginx --port=80 --type=NodePort
ポート確認
sudo kubectl get svc
アクセスする!
ローカルIPの確認
hostname -I
ブラウザのアドレスバーに入力
http://ローカルIP:NodePort番号
🎉 画面に「いつものアレ」が表示されれば成功!
とりあえず構築してみたことでなんとなくな流れは掴めたような気がする。
ちなみにUbuntu入ってるUSBはめちゃくちゃ繊細なので扱いにはくれぐれも気をつけてください。
参考にした記事