Kubernetesは、複数のコンテナをまとめて動かし、壊れた時の作り直しや台数の調整を助ける仕組みです。最初から本番運用を再現しようとせず、ローカルでDeploymentとServiceの関係を確かめます。
今回やること
minikubeで学習用クラスタを起動するDeploymentでnginxのPodを1つ管理するServiceでPodへ安定した入口を作る- ブラウザまたは
curlで応答を確認する
3つの言葉
| 名前 | 役割 |
|---|---|
| Pod | コンテナを動かす最小単位 |
| Deployment | 指定した数のPodを維持する管理役 |
| Service | 入れ替わるPodへ届く、安定した通信先 |
Podは作り直されると名前やIPが変わります。そのため、利用側は通常Podへ直接つながず、Serviceを使います。

準備
kubectlとminikubeの公式手順に従ってminikubeをインストールしてください。Dockerを使える状態で、次を実行します。
minikube start
kubectl get nodes
Readyのノードが1つ表示されれば準備できています。会社や学校から借りたクラスタへ、学習用コマンドを実行してはいけません。ここでは自分のローカルminikubeだけを使います。
Deploymentを作る
まずはnginxを1つ動かします。
kubectl create deployment demo-web --image=nginx:1.30.4
kubectl get deployments
kubectl get pods -l app=demo-web
nginx:1.30.4は、この記事の確認時点(2026年7月25日)にDocker Official Imageで案内されているstable系の明示的なパッチタグです。後から試す場合は、nginx公式イメージの対応タグを確認し、その時点でサポートされているstable系のパッチタグへ読み替えてください。
Deploymentが「Podを1つに保つ」と宣言し、Kubernetesが実際のPodを作ります。Podの状態がRunningになるまで少し待つことがあります。
内容をYAMLで見ると、DeploymentがPodの数とコンテナイメージを管理していることが分かります。
kubectl get deployment demo-web -o yaml
Serviceで公開する
次に、Podへ届く入口を作ります。
kubectl expose deployment demo-web --type=NodePort --port=80
minikube service demo-web --url
最後のコマンドが表示したURLをブラウザで開くか、別のターミナルでcurl <表示されたURL>を実行します。nginxのWelcomeページが返れば、Serviceを通った通信に成功しています。
成功確認
次の3点を確認してください。
kubectl get deployment demo-web
kubectl get pods -l app=demo-web
kubectl get service demo-web
- Deploymentの
READYが1/1である - Podが
Runningである - Service経由でnginxの応答が返る
Podを削除してもDeploymentが新しいPodを作ることも観察できます。
kubectl delete pod -l app=demo-web
kubectl get pods -l app=demo-web --watch
表示を止める時はCtrl + Cです。新しいPodがRunningになったら、ServiceのURLで再び応答を確認します。
よくあるつまずき
PodがImagePullBackOffになる
イメージ名やネットワークを確認します。原因は次で見られます。
kubectl describe pod <Pod名>
URLへ接続できない
最初にminikube statusとkubectl get service demo-webを確認します。クラウドのLoadBalancerとローカルのNodePortは動き方が異なるため、この入門ではminikube serviceを使います。
練習
DeploymentのPod数を2つに増やし、状態を確認します。
kubectl scale deployment demo-web --replicas=2
kubectl get pods -l app=demo-web
2つのPodがRunningになっても、Service名はdemo-webのままであることを確認してください。
後片付け
この記事で作ったServiceとDeploymentだけを削除します。
kubectl delete service demo-web
kubectl delete deployment demo-web
学習用minikubeクラスタ自体も不要なら、次で削除できます。クラスタ内のデータも消えるため、この記事専用に作ったローカルクラスタであることを確認してから実行してください。
minikube delete
次のステップ
永続ストレージ、Secret、Ingress、監視、Helmはそれぞれ設定と運用判断が必要です。この最小例を動かせてから、目的に応じて学びましょう。