Kubernetesとは

Google主導で開発された、OSS(Open Source Software)のコンテナオーケストレーションツールです。読み方は「クーベネティス/クーベルネティス/クバネティス/K8s(ケーハチエス)/kube(クベ)」などと呼ばれます。ギリシャ語で航海長またはパイロットという意味があるらしいです。
2018年にGoogleからクラウドネイティブを推進する組織、CNCF(Cloud Native Computing Foundation)に寄贈されました。
コンテナオーケストレーションツールとは、コンテナを運用する上で必要なアプリのデプロイやDockerホストの管理、スケーリングなどの仕組みを備えたツールで、操作のためのAPIやCLI(kubectl)を提供しています。
使うための前提条件
Kubernetesは前述したとおり、コンテナを運用するためのツールです。
このため、アプリはコンテナ化されていることが前提になります。コンテナ化とは、アプリがDockerイメージ化されている状態になります。
使うと何が良いのか
自分なりに想定しているKubernetesを導入することで得られるメリット
について書きたいと思います。
コンテナの更新(リリース)が楽になる
現状、クラウドはAWSを使用しているのですが、今までKubarnetesを使用せずにEC2に直接Dockerコンテナを起動してました。そうすると、EC2にSSHしてdocker-compose(またはDockerfile)を使ってコンテナを起動して・・・をコンテナ数×サーバ数の回数やらなくてはいけません。Kubernetesを使用すれば、ローカルからkubectlコマンドを叩くだけでアプリのデプロイが可能になります。
コンテナの状態管理が楽になる
ローカルでKubectlコマンドを叩くだけで全コンテナの状態が一覧でパッとわかるため、コンテナの状態管理が楽になります。
オートヒーリングでコンテナ数が維持される
Kubernetesにはオートヒーリング機能が備えられていて、何らかの原因でコンテナがダウンした場合にも自動で代わりのコンテナを起動し、設定した数のコンテナを維持してくれます。(ReplicaSet機能)
ロールバックで前のバージョンに切り替え可能
コンテナのイメージを更新してKubernetesでデプロイした場合、問題があればすぐに古いバージョンにロールバックすることが可能です。(Deployment機能)
Kubernetesのアーキテクチャ概要
Kubernetesを導入する場合、どんなアーキテクチャになるのか?をざっくり解説します。