公開日:2021.09.30

KUBERNETES – 1.導入

テクログ

WikipediaでのKubernetesの説明

Kubernetes(K8s)は、コンテナ化したアプリケーションのデプロイ、スケーリング、および管理を行うための、オープンソースのコンテナオーケストレーションシステムである。

Kubernetes(以下K8s)を知っている方でしたら wiki で書いてあるこの説明はうまくまとまっていると思いますが、知らない方にとっては K8s は何に使うのかさっぱりわからないと思います。

ここで、この説明文を砕いていきますと、

  • コンテナ
  • デプロイ
  • スケーリング
  • 管理
  • オーケストレーション

とこれらのキーワードが含まれてあります。

どういうことかというと、まず皆さんがすでに日常的に扱っているサーバー(EC2)とコンテナ(docker)についてみていきます。

DevOps環境一例

仮にローカルで開発したソースを jenkins を使って直接 EC2 サーバーへデプロイする形とします。

アーキテクチャはこのようなよくあるシンプルなものです。

このとき、例えば負荷が高いとき、EC2 がオートスケーリングを実行したり、ELB が自動で負荷分散を行ったり、サーバー障害が起きたとき、Route53 が自動でDNSを切り替えたりします。これらは AWS が提供している耐障害性、高可用性の自動サービスでありまして、われわれがいちいちサーバーが落ちたから対応しなければならなく済む。

Docker

そして、docker コンテナを本番環境でも使うことによって、開発環境の docker image を直接利用して同じ環境が作れて、本番と開発の差異を減らすことができます。

本番環境で docker を利用するメリットは大きいですが、docker はそれぞれのコンテナに対してアクションを行えど、例えばコンテナのスケールアウトを行いたい場合、手動で一つずつ元のコンテナイメージからそのコンテナのコピーを作成し、ネットワークを設定することをやらなければならない。

K8s はそのような悩みを解決する。

K8sは何ができるか

docker コンテナは便利であるが、AWS がサーバーに対して提供しているような耐障害性、高可用性の機能は備わっていない。

K8s はコンテナをまとめて管理することができ、上記の AWS でできるようなことコンテナに対して行うことができる。

K8s のデプロイはリソースをサーバーへ直接デプロイするより、容量の少ない docker image をデプロイして構築しますので、速度が速く、

耐障害性に関してはコンテナ全体の死活を監視し、コンテナのプロセスが停止した場合自動修復、自動再起動します。

高可用性に関してはコンテナのオートスケーリングができます。

この記事を書いた人

CHO

入社年2020年

出身地北京

業務内容開発

特技または趣味ギター、旅

CHOの記事一覧へ

テクログに関する記事一覧