2026年9月4日
2026年9月4日
Kubernetesの基本概念(Pod/Service/Deployment)を理解する
はじめに
Kubernetesは、大規模な分散システムでのアプリケーション配備、管理を自動化するためのオープンソースプラットフォームです。Pod/Service/Deploymentなどの基本的な概念は、Kubernetes上でコンテナベースのアプリケーションを効果的に運用するために理解し、使用することが重要です。
症状・背景
- Kubernetesでのアプリケーション配備や管理が複雑で不明瞭な場合
- 大規模なデプロイメントが必要なときに手間がかかる場合
- ノードの自動スケーリングやリソースの最適化を実現したい場合
手順・設定方法
ステップ1: Podの作成と管理
# ディレクトリを作成し、Dockerfileを作成します。
mkdir myapp && cd myapp
cat <<EOF > Dockerfile
FROM nginx:latest
COPY index.html /usr/share/nginx/html/
CMD ["nginx", "-g", "daemon off;"]
EOF
# Dockerイメージをビルドします。
docker build -t myapp .
# Podを作成します。
kubectl apply -f pod.yaml
# Podの状態を確認します。
kubectl get pods
ステップ2: Serviceの作成と管理
# Serviceを作成します。
cat <<EOF > service.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 80
---
EOF
kubectl apply -f service.yaml
# Serviceの状態を確認します。
kubectl get services
ステップ3: Deploymentの作成と管理
# Deploymentを作成します。
cat <<EOF > deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: MyApp
template:
metadata:
labels:
app: MyApp
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
EOF
kubectl apply -f deployment.yaml
# Deploymentの状態を確認します。
kubectl get deployments
ステップ4: デプロイメントとサービスの連携
# ServiceにDeploymentをリンクさせます。
cat <<EOF > service-deployment.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 80
---
EOF
kubectl apply -f service-deployment.yaml
# Podの状態を確認します。
kubectl get pods
注意事項
- Podは一組のコンテナで構成され、その内部では共有ネットワークが利用可能です。
- ServiceはPodにアクセスするためのエンドポイントを作ります。
- Deploymentはアプリケーションの自動スケーリングとロールバックを提供します。
まとめ
1. Pod: Kubernetes上の最小単位のコンテナグループです。同じネットワーク空間で動作します。
2. Service: Podのセットにアクセスするためのエンドポイントを作ります。
3. Deployment: 簡単な更新、ロールバック、自動リバランスをサポートします。
関連記事: