皆さんは、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の機能やメリット、重要性などに対する理解を深めてみて下さい。