Kubernetes入門!基本概念からMinikubeを使ったハンズオンまで徹底解説

近年、システム開発の現場で当たり前のように使われるようになった**「コンテナ技術」。Dockerを使いこなせるようになったエンジニアが次に直面する壁、それがKubernetes(クーバネティス/K8s)**です。

「名前は聞くけど、難しそうで手が出せない」 「Docker Composeとは何が違うの?」

そんな疑問をお持ちの方に向けて、本記事ではKubernetesの基本概念から、実際にローカル環境で動かすハンズオンまでを徹底解説します。

Kubernetes(K8s)とは何か?

Kubernetes(通称 K8s)は、Googleが自社運用していたBorgというシステムをベースに開発された、オープンソースのコンテナオーケストレーションツールです。

簡単に言うと、**「大量のコンテナを、自動で賢く管理してくれる指揮者」**のような存在です。

なぜKubernetesが必要なのか?

Docker単体では、1つのサーバー上でコンテナを起動・停止することは簡単です。しかし、本番環境で数十、数百のコンテナを複数のサーバーにまたがって運用する場合、以下のような課題が発生します。

  • 死活監視: コンテナが落ちたら誰が再起動するのか?
  • スケーリング: アクセスが増えた時にどうやってコンテナを増やすか?
  • 負荷分散: 複数のコンテナへの通信をどう振り分けるか?

これらを自動化し、解決してくれるのがKubernetesです。

メモ: Kubernetesはギリシャ語で「操舵手(船の舵を取る人)」を意味します。ロゴが船の操舵輪なのはそのためです。


最低限知っておくべき4つの専門用語

Kubernetesを学ぶ際に最初につまずくのが、独自の専門用語です。ここでは、ハンズオンに必要な4つの最重要概念だけを解説します。

1. Node(ノード)

コンテナが実際に動く**「サーバー(マシン)」**そのものです。Kubernetesという集合住宅における「建物」だと考えてください。

2. Pod(ポッド)

Kubernetesにおける最小のデプロイ単位です。1つ以上のコンテナ(Dockerコンテナなど)を含みます。 「コンテナそのもの」ではなく、「コンテナを包む薄い殻(豆のさや)」というイメージです。K8sはコンテナを直接管理するのではなく、このPodを管理します。

3. Deployment(デプロイメント)

Podの**「管理職」**です。「アプリAのPodを常に3つ起動しておく」といった指示書(マニフェスト)を管理します。Podが1つ落ちたら、Deploymentがすぐに新しいPodを作って補充します。

4. Service(サービス)

Podへの**「受付窓口」**です。Podは再起動のたびにIPアドレスが変わりますが、Serviceは固定の窓口を提供し、裏側のPodへ通信を適切に振り分け(ロードバランシング)ます。


【実践】Kubernetesハンズオン

ここからは実際に手を動かして理解を深めましょう。 今回は、ローカル環境で簡単にKubernetesクラスターを構築できるツールMinikubeを使用します。

前提条件

  • Dockerがインストールされていること
  • ターミナル(コマンドプロンプトやPowerShell)が使えること

手順1: 環境構築(Minikubeのインストール)

まずは、公式ドキュメントに従ってMinikubeとkubectl(K8sを操作するコマンドツール)をインストールしてください。

インストール完了後、以下のコマンドでクラスターを起動します。

Bash

minikube start

正常に起動したか確認します。

Bash

kubectl get nodes

Ready と表示されていれば準備完了です。

手順2: Deploymentの作成(Nginxを動かす)

WebサーバーであるNginxをデプロイしてみましょう。 以下のコマンドを実行して、Deploymentを作成します。

Bash

# "my-nginx"という名前で、nginxイメージを使用するDeploymentを作成
kubectl create deployment my-nginx --image=nginx

作成されたか確認します。

Bash

kubectl get deployments

手順3: Podの確認

Deploymentによって自動的にPodが作成されているはずです。

Bash

kubectl get pods

STATUSRunning になっていれば、Nginxのコンテナが起動しています。

手順4: Serviceの作成(外部公開)

このままでは、クラスターの外からNginxにアクセスできません。Serviceを作成して公開します。

Bash

# Deploymentを公開(ポート80番を開放)
kubectl expose deployment my-nginx --type=NodePort --port=80

手順5: ブラウザで確認

Minikubeの場合、以下のコマンドでブラウザを自動起動してアクセスできます。

Bash

minikube service my-nginx

ブラウザに「Welcome to nginx!」と表示されましたか? これで、あなたはKubernetesを使ってWebサーバーを公開することに成功しました!

手順6: 後片付け

作成したリソースを削除します。

Bash

kubectl delete service my-nginx
kubectl delete deployment my-nginx
minikube stop

まとめと次のステップ

今回はKubernetesの基礎概念と、Minikubeを使った簡単なハンズオンを紹介しました。

  • Kubernetesはコンテナ運用の自動化ツール
  • Podが最小単位、Deploymentが数を管理、Serviceが通信を管理

次のステップとして、コマンド(命令的)ではなく、YAMLファイル(宣言的)を使った管理方法(マニフェストファイルの記述)を学ぶことをおすすめします。これによって「Infrastructure as Code」を実現できるようになります。

もし、Dockerの基礎から復習したい場合は、以下の記事も参考にしてください。

Kubernetesは奥が深いですが、まずは「動いた!」という体験が重要です。ぜひご自身のPCでも試してみてください。




投稿日

カテゴリー:

投稿者:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です