デプロイを作成する

適用対象: AKS on Azure Stack HCI 22H2、AKS on Windows Server

この記事では、Kubernetes デプロイの概要と、Azure Arc で有効になっている AKS でデプロイを作成および更新する方法について説明します。

Kubernetes デプロイの概要

"デプロイ" とは、パフォーマンスを管理し、ポッドの望ましい動作を規定している Kubernetes オブジェクトを指します。 これにより、アプリケーションに割り当てられているポッドを含め、アプリケーションのライフ サイクルが規定されます。 デプロイでは、アプリケーションの目的の状態を伝える方法が提供され、コントローラーは現在の状態を目的の状態に変更する作業を行います。

デプロイにより、ポッド インスタンスを起動するプロセスが自動化され、クラスター内のすべてのノードで、定義されたとおりに実行されるようになります。 管理者と IT プロフェッショナルは、デプロイを使用してアプリケーションから必要なものを伝え、Kubernetes はアプリケーションの目的の状態を作成するために必要なすべての手順を実行します。

デプロイではアプリケーションの実行方法を定義しますが、アプリケーションがクラスター内のどこに配置されるかは保証されません。 たとえば、アプリケーションですべてのノードでポッドのインスタンスが必要な場合は、DaemonSet を使用します。 ステートフル アプリケーションの場合、StatefulSet によって一意のネットワーク識別子、永続ストレージ、および順序付けされたデプロイ/スケーリングが提供されます。

Kubernetes のデプロイ オブジェクトを使用すると、次のことができます。

  • レプリカ セットまたはポッドをデプロイします。
  • アプリケーションのインスタンスの数をスケールアップまたはスケールダウンします。
  • アプリケーションの実行中のすべてのインスタンスを更新します。
  • アプリケーションの実行中のすべてのインスタンスを別のバージョンにロールバックします。
  • デプロイを一時停止または続行します。

詳細については、「 Kubernetes のデプロイ」を参照してください。

デプロイの作成

デプロイを作成するには、kubectl apply または kubectl create コマンドを使います。 必要な数のポッドが維持および監視されるため、デプロイの作成後に、これらが実行中で使用可能になります。 あるポッドで障害が発生した場合、Kubernetes はこのポッドの代わりとなるレプリカを直ちにクラスターに投入します。

次の例では、YAML 形式の配置マニフェスト ファイルの機能について説明します。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - image: nginx
          name: nginx
          ports:
            - containerPort: 80

デプロイ、レプリカ セット、ポッドを表示するには、次のコマンドを実行します。

kubectl get deployment, replicaset, pod

配置の更新

デプロイのメイン利点は、Kubernetes プログラムを自動的に更新できることです。 デプロイを使用しない場合は、ポッドの作成時にすべての古いポッドを手動で終了し、新しいポッド バージョンを開始し、問題がないかチェックを実行する必要があります。 kubectl describe deployment を実行すると、どの順序でポッドが立ち上げられ、削除されたかを確認できます。

ポッド テンプレートまたは目的の状態を更新するだけで、デプロイによって更新プロセスが自動化されます。 選ばれた更新が適用されるまで、デプロイによってアクション (新しいポッドの作成、より多くのリソースの割り当てなど) を通してバックグラウンドでプログラムの状態が変化していきます。

デプロイに問題があると、Kubernetes によって以前のバージョンに自動的にロールバックされます。 kubectl rollout undo コマンドを使用して特定のバージョンに明示的にロールバックしたり、kubectl rollout pause を使用してデプロイを一時的に停止したりすることもできます。

デプロイを更新するための方法

Kubernetes には、環境のニーズに合わせてさまざまな方法で更新できるように、いくつかのデプロイ方法が用意されています。 最も一般的な更新方法は次の 3 つです。

  • ローリング アップデート: この更新は段階的なプロセスであり、パフォーマンスへの影響がわずかで、ダウンタイムが生じないように Kubernetes システムを更新できます。 更新速度を犠牲にして、ダウンタイムを最小限に抑えます。
  • 再作成: この方法はオールオアナッシングのプロセスであり、短いダウンタイム期間でシステムのすべての局面を同時に更新することができます。 迅速に更新が行われますが、ダウンタイムが発生します。
  • カナリア: この方法は部分的な更新プロセスであり、全面的なロールアウトを行わずに、実際のユーザーを対象に新しいプログラム バージョンをテストできます。 選ばれた少人数のユーザーを対象に迅速に更新を行い、後で全面的なロールアウトを行います。

次の手順