クラフ:「Kubernetesは、コンテナ運用の課題を解決する機能や特長を備えているんだ」
サトル:「具体的には、どんな機能や特長があるの?」
Kubernetesの機能の一部分として、以下の機能を紹介するよ。
セルフヒーリング(自己回復機能) | スケジューリング・負荷分散 |
オートスケール | ローリングアップデート |
ロールバック・ロールアウト | 永続ストレージ利用 |
ディア:「こんなにあるのに、これが一部分なんだ!」
クラフ:「1つずつ紹介していくよ」
万が一、Podやノードに障害が起きてマニュフェストに記述された望ましい状態から逸脱した場合、Kubernetesではマニュフェストの状態まで自己修復する機能を備えているんだ。
Kubernetes Nodeの状態を監視しており望ましい状態”から逸脱したら自己修復
コンテナをノードに配置する際、どのノードに配置するのが最適かをマニュフェストに基づいて自動的に判断し、スケジューリング(配置)する機能を備えているよ。また、ディスク容量が多いコンテナを別の領域に配置する制御も可能なんだ。
最適なKubernetes Nodeに自動でスケジューリング(配置)
各ノードのリソースをモニタリングして、必要に応じてPodやノードを増減できる機能だよ。閑散期には最低限の数に抑えたり、CPUの使用率でPodを増やしたり、上限に達したらノードを増やしたりできるんだ。クラウド環境では繁忙期や閑散期などで柔軟にリソースを変更してコスト効率を高めることにも役立てられるよ。
リソースをモニタリングし、必要に応じてPodやノードを増減
アプリを新バージョンにアップデートしたい場合、いきなりすべてを旧バージョンから新しいものに置き換えるのではなく、1つずつ順々にアプリを切り替えていくことでダウンタイムなしでアップデートすることが可能になるよ。
ダウンタイム無しで、アプリをローリングアップデート
ローリングアップデートした後、万が一アプリに問題があったときには、前バージョンに戻す(ロールバック)する機能も備えているんだよ。
アプリに問題があったときに前のバージョンに、ロールバック
以前も解説したけれど、コンテナはアプリとアプリのプロセスのみを格納するため、データを永続的に保存できないんだ。だから、コンテナでは通常はPodを再作成すると、データがない状態になってしまう。そうしたコンテナの課題をKubernetesでは解決しているんだ。具体的には、Podを再作成する場合、再作成前のPodで使用していた永続ボリュームをマウントすることで、データを継続して利用することも可能なんだ。
コンテナに“永続的”にデータは保存できない。
データを保存するには別でストレージシステムを用意してマウントする
ディア:「なるほど。Kubernetesさえあれば、油断大敵なんて忘れてもいいんだね!」
クラフ:「そんなことはないよ。Kubernetesにも使用時の課題はあるんだよ」
サトル、ディア:「(ずっこける2人)」