技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

Kubernetesの概要【Kubernetes】

Kubernetesとは

Kubernetesは複数ホストでのコンテナを効率的に管理することを目的としたコンテナオーケストレーションツールの1つです。k8s(kとsの間が8文字)とも表記されます。
Google内のチームから発足したプロジェクトによって作られたものであり、GKEをはじめとしてGoogleから周辺のクラウド環境が積極的に開発されています。
コンテナオーケストレーションツールは他にもありますが、Dockerにも統合されているKubernetesがリードしています。


コンテナオーケストレーションツールがなぜ必要か

1台のホストでコンテナを稼働する分には、Kubernetesのようなツールは必要ありません。

負荷の高い、また大規模なシステムを運用する場合、複数ホストを用いて1つの仮想的なコンピューティングリソースを構成する(クラスタリング)場合がほとんどです。

マルチホストの環境でシステムを運用する目的は、高負荷に耐えうるパワーを得ることですが、大量のリソースが必要ではない時もあります。

例えば、アクセスが急増する時間帯にはサーバーの数を増やし、トラフィックが少ない時間帯にはサーバーの数を減らして、費用の面で効率性を追求します。

サーバーを増減させることをスケールイン/スケールアウトと呼びますが、これを実現するにはOSから起動させる必要がある仮想化サーバーよりも、起動済みのOS上で稼働するリソースによって実現するコンテナの方が適しています(OSの起動時間がかからないため短時間で行える)。

このようなマルチホストの環境で複数のコンテナを稼働する場合、その運用を手作業で行うのは現実的ではありません。

Kubernetesで実現できること

Kubernetesのようなツールを用いることで、下記のようなことが実現できます。

  • インフラ管理をAPIで実現(API Centric)
  • 複数サーバーでのコンテナ管理
  • コンテナのデプロイ
  • コンテナ間のネットワーク管理
  • コンテナの負荷分散
  • コンテナのアップデート
  • 障害発生時の自動復旧


Kubernetesでは、マニフェストファイルを使って、「システムのあるべき姿」を定義します。仮に人手によって何かしらの更新がされ障害が発生したとしても、コンポーネントの1つkubeletによって20秒以内に「システムのあるべき姿」に戻す更新が行われ、人手を介さない障害復旧が実現できます。


参考

コンテナーとは? Kubernetesとは? 導入や運用、ユースケースを解説:CodeZine(コードジン)

Kubernetes で意図的に障害を起こしたらどうなるのか?

Kubernetesの前に知っておきたいコンテナとクラスタリングとは?

kubelet - Kubernetes