このラボでは、Deploymentリソースを使ってアプリケーションをデプロイし、レプリカ数の管理とスケーリングを学びます。
まずDeploymentのマニフェストファイルを作成します。
cat << 'EOF' > whoami-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: whoami
labels:
app: whoami
spec:
replicas: 3
selector:
matchLabels:
app: whoami
template:
metadata:
labels:
app: whoami
spec:
containers:
- name: whoami
image: containous/whoami
ports:
- containerPort: 80
EOF
# マニフェストを適用
kubectl apply -f whoami-deployment.yaml
# Deploymentの状態を確認
kubectl get deployments
# Podが3つ起動していることを確認
kubectl get pods -l app=whoami
DeploymentはReplicaSetを介してPodを管理しています。
# ReplicaSetを確認
kubectl get replicasets
# ReplicaSetの詳細
kubectl describe replicaset -l app=whoami
# レプリカ数を5に増やす
kubectl scale deployment whoami --replicas=5
# Podが増えたことを確認
kubectl get pods -l app=whoami
# レプリカ数を2に減らす
kubectl scale deployment whoami --replicas=2
# Podが減ったことを確認
kubectl get pods -l app=whoami
Podを手動で削除して、Deploymentが自動的に再作成することを確認します。
# 現在のPod一覧(Pod名を確認)
kubectl get pods -l app=whoami
# Podを1つ削除(表示されたPod名に置き換えてください)
kubectl delete pod [Pod名]
# すぐにPod一覧を確認 - 新しいPodが作成されている
kubectl get pods -l app=whoami
# Deploymentを削除(配下のReplicaSet、Podも自動削除される)
kubectl delete -f whoami-deployment.yaml
# 確認
kubectl get deployments
kubectl get pods -l app=whoami
# 1. Deployment作成(コマンドラインで作成する方法)
kubectl create deployment nginx-deploy --image=nginx --replicas=2
# 2. Pod確認
kubectl get pods -l app=nginx-deploy
# 3. スケールアップ
kubectl scale deployment nginx-deploy --replicas=4
kubectl get pods -l app=nginx-deploy
# 4. セルフヒーリング確認
kubectl delete pod $(kubectl get pods -l app=nginx-deploy -o jsonpath='{.items[0].metadata.name}')
kubectl get pods -l app=nginx-deploy
# 5. クリーンアップ
kubectl delete deployment nginx-deploy