APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

GMKTecでおうちKubernetesを構築してEKSコンソールに表示してみた

はじめに

こんにちは、クラウド事業部の葛城です。

今回は、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 環境を構築しましたが、かなり簡単に構築ができました。

K3s

$ 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

具体的な手順は省略しますが、以下のサイトを参考にしました。

意識低いおうちKubernetesの作り方

3. おうち Kubernetes を EKS に登録する手順

EKS への登録手順は意外と簡単でした。
今回はやっていないですが、同じ手順で他クラウド(AKS, GKE)の登録も可能かと思います。
詳細な手順は公式ドキュメントをご参照ください。

docs.aws.amazon.com

まずは、適切な IAM で aws の認証を行います。
この時、IAM の Role の権限が足りていない場合は、EKS のコンソール表示がうまくいかなかったです。

aws configure


次に、eksctl コマンドをインストールします。以下のページを参照してインストールしてください。

github.com

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/

また、一緒に働いていただける仲間も募集中です! 今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp

本記事の投稿者: 葛城
AWSを活用したインフラ系のご支援を担当しています。