OS Hypervisor Guest OS Library Library Application 仮想サーバ Server OS Hypervisor Guest OS Library Library Application 仮想サーバ VM を手動構築し直接 ssh して、アプリのデプロイなどの諸々を手動作業
e.g. Terraform などで VM を起動し、Ansible などでセットアップを行い、Jenkins などでアプリのデプロイを行う ツールによっては実行時タイミングよって 同一環境になることが保証されない Server OS Hypervisor Guest OS Library Library Application 仮想サーバ Server OS Hypervisor Guest OS Library Library Application 仮想サーバ 環境差分
-> ReplicaSet -> Deployment という親子構造がある Cluster Node Pod Node Pod Pod Container Container Container Container Container Pod Container Container Node Pod Container
Cluster Node Pod Node Pod Pod Container Container Container Container Container Pod Container Container Node Pod Container 運用課題: アプリケーションコンテナが落ちてしまった場合のリカバリはどうするか?
Pod Pod Pod Old ReplicaSet (Replicas = 3) New ReplicaSet (Replicas = 0) Pod Pod Pod Old ReplicaSet (Replicas = 3) New ReplicaSet (Replicas = 1) Pod Pod Pod Pod Old ReplicaSet (Replicas = 2) New ReplicaSet (Replicas = 2) Pod Pod Pod Old ReplicaSet (Replicas = 0) New ReplicaSet (Replicas = 3) Pod
Pod Pod Old ReplicaSet (Replicas = 3) New ReplicaSet (Replicas = 0) Pod Pod Pod Old ReplicaSet (Replicas = 3) New ReplicaSet (Replicas = 1) Pod Pod Pod Pod Old ReplicaSet (Replicas = 2) New ReplicaSet (Replicas = 2) Pod Pod Pod Old ReplicaSet (Replicas = 0) New ReplicaSet (Replicas = 3) Pod • 実際にアプリケーションをマニフェストにする際、 ほぼ Deployment か StatefulSet (揮発しないストレージを持つ Deployment) • バグが見つかった時の切り戻しも Deployment の機能で可能