こんにちは、ひでさんです。
今回は、Kubernetesについてお話ししたいと思います。
✅「Kubernetes」って聞いたことはあるけど、いまいちよくわからない
✅「Kubernetes」を勉強しようと思っているけど、何から始めればよいかがわからない
こう思っている方はぜひ本記事をお読みいただきたいと思います。
Kubernetesは数年前から徐々に流行り始め、ここ最近では多くのシステムで使われ始めています。
そのため多くの案件でKubernetesスキルが必要になってくると思います。
ぜひこの機会にKubernetesを一緒に学んでいきましょう!
Kubernetesとは何か?
そもそもKubernetesとは何でしょうか?
Kubernetesをお話しする前に必要となる前提知識がコンテナです。
最近ではコンテナ=Dockerコンテナとなりつつありますので、
これ以降はコンテナ=Dockerコンテナとしてお話しさせていただきます。
コンテナとは、アプリケーションを一つのパッケージにまとめておいて、
どんなサーバーでもDockerさえあれば、そのコンテナをデプロイするだけでアプリケーションが動く。
そういったものです。
よくVMと比較されるんですが、
とりあえずとっかかりとしては似たようなものだと思っておいてかまいません。
で、大きなシステムになると、多くのコンテナを立ち上げる必要があります。
それこそ数百や数千という単位になることもあるかと思います。
そんな数のコンテナをいちいち管理するのって大変なんです。
そこで生まれたのが、コンテナのオーケストレーション・ツールです。
コンテナのデプロイやその他の管理なんかを効率化することができるソフトです。
代表的なものとしては、
- Docker Swarm
- Apache Mesos
などありますが、Kubernetesもオーケストレーション・ツールの1つであり、
今まで続いてきたコンテナのオーケストレーションのデファクトスタンダードになりつつあります。
Kubernetesは何ができるのか?
Kubernetesはコンテナのオーケストレーション・ツールとお話しさせていただきました。
コンテナのオーケストレーション・ツールなので、
基本的にはコンテナの管理を行います。
「コンテナの管理」で終わらせてしまうと、ざっくりしすぎていますので、
もう少し深堀りします(笑)
Kubernetesでできることとしては、
主には以下となります。
- コンテナを動かすホストやストレージの管理
- コンテナの効果的なデプロイ
- コンテナの効果的なスケーリング
- コンテナのネットワーキング管理
- コンテナの状態管理
- コンテナの障害時における自動再起動
つまり、コンテナを使って構築されたシステムの安定性を上げるために
様々なことを任せられるツールということです。
Kubernetesを使うデメリット
では、Kubernetesを使うときのデメリットは何があるのか?
これはズバリ言うと、学習コストが高いということです。
Kubernetesの中には様々なオブジェクトがあります。
pod、service、deployment・・・
Kubernetesを一通り使いこなせるようになるには、
覚えることはたくさんあります。
しかし、だからこそ学ぶメリットというのが大きいんです。
「小難しくてよくわからない!(><)」
そう思うことも少なからずあると思いますが、
少しずつ当ブログでもご紹介していきたいと思いますので、お楽しみにしておいてください。
まとめ
Kubernetesとはコンテナオーケストレーション・ツールの一つです。
様々なオーケストレーションツールの中でKubernetesは抜きん出て多くのシステムで使われており、
今ではコンテナオーケストレーション・ツールのデファクトスタンダートとなりつつあります。
Kubernetesを使うことで、
コンテナを使って構築されたシステムの「安定性」を上げられるため、
システムの運用面で非常に楽になりますが、
一方で全体を理解するには多少の時間がかかり学習コストも安くありません。
当ブログではAWSを利用したKubernetesについても触れていきたいと思っておりますので、
ぜひ今後とも宜しくお願いいたします。