kubernetesとは、コンテナの運用管理と自動化を目的に設計されたオープンソースのシステムです。このようなサービスのことをコンテナオーケストレーションと呼ばれ、各クラウドベンダー自身も独自のコンテナオーケストレーションサービスを提供しています。現在では、コンテナオーケストレーションサービスを利用したサービス開発も増えてきたため、これから複数回にわたってkubernetesというコンテナオーケストレーションツールについて紹介していこうと思います。

kubernetesとは?

kubernetesは、クバネティス、クーべネティスなどと呼ばれています。ギリシャ語だそうです。意味は、操舵手、パイロットという意味だそうです。よく「k8s」と略語で表されることがあるので、そのあたりも覚えておくと良いと思います。

kubernetesが提供するもの

コンテナは、アプリケーションを集約して管理する方法として、今ではデフォルトスタンダートになりつつあります。このコンテナを実行することは、Dockerという以前紹介したツールでも出来ますが、Docker自身はコンテナの管理して、アプリケーションを正常に提供するということが苦手な部分があります。kubernetesの機能をみてみましょう。

  • Service discovery and load balancing
    サービス名(DNS名)や独自IPアドレスを利用したコンテナ公開、トラフィックを分散する負荷分散をする機能
  • Storage orchestration
    ストレージを自動マウントする仕組みの機能
  • Automated rollouts and rollbacks
    デプロイしたコンテナのあるべき姿を定義することができ、その状態を保つようにk8sが自動で運用・監視を行う機能
  • Automatic bin packing 
    コンテナ自身がどのくらいのメモリ、CPUを利用するのかを宣言でき、リソースを最大限活用するための機能
  • Self-healing
    処理が失敗したコンテナを再起動し、コンテナを入れ替え、定義したヘルスチェックに応答しないコンテナを強制終了する機能
  • Secret and configuration management 
    パスワード、OAuthトークン、SSHキーのよう機密の情報を保持し、管理す機能

この機能を見ると従来のDockerでは実現が難しい機能であることがわかると思います。

また、下記のような点については触れられていないです。

  • ソースコード管理、CIプロセス、CDプロセス
  • 物理ノードの構成、メンテナンス、自己修復など
  • ロギング機能

k8sは、あくまでもコンテナの管理を行うので、上記のような部分については、利用者側で選択する必要があります。その点は注意が必要です。

今回は、簡単ですが、k8sが提供する機能を簡単にざっと見てきました。次回は、k8sのアーキテクチャを紹介しようと思います。