皆さんは、k8sという言葉をご存じでしょうか。2014年の6月に登場したシステムで、設計者はGoogleです。Webサイトの作成やビジネスなど様々な場面で使用されますが、聞きなれない言葉に感じる方もいるかも知れません。この記事では、k8sに関する基礎知識や、メリットやデメリット、さらに役立つ情報なども紹介します。

k8sとは何か?

k8sに関する基礎知識を、以下で紹介します。

正式名称はKubernetes

k8sとはKubernetesの略称で、「クバネティス」「クバネテス」「クーベネティス」などの読み方があります。ちなみに、k8sの時の読み方は「ケーエイツ」です。

コンテナ化したアプリケーションのデプロイや、スケーリング、管理などを行うオープンソースのコンテナオーケストレーションツールです。

k8sの特徴

k8sは「コンテナ」を管理することが主な役割です。

コンテナとは、アプリケーションを実行するために必要な環境のことで、その中にアプリケーションを格納することを「コンテナ化」と呼びます。

昔は複数のアプリケーションを同じ仮想マシンにデプロイすると、不具合が起きることがありました。

不具合を避けるためにマシンごとにアプリケーションを一つずつ割り当てると、メモリやCPUを大量に消費するので、支障が出てしまいます。

コンテナが登場したことにより、OSから分離してカーネルを共有することで、リソースの消費を少なくすることが可能になったのです。

しかしコンテナの管理運用は、アプリケーションの複雑さから、非常に多くの手間がかかります。

そのデメリットを解決してくれるのが、k8sです。数多くのコンテナを一括で管理し、スケーリングやネットワークとストレージの連携、強制終了や再起動といった作業が効率化されます。

Dockerとの違い

コンテナ関連のツールでもう一つ重要なのが、Dockerです。コンテナの作成と実行を行うツールで、オープンソースのソフトウェアとして提供されています。

k8sとDockerは両方コンテナに関するツールですが、それぞれ役割が異なります。

Dockerはサーバー内にコンテナを作成し、アプリケーションを格納する作業を担っています。しかし、コンテナの管理や調整まで行うことは困難です。

k8sは、サーバーで稼働しているコンテナを一括で管理することができます。Dockerがコンテナを作り、k8sが管理を行うのです。

両方コンテナにおいて重要な役割なので、どちらか一方を選ぶのでは無く、併用して使うことが重要とされています。

k8sの機能について

k8sの機能とは、一体どのようなものなのでしょうか。

コンテナの運用・管理

コンテナの運用と管理は、k8sのメインとも言える機能です。

一括管理されたコンテナのグループによって、スムーズな運用が可能となります。

新しいコンテナを作成し、既存の物は削除し、新しく作成された物へのリソースの採用などを自動化できるので、非常に便利です。

ローリング更新

コンテナを自動更新する機能があり「ローリング更新」と呼ばれています。

システムを使えない時間である「ダウインタイム」を減らしつつ、アプリケーションを更新する方法です。

新しいバージョンを作成した後に更新を実行すると、古いコンテナを実行する一方で、更新による問題を監視します。

自動でコンテナを配置

自動でコンテナを最適な形に配備する機能が搭載されており、「自動ビンパッキング」と呼ばれています。

CPUやメモリなどのリソース情報を計算し、分析結果を基にコンテナの配置を自動で決めてくれるのです。

この機能によってコンテナが使用するリソースは最適化され、最大限のパフォーマンスを発揮することに繋がります。

自動で復旧

問題が起きた時のために、自動で復旧する機能があります。

設定に応じてオーケストレーション機能が異常を監視し、他のコンテナに置き換えることも可能です。アプリケーションにエラーが生じた時は、自動で再起動して不具合の無いコンテナと入れ替え、問題のあるコンテナに関しては強制終了させます。

セキュリティ

重要なデータの保全や管理を行う機能もあります。

例を挙げると、パスワードやOAuthトークン、SSHキーなどです。また、アプリケーションの構成のデプロイや更新を、コンテナのイメージの再構築無しで行うことができます。

負荷を分散

k8sはIPアドレスやDNSを利用して、コンテナを可視化することができます。

アプリケーションの状況を把握し、トラフィックが増加しているコンテナがある場合は、トラフィックを自動で分散させて、デプロイの安定を図るのです。

スケーラビリティが高度になるので、コンテナの管理・運用を安定して行えます。

k8sのメリット・デメリット

k8sのメリットとデメリットには、何があるでしょうか。

メリット① 大量のコンテナを管理できる

大量のコンテナの一括管理は主要な機能であり、大きなメリットです。

本来、一つ一つのコンテナに変更作業を行うのは大変ですが、k8sは設定ファイルをコンテナ間で共有できるので、変更を容易に行えます。

メリット② コストの削減になる

リソース配分や負荷分数などを、自動的に調整する機能が搭載されています。

そのため調整作業が自動化され、コストを削減することが可能です。プラットフォームの月額使用料を節約に繋げることも可能です。

メリット③ 迅速なアプリケーション開発に期待できる

リソース消費を抑えられるので、高速かつ軽量な動作が可能です。

迅速なアプリケーション開発に重要な、効率的なリソースの活用ができます。

メリット④ アプリケーションをどこでもデプロイ可能になる

コンテナを基にデプロイを行うので、わざわざ手動で行う必要が無くなります。

また、アプリケーションはローカルで動作するので、途中で止まることが少ないです。

メリット⑤ DevOpsの実現につながる

DevOpsとは、DevelopmentとOperationsを組み合わせた造語で、開発チームと運用チームが連携して、アプリケーションの開発ライフサイクルの最適化を促進しよう、という考え方です。

k8sは開発を自動化するツールなので、DevOpsと非常に相性が良いと言えるでしょう。

メリット⑥ セキュリティの強化につながる

システム障害に強い環境を動作構築できるのも、大きなメリットです。

問題が発生しても、コンテナの再起動などを行うことで、自動で回復します。

デメリット① 初期投資がかかる

実行マシンの「ワーカーノード」と、管理マシンの「マスターノード」が必要になり、ノードの数が増えるとサーバーの数も増えていきます。

規模によっては、初期投資がある程度かかると考えた方が良いでしょう。

デメリット② 学習コストが高い

進化し続けるツールなので、利用する側もその都度学習する必要があります。

特に初心者は学習コストが高くなる傾向にあることを、念頭に入れておきましょう。

k8sに関しての不安はsysdigに相談

k8sについて相談する際に、おすすめできるツールを紹介します。

Sysdigとは何か

Sysdigの主な役割は、コンテナのセキュリティや稼働状況を監視・分析です。

k8sのホストからメトリクスを取得し、セキュリティチェックやモニタリングをします。

3つのツールで構成されており、監視したい対象にインストールできるsysdig agent、コンテナの脆弱性チェックなどを行うsysdig secure、収集したメトリクスなどを可視化するsysdig monitor があります。

非常に便利なシステムなので、気になった方はチェックしてみて下さい。

まとめ

コンテナを運用管理するk8sは、アプリケーションの開発に欠かすことのできない存在と言えるでしょう。聞き慣れない方にとっては難しいと感じるかも知れませんが、現代のビジネスにおいて、ぜひ押さえておきたい用語です。この記事を参考にして、k8sの機能やメリット、重要性などに対する理解を深めてみて下さい。