Kubernetesを使ううえで最も基本的かつ実用的なリソースが Deployment(デプロイメント) です。
Pod を直接作ることもできますが、本番環境では Deployment を使うのが一般的です。
このハンズオンでは、次のような流れで進めます:
🛠 ハンズオンの流れ
- Deploymentマニフェストを作ってみる
kubectl apply
でクラスタに適用- 状態を
get
/describe
/logs
で確認 - Pod に
exec
で入り、動作を確認 - Deployment を削除してクリーンアップ
① Deploymentマニフェストを作成する
以下のような YAML ファイル(nginx-deployment.yaml
)を作ってください。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
replicas: 2
→ Podを2つ起動するimage: nginx:1.25
→ Docker Hub の Nginx公式イメージを使用containerPort: 80
→ Webサーバーなので80番ポートを開放
② クラスタに適用する
kubectl apply -f nginx-deployment.yaml
適用後、以下で状況を確認してみましょう:
kubectl get deployments
kubectl get pods
③ ログや詳細を見てみる
kubectl describe deployment nginx-deployment
kubectl get pods -o wide
# 任意のPod名に対してログ確認
kubectl logs <pod名>
④ Podに入ってWebサーバーを確認
Pod内に exec
で入って curl を試すことができます。
kubectl exec -it <pod名> -- bash
# Alpine系のイメージなら sh
curl localhost
ブラウザからアクセスするには、Serviceの作成が必要になりますが、ここではハンズオンの基本にとどめます。
⑤ クリーンアップ
ハンズオン終了後は、作成したリソースを削除しておきましょう。
kubectl delete -f nginx-deployment.yaml
✨ 補足:Podを直接作る方法
Deploymentではなく、単体Pod を作る方法もあります。以下は簡単なPodの例です。
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
kubectl apply -f nginx-pod.yaml
ただし、Pod単体では自己修復やスケーリングの機能がないため、実際の運用では Deployment を使うことが推奨されます。
✅ まとめ
操作 | 内容 |
---|---|
Deployment作成 | アプリを定義して複数Podを管理 |
apply | YAMLを使ってクラスタに反映 |
get / describe | 状態の確認 |
logs / exec | トラブルシュートやアプリの確認に便利 |
delete | クリーンアップ |