Azure Kubernetes Service on Azure Stack HCI and Windows Server でデプロイを作成する

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

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

デプロイではアプリケーションの実行方法を定義しますが、アプリケーションがクラスター内のどこに配置されるかは保証されません。 たとえば、すべてのノードにポッドのインスタンスが必要なアプリケーションの場合は、デーモンセットを使用します。 ステートフル アプリケーションの場合、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 システムを更新できます。 更新速度を犠牲にして、ダウンタイムを最小限に抑えます。
  • 再作成: この方法はオールオアナッシングのプロセスであり、短いダウンタイム期間でシステムのすべての局面を同時に更新することができます。 迅速に更新が行われますが、ダウンタイムが発生します。
  • カナリア: この方法は部分的な更新プロセスであり、全面的なロールアウトを行わずに、実際のユーザーを対象に新しいプログラム バージョンをテストできます。 選ばれた少人数のユーザーを対象に迅速に更新を行い、後で全面的なロールアウトを行います。

次の手順