Member-only story
つまりKubernetesの役割って?Part2
今回は Kubernetesの役割についての記事です。長い記事なので、5回に分けて投稿いたします。今回は第2回目です。
Enter Kubernetes
エンジニアであれば、独自のイメージを作るのは簡単です。例えばDockerでは、ベースとなるイメージから始めて、その上にさらにイメージを重ねることができます。例えば、ベースとなるOS(Ubuntuなど)を選び、その上にJavaランタイムを追加し、さらにその上にJARファイルを追加して、すべてをイメージとしてパッケージ化することができます。目標は、これらのイメージの実行中のインスタンスをコンテナとしてデプロイすることです。
これで、イメージが作成され、本番環境にデプロイする準備が整いました。さて、次はどうしましょう?
初めて本番環境に導入するときは、おそらく手作業で行うことができます。例えば、(本番環境にアクセスできると仮定して)次のように実行するとよいでしょう。
docker run -d -p 80:8080 my-registry-loc/cool-application:1.0.0
そうすると、「cool-application」イメージが、実行中のコンテナとして起動します。
しかし、これで毎回アプリケーションを起動することができるでしょうか?おそらくそうではないでしょう。すぐに、次のようなことをしたくなるでしょう:
- - アプリケーションの複数のインスタンスを同時に起動し、負荷を処理します。
- - 負荷の増加に応じて、同時に実行するインスタンスの数を増やします。…
- - 負荷が軽減されたらインスタンスの数を減らします。
- - クラッシュやハングアップしたインスタンスを再起動します。
- - ローリング、カナリア、ブルー/グリーン・デプロイメントの実行
- - 複数のアプリケーションやサービスで上記のことを実行します。
これを手作業で実現するのは非常に困難なことです。スクリプトをたくさん書いて自動化する、とでも言うのでしょうか?うーん、そうですね。あるいは、Kubernetesを使うという手もあります。だって、そのためにあるんですから。
A quick definition
KubernetesはGoogleによって考案され、Borgという別の社内コンテナ管理システムから生まれました。現在はオープンソースとして公開されており、Cloud Native Computing Foundation(CNCF)に寄贈された最初のプロジェクトの一つでもあります。
Kubernetesという名前は、ギリシャ語で(船の)「操舵手」や「水先案内人」を意味する言葉です。最近では、Kubernetesはk8s(=”k “と “s…