はじめに
こんにちは、クラウド事業部の葛城です。
今回は、Amazonのセールで購入したGMKTec の Mini PC で、おうち Kubernetes を構築し、さらにAmazon EKSのコンソールから確認できるようにしました。
以前から気になっていて、一度作ってしまえば電気代だけで実質無料で
好き勝手にいじれるおうちKubernetesを作ってみたく、実際に構築してみました。
1. ハードウェア選定とセットアップ
最近、ラズパイなども値段が高騰していてなかなか手が出せていなかったが、今回Amazon でセールで売られていた mini PC を購入。
ラックは 100 均で購入したメタルラックにしました。
合計金額も 5 万円以内に抑えられたので、比較的お安く導入できたかと。
性能的には、普通に HD 画質(1080p)で問題なく Youtube 再生でき、気に入ってます
コスパを重視した以下の 3 台のサーバーで、おうち Kubernetes を構築しました。
今回の構成では、Master サーバー 1 台と Worker サーバー 2 台。
サーバーの構成は以下の通りです。
品名 | 個数 | 値段 | スペック |
---|---|---|---|
GMKtec (Intel N95) | 1 | 24,699 | メモリ: 16GB, ストレージ: 1TB |
GMKtec (Intel Celeron J4125) | 2 | 12,081 | メモリ: 8GB, ストレージ: 126GB |
合計 | - | 48,861 |
購入時には Windows 11 Pro が入ってましたが、Ubuntu 20.04.2 LTS を USB ブートからインストールしました。
Bluetooth は試してないですが、内蔵の Wifi も利用できました。
ただ、Master Node の GMKtec (Intel N95) と Ubuntu 20.04.2 LTS の相性が良くないのか、内蔵 wifi が認識されないという問題が発生しました。
OS を切り替える前は Wifi は利用できていた。(Worker の PC は問題なし)
なかなか解決策が見つからなかったのですが、
結果的に以下の参考サイトの手順を実施して Realtek Semiconductor の b852 の wifi ドライバーをインストールすることで解決できました。
同じケースで困ってる人用にメモを残しておきます。
wifi driver - Linux Mint Forums
# Ubuntuで認識されていなかった内蔵wifiは以下 lspci | grep Network 01:00.0 Network controller: Realtek Semiconductor Co., Ltd. Device b852
2. k8s 環境構築
今回、初めて k3s を使って Kubernetes 環境を構築しましたが、かなり簡単に構築ができました。
$ kubectl get node NAME STATUS ROLES AGE VERSION ktr-nucbox-g1 Ready control-plane,master 36h v1.27.3+k3s1 ktr-nucbox3-02 Ready worker 35h v1.27.3+k3s1 ktr-nucbox3-01 Ready worker 35h v1.27.3+k3s1
具体的な手順は省略しますが、以下のサイトを参考にしました。
3. おうち Kubernetes を EKS に登録する手順
EKS への登録手順は意外と簡単でした。
今回はやっていないですが、同じ手順で他クラウド(AKS, GKE)の登録も可能かと思います。
詳細な手順は公式ドキュメントをご参照ください。
まずは、適切な IAM で aws の認証を行います。
この時、IAM の Role の権限が足りていない場合は、EKS のコンソール表示がうまくいかなかったです。
aws configure
次に、eksctl コマンドをインストールします。以下のページを参照してインストールしてください。
eksctl コマンドで EKS にクラスタを登録します。
mkdir home-k8s; cd home-k8s eksctl register cluster --name home-k8s --provider other —region ap-northeast-1
この状態では、まだ EKS の方では認識されておらずステータスは保留中
登録コマンドが完了すると、自動で yaml ファイルが作られます。
特に編集する必要もなく、aws configure
で利用した IAM の情報がそのままマニフェストに設定されてました。
ls home-k8s eks-connector-clusterrole.yaml eks-connector-console-dashboard-full-access-group.yaml eks-connector.yaml
あとは、この yaml のマニフェストをおうち Kubernetes にデプロイするだけで、EKS 側で認識されるようになります。
kubectl apply -f eks-connector.yaml,eks-connector-clusterrole.yaml,eks-connector-console-dashboard-full-access-clusterrole-binding.yaml
これでEKSへの登録完了です
利用しなくなった場合は、以下で、登録したクラスタを削除してください
kubectl delete -f eks-connector.yaml,eks-connector-clusterrole.yaml,eks-connector-console-dashboard-full-access-clusterrole-binding.yaml eksctl delete cluster --name home-k8s --wait
4. EKS で登録したおうち Kuberntes をコンソールで確認
EKS に登録した後、AWS のコンソールから自分の Kubernetes クラスターの状態を確認することができます。
ノードの状態確認
Pod の状態
DeploymentやPod のステータスやイベントなどの情報もコンソールから確認できました。
少し触ってましたが、普通の EKS で構築したものと違って外から kubectl で操作するなどはできなかったです。
(おうち Kubernets なので、サーバーのエンドポイントなど認証に必要な情報がそもそもなく)
EKS のポータルサイトでリソースの状態を確認するのみでしたが、今後 EKS に登録することで他にもできることがあれば記事にできればと思います。
参考にさせていただいたサイト
以下のページを参考にさせてもらいました。
EKS Connector でおうち Kubernetes 環境を接続してみる | TECH BLOG
おわりに
GMEtec の Mini PC を使っておうち Kubernetes を構築し、EKS コンソールに表示する方法をご紹介しました。
この記事が皆様の参考になれば幸いです。
私達クラウド事業部は AWS などのクラウド技術を活用した SI/SES のご支援をしております。
https://www.ap-com.co.jp/service/utilize-aws/
また、一緒に働いていただける仲間も募集中です! 今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。