既に作成されたDeploymentを更新することで、Podをロールアウトすることができます。
ロールアウトを実行するためには、Deploymentに定義したPodのテンプレート(spec.template)を更新した後に、以下のコマンドを実行します。
$ kubectl apply -f <更新したDeploymentのマニフェストファイル>
上のコマンドを実行すると、ロールアウトが自動的にトリガーされます。 ロールアウトが発生すると、Deploymentは、古いReplicaSetとは別に、新しいReplicaSetを作成して、Podを置き換えます。 ロールアウトの状態は、以下のコマンドで確認します。
$ kubectl rollout status deployment <Deploymentの名前>
ロールアウトが成功すると、以下のようなメッセージが出力されます。
deployment "<Deploymentの名前>" successfully rolled out"
時間が経過しても、上のメッセージが出力されない場合、ロールアウトが失敗している可能性があります。 kubectl get rsおよびkubectl get podsを実行して、新しいReplicaSetおよびPodの状態を確認してください。 Podの状態がRunningでない場合、ロールアウトが失敗していると考えられます。 kubectl rollout undo deployment <Deploymentの名前>を実行して、更新をロールバックすることができます。 ロールアウト時に、Podをどのように置き換えるかは、Strategy(spec.strategy)で定義します。 Strategyには、以下の2つの方式があります。
Strategyの方式は、spec.strategy.typeで指定します。 RollingUpdateを選択すると、Deploymentは古いPodと新しいPodのレプリカ数を調節しながら、既存のPodを少しずつ置き換えます。 Recreateを選択すると、既存のPodがすべて削除された後に、新しいPodが作成されます。 デフォルトでは、RollingUpdateが選択されます。
その他の詳細については、Kubernetesの公式ドキュメントを参照してください。