Member-only story
K8s Deployments & Replicasets
前回の記事では、レプリカセットとは何かについて説明しました。今回は、K8s デプロイメントオブジェクトとは何かについて、いくつかの実用的な例を挙げながら、順を追って理解していくことにしましょう。
K8sでは、ポッドはクラスタにデプロイされる基本的な基礎単位である。K8sのデプロイは、Podの抽象化レイヤです。デプロイメントK8sオブジェクトの主な目的は、デプロイメント構成で宣言された望ましい状態リソースを維持するのを助けることです。
でもちょっと待ってくださいね。レプリカセットは同じことをすると言いましたが、それならなぜ別のK8sオブジェクトのデプロイが必要なのでしょうか?
本番環境において、バージョン1のPOD内でアプリケーションを実行していると仮定しましょう。開発者はこのバージョン用のコードを開発し、同じものをPODにデプロイしています。
ここで、バージョン1が本番稼動している間に、開発チームがバージョン2を入手したとします。同じものを本番で走らせたいと考えています。どのようにPODをバージョン1に置き換えるのでしょうか。
また、version2が思い通りに動かない場合、他のversionにロールバックすることなどはどうでしょうか?レプリカセットは同じことができるのかでしょうか?そうではありません。
そこで、K8sのデプロイメント・オブジェクトが役に立ちます。デプロイメントオブジェクトができることは他にもたくさんありますが、どのように便利なのか見ていきましょう。
上記の例でversion1をversion2に置き換える場合、そのまま全てのPODをversion2に一度に置き換えるべきだと思いますか?
なぜなら、もしバージョン2が悪いとわかったらどうするか?つまり、もしバージョン1がなくなってバージョン2に問題があった場合、すべてのPODを一度に入れ替えたので、アプリケーション全体に問題が発生する可能性があります。アップデート戦略の1つであるRollingupdateでは、Podを一括でアップグレードできます。この方法では、何らかの理由でアップグレードが失敗し…