はじめに
この実験では、Kubernetes でのデプロイメントを使ってポッドをスケーリングし管理する方法を学びます。デプロイメントは、より高レベルの抽象化であり、ポッドのレプリカセットを宣言的に管理しスケーリングすることができます。デプロイメントを使用することで、簡単にアプリケーションを新しいバージョンに更新し、以前のバージョンにロールバックし、変化するニーズに応えてアプリケーションをスケーリングアップまたはダウンすることができます。
Minikube クラスタを起動する
リソースを作成する前に、動作している Kubernetes クラスタが必要です。Minikube は、ローカル マシン上で動作する軽量な Kubernetes 環境です。
作業ディレクトリに移動する:
ターミナルを開き、デフォルトのプロジェクト フォルダに移動します。
cd /home/labex/projectMinikube を起動する:
Minikube を起動して Kubernetes クラスタを初期化します。
minikube start- このコマンドは、ローカル マシン上に単一ノードの Kubernetes クラスタをセットアップします。
- Minikube の起動には、システムの性能に応じて数分かかる場合があります。
Minikube が動作していることを確認する:
Minikube クラスタの状態を確認します。
minikube statuskubeletやapiserverなどのコンポーネントがRunningと表示されていることを確認します。- クラスタが動作していない場合は、
minikube startを再度実行します。
Minikube の起動に問題がある場合は、必要に応じて minikube delete を使用して環境をリセットします。
デプロイメントを作成する
/home/labex/project/以下にmy-deployment.yamlという名前のファイルを作成し、以下の内容を記述します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
ports:
- containerPort: 80
この YAML ファイルは、3 つのレプリカを持ち、Nginx コンテナを実行するデプロイメントを定義しています。selector フィールドは、app ラベルに基づいてデプロイメントによって制御されるポッドを選択します。
my-deploymentデプロイメントを展開する:
kubectl apply -f my-deployment.yaml
これにより、my-deployment デプロイメントとその関連するレプリカセットとポッドが作成されます。
- デプロイメントが作成されたことを確認する:
kubectl get deployments
これにより、クラスタ内のデプロイメント、つまり my-deployment デプロイメントが表示されます。
デプロイメントをスケーリングする
my-deploymentデプロイメントを 5 つのレプリカにスケーリングアップする:
kubectl scale deployment my-deployment --replicas=5
これにより、my-deployment デプロイメントのレプリカ数が 5 に増やされます。
- デプロイメントがスケーリングされたことを確認する:
kubectl get deployments
これにより、クラスタ内のデプロイメント、つまり 5 つのレプリカを持つ my-deployment デプロイメントが表示されます。
デプロイメントを更新する
my-deploymentデプロイメントを編集してnginx:1.19イメージを使用するようにする:
kubectl edit deployment my-deployment
これにより、デフォルトのテキストエディタでデプロイメントが開きます。image フィールドを nginx:1.19 に変更してファイルを保存します。
- デプロイメントが更新されたことを確認する:
kubectl rollout status deployment/my-deployment
これにより、my-deployment デプロイメントの最新のロールアウトの状態が表示されます。
デプロイメントをロールバックする
my-deploymentデプロイメントを前のバージョンにロールバックする:
kubectl rollout undo deployment/my-deployment
これにより、my-deployment デプロイメントが前のバージョンにロールバックされます。
- デプロイメントがロールバックされたことを確認する:
kubectl rollout status deployment/my-deployment
これにより、my-deployment デプロイメントの最新のロールアウトの状態が表示されます。
クリーンアップ
my-deploymentデプロイメントを削除する:
kubectl delete deployment my-deployment
これにより、my-deployment デプロイメントとその関連するレプリカセットとポッドが削除されます。
まとめ
この実験では、Kubernetes でデプロイメントを作成および管理する方法を学びました。3 つのレプリカを持つデプロイメントを作成し、デプロイメントを 5 つのレプリカにスケーリングアップし、異なるイメージを使用するようにデプロイメントを更新し、デプロイメントを前のバージョンにロールバックしました。


