デプロイメントを使ったポッドのスケーリングと管理

KubernetesBeginner
オンラインで実践に進む

はじめに

この実験では、Kubernetes でのデプロイメントを使ってポッドをスケーリングし管理する方法を学びます。デプロイメントは、より高レベルの抽象化であり、ポッドのレプリカセットを宣言的に管理しスケーリングすることができます。デプロイメントを使用することで、簡単にアプリケーションを新しいバージョンに更新し、以前のバージョンにロールバックし、変化するニーズに応えてアプリケーションをスケーリングアップまたはダウンすることができます。

Minikube クラスタを起動する

リソースを作成する前に、動作している Kubernetes クラスタが必要です。Minikube は、ローカル マシン上で動作する軽量な Kubernetes 環境です。

  1. 作業ディレクトリに移動する:

    ターミナルを開き、デフォルトのプロジェクト フォルダに移動します。

    cd /home/labex/project
    
  2. Minikube を起動する:

    Minikube を起動して Kubernetes クラスタを初期化します。

    minikube start
    
    • このコマンドは、ローカル マシン上に単一ノードの Kubernetes クラスタをセットアップします。
    • Minikube の起動には、システムの性能に応じて数分かかる場合があります。
  3. Minikube が動作していることを確認する:

    Minikube クラスタの状態を確認します。

    minikube status
    
    • kubeletapiserver などのコンポーネントが Running と表示されていることを確認します。
    • クラスタが動作していない場合は、minikube start を再度実行します。

Minikube の起動に問題がある場合は、必要に応じて minikube delete を使用して環境をリセットします。

デプロイメントを作成する

  1. /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 ラベルに基づいてデプロイメントによって制御されるポッドを選択します。

  1. my-deployment デプロイメントを展開する:
kubectl apply -f my-deployment.yaml

これにより、my-deployment デプロイメントとその関連するレプリカセットとポッドが作成されます。

  1. デプロイメントが作成されたことを確認する:
kubectl get deployments

これにより、クラスタ内のデプロイメント、つまり my-deployment デプロイメントが表示されます。

デプロイメントをスケーリングする

  1. my-deployment デプロイメントを 5 つのレプリカにスケーリングアップする:
kubectl scale deployment my-deployment --replicas=5

これにより、my-deployment デプロイメントのレプリカ数が 5 に増やされます。

  1. デプロイメントがスケーリングされたことを確認する:
kubectl get deployments

これにより、クラスタ内のデプロイメント、つまり 5 つのレプリカを持つ my-deployment デプロイメントが表示されます。

デプロイメントを更新する

  1. my-deployment デプロイメントを編集して nginx:1.19 イメージを使用するようにする:
kubectl edit deployment my-deployment

これにより、デフォルトのテキストエディタでデプロイメントが開きます。image フィールドを nginx:1.19 に変更してファイルを保存します。

  1. デプロイメントが更新されたことを確認する:
kubectl rollout status deployment/my-deployment

これにより、my-deployment デプロイメントの最新のロールアウトの状態が表示されます。

デプロイメントをロールバックする

  1. my-deployment デプロイメントを前のバージョンにロールバックする:
kubectl rollout undo deployment/my-deployment

これにより、my-deployment デプロイメントが前のバージョンにロールバックされます。

  1. デプロイメントがロールバックされたことを確認する:
kubectl rollout status deployment/my-deployment

これにより、my-deployment デプロイメントの最新のロールアウトの状態が表示されます。

クリーンアップ

  1. my-deployment デプロイメントを削除する:
kubectl delete deployment my-deployment

これにより、my-deployment デプロイメントとその関連するレプリカセットとポッドが削除されます。

まとめ

この実験では、Kubernetes でデプロイメントを作成および管理する方法を学びました。3 つのレプリカを持つデプロイメントを作成し、デプロイメントを 5 つのレプリカにスケーリングアップし、異なるイメージを使用するようにデプロイメントを更新し、デプロイメントを前のバージョンにロールバックしました。