0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MacBook Air 2018 (Linux Mint) に Kubernetes (minikube) をねじ込んでみた②

0
Last updated at Posted at 2026-03-16

はじめに

  • 前回の記事の続き
  • MacBook Air 2018にLinux Mintをインストールした特殊な環境で、Kubernetes(K8s)の学習を始めました
  • minikube start してから実際にブラウザでアプリを確認するまでの手順と、道中で出会う謎の用語たちを具体的な例えを添えてで解説します
  • 奇妙な言い回しはGeminiのせいなので悪しからず

1. 爆速でアプリを動かす手順

細かい説明の前に、まずは動かして「やった感」を出します。
(正確にはGeminiに言われたとおりにコマンド実行しただけです)

ステップ1:クラスター起動

minikube start
minikube dashboard  # 別窓でGUIを確認

image.png

勝手にダッシュボードが起動したので驚き&感動しました。キャプチャはのちほど
ポッドを3つに増やした際に取得したものなので実際の画面とは異なります

ステップ2:アプリ(Deployment)の作成

kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080 #dashboardと
別窓で実行
  • 正直ここがよくうわからなかったので、あとでGeminiに聞いて解説してもらいました(後述します)

【重要】LoadBalancerを機能させる:minikube tunnel

  • 通常、クラウド(AWSやGCP)であれば type: LoadBalancer と設定すれば、勝手に豪華な外部IPが割り振られますがここはローカルPC(Linux Mint)の上なのでこのままでは、いくら待っても EXTERNAL-IP は (保留中)のままになります。そこで必要になるのがこのコマンドです。
minikube tunnel #さらに別窓を開いて実行
# 実行結果
tak@tak-MacBookAir:~$ minikube tunnel
[sudo] tak のパスワード:     
Status:	
	machine: minikube
	pid: 19755
	route: 10.96.0.0/12 -> 192.168.49.2
	minikube: Running
	services: [hello-node]
    errors: 
		minikube: no errors
		router: no errors
		loadbalancer emulator: no errors
  • 何をしているのか: Linux Mintのネットワークから、Minikube内の隔離された世界へ「専用の地下通路」を開通させています。
  • 注意点: このコマンドは実行中、ターミナルを占有します。Ctrl+Cで止めると、せっかく繋がったブラウザとの接続も切れてしまうので、別のターミナルで「おまじない」のように動かし続けておく必要があります。

ステップ3:外部公開(Service)と接続

kubectl expose deployment hello-node --type=LoadBalancer --port=8080
minikube service hello-node  # ブラウザが自動起動

image.png

2. 【最重要】これって何?用語解説

動くには動いた。でも、自分が何を叩いたのか分からない状態なので、具体例を交えてGeminiに解説してもらいました。

① Node(ノード)

  • 正体: コンテナが住むための「物理サーバー」または「仮想マシン」
  • 具体例: 今わたしの目の前にある MacBook(Linux Mint) そのものです
  • 例え: 「マンション一棟」に相当します

② Pod(ポッド)

  • 正体: Kubernetesにおける最小の管理単位。1つ以上のコンテナを包む「殻」
  • 具体例: kubectl get pods で見える、実際に動いているアイツです
  • 例え: マンションの「一室」。住人(コンテナ)は部屋(Pod)単位で管理されます

③ Deployment(デプロイメント)

  • 正体: Podを「いつ、どこで、いくつ」動かすかを管理する宣言書
  • 具体例: 「hello-node というPodを常に1つ起動させておけ!」という命令そのもの
  • 例え: 「マンションの管理会社」。もし部屋(Pod)が火事(エラー)で消滅しても、管理会社(Deployment)がすぐに新しい部屋を契約して用意してくれます

④ Service(サービス)

  • 正体: Podにアクセスするための「固定IP」や「ポート」を提供する窓口
  • なぜ必要か: Podは死ぬとIPアドレスが変わります。Serviceがないと、外部からアクセスする際に「引っ越し先の住所が分からない!」となってしまいます
  • 例え: 「マンションの受付・代表電話」。受付に電話すれば、担当の部屋(Pod)に繋いでくれます

⑤ kubectl(キューブコントロール)

  • 正体: Kubernetesクラスターを操作するためのリモコン
  • 具体例: kubectl get nodes など
  • 例え: 「管理用タブレット」。これを操作してマンションの設定を変更します

3. なぜ minikube service が必要なのか?

  • 通常のWeb開発なら localhost:8080 で見れるはずですが、K8sは「クラスター内部のネットワーク」に閉じこもっています。
  • minikube service コマンドは、「クラスターの壁に無理やり穴を空けて、あなたのブラウザを繋げる」という、いわば魔法のトンネル掘りを行っているのです。

とりあえずまとめ

Deployment:管理職(Podを死なせない)
Pod:現場(コンテナが動く場所)
Service:受付(外からの窓口)
この3つさえ押さえておけば、Kubernetesの会話の8割にはついていけます。

とGeminiに言われたのですが、正直まだそれぞれの用語、役割、メリットデメリットが腹落ちしていないので、次回は他の機能なども深堀ってみます。

停止手順も載せておきます

1. 「一時停止」する(また後で続きをやる場合)

  • PodやDeploymentの設定は残したまま、Minikubeの仮想マシン(またはプロセス)だけを止めます。
minikube stop

状態: マンション(Node)の電気を消して閉館するイメージ。

次回の再開: minikube start を打てば、先ほどの hello-node が自動的にムクッと起き上がってきます。

2. 「更地にする」(学習が終わってスッキリしたい場合)

  • 作ったアプリや設定をすべて削除し、Minikube自体も完全に消去します。
minikube delete

状態: マンションを爆破して更地にするイメージ。

次回の再開: すべて消えるので、また kubectl create deployment... からやり直しです。

3. 【おまけ】アプリだけ消す(クラスターは残す場合)

  • Minikubeは起動したまま、今回作った hello-node だけを消したいときはこれ。
kubectl delete service hello-node
kubectl delete deployment hello-node

今回は

  • 設定を残しておきたいので、
minikube stop

を実行しておきます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?