エッジコンピューティングにKubernetes(K8S)が最適なわけ
目次
Kubernetes(K8S)とは?
Kubernetes(クバネティス、クーベネティス)とは、コンテナの運用管理を効率化するために設計されたオープンソースソフトウェアです。省略形として、『K8S』と呼ばれることもあります。CNCF(Cloud Native Computing Foundation)と呼ばれる、Googleなどの複数団体が参画しているクラウドネイティブコンピューティング技術を推進する非営利団体を中心に開発が進められています。
Kubernetesはどのような機能を持っているのか、エッジコンピューティングでどのように利用されるのか、本記事で解説します。
コンテナのデメリットを解消するKubernetes
コンテナは圧倒的な可搬性があるため、開発環境から本番環境へのアプリリリース(デプロイ)が非常に楽に実施できたり、仮想化技術によりサーバーのリソースを効率よく利用できたりと、様々なメリットがあります。一方で、コンテナ単体ではログ取得やスケーリングなど、それ自体を管理したり、別サーバーと連携したりはできません。
そのため、複数ホストでコンテナを運用したい場合などは、ログ取得用コンテナをデプロイしたり、ログ取得用のエージェントをコンテナ化したりなど、管理が煩雑になってしまいます。
Kubernetesを使えば、このような運用管理のプラグインが導入されているだけでなく、複数のサーバーでコンテナを運用する場合に、ネットワークやストレージなどの連携管理を行うことができるようになります。
また、障害発生時の自動修復機能や、アクセスがスパイクしたときの自動スケーリング機能などを備えています。コンテナに必要な機能をほとんど備えているツールである、と考えるといいでしょう。
エッジでの利用が注目されるKubernetes
Kubernetesはクラウドコンピューティングの用途で開発されたツールで、データセンターでの稼働が前提となっていました。しかし、現在においてはエッジコンピューティングの分野でも利用が進んでいます。「State of Cloud Native Development Report」(※出典 https://www.cncf.io/wp-content/uploads/2021/12/Q1-2021-State-of-Cloud-Native-development-FINAL.pdf)というレポートによると、エッジコンピューティングの分野においてKubernetes利用が全体の63%となっており、海外では利用が急速に進んでいることが分かります。まさに、前年度比で11ポイント増加している、という状況でした。
SUSE社公式パートナー/スタイルズによるRancher/K3sの商用保守サポートはこちら→
エッジコンピューティングにKubernetesが向いている理由
先述のように、エッジコンピューティングの分野においてKubernetesの利用が進んでいる理由は大きく下記の3点の特徴があるためです。
- エッジデバイスのライフサイクル管理が容易にできる
- セキュリティやアクセスポリシー管理を簡略化できる
- コンテナをスケールできるため増加する情報量に対応できる
具体的に見ていきましょう。
エッジデバイスのライフサイクル管理が容易にできる
コンテナをベースとしている技術であるため、Kubernetesの得意とするロールアウト/ロールバックをそのまま活用することができます。また、パッチ適用やアプリケーションの配布などの自動化が容易であり、アプリケーションのライフサイクル管理を大幅に簡易にすることができます。
セキュリティやアクセスポリシー管理を簡略化できる
エッジデバイスをシステムに参加させるにあたって、不正なプログラムを仕込まれたデバイスが配置されないようなセキュリティ対策が必要になります。Kubernetesではシステム(ノード)を追加する際に、証明書がないと追加ができない仕組みとなっているため、セキュリティを担保することができます。
また、Kubernetesのポッド(コンテナの集まり)に、ポッドセキュリティポリシーを適用することで、ポッドのアクセス可能な範囲を制限することができるため、シームレスな権限管理も可能です。
コンテナをスケールできるため増加する情報量に対応できる
エッジコンピューティングの要件によっては、大量のデータを短時間で処理するようなケースも考えられます。
例えば、来客者数を処理するアプリケーションにおいて、イベント等で来客者数がスパイク(急上昇)するようなケースです。そのような、処理対象のデータ量が増えるようなケースにおいては、拡張性が高いKubernetesは向いているといえるでしょう。
エッジでのKubernetesのユースケース
エッジコンピューティングでKubernetesがどのように利用されているのか、具体的な事例を見ていきましょう。
監視カメラによるシステム
監視カメラによりIoTシステムを実現するためには、大量のカメラが必要です。それぞれのカメラに設定を投入し、アプリケーションをデプロイしていくことは非常に時間がかかります。Kubernetesは設定ファイルが『yaml』というフォーマットで書かれており、再利用が容易であるため、カメラの設定や設定変更時の更新作業を簡潔に行うことができます。
加えて、数が多いカメラに対するアプリケーションの更新も、コンテナで実施するためデプロイが容易になります。また、カメラ内のアプリケーションは画像処理や画像の転送など、複数のアプリケーションを稼働させておく必要があるため、コンテナ同士の通信を制御することができるKubernetesは要件に非常にマッチしています。
製造業
製造業においては、扱っている機械の配置や、取り扱っている情報のセキュリティ要件から、パブリッククラウドとは親和性が低いと言われており、プライベートクラウドを活用することでSLAやコスト、データセキュリティ、社内ネットワーク接続の要件をみたしてきました。
様々なコンテナ運用ツールが備わっているKubernetesはいわば小型のクラウド環境と考えることができ、Kubernetesが搭載されたエッジデバイスを利用することで、製造業の現場を、ネットワーク等の要件を満たしつつ、パブリッククラウドのいいところも利用できる、といった構成にすることが可能です。
実際の事例としてはKubernetesのログ出力機能を利用して、リアルタイムに情報収集をするコンテナアプリケーションから情報を引き出し、製造業に必要な監視を行う、といったことが行われています。
自動車産業
2018年にデンソーの発表した「Misaki3」というプラットフォームにおいて、Kubernetesが利用されています。車を制御する機能を実行するECU(Electronic Control Unit)をワーカーノード(アプリケーションが稼働する部分)に搭載し、車の中でデータ収集や制御アプリケーションを実行する取り組みをしています。
アプリケーションのコンテナイメージ(コンテナの素材)についてはクラウド側に配置し、クラウド側で実装したアプリケーションを車へ自動的に展開するといったユースケースになります。車は何十万台と稼働しており、エッジデバイスの数もその分多くなることが予想されるため、アプリケーションの配布が容易なコンテナとKubernetesの組み合わせは非常にマッチした構成であることがわかります。
SUSE社公式パートナー/スタイルズによるRancher/K3sの商用保守サポートはこちら→
まとめ
エッジコンピューティングの現場におけるKubernetesの利用は、あまりイメージがしにくいと思いますが、実際はグローバルではKubernetesの利用が進んでいます。複数のアプリケーションを制御したり、運用の効率化を実現したり、といったユースケースに合っており、クラウド上のアプリケーション以上にエッジコンピューティングのシステムにおける親和性が高まっています。
近年では『K3S』や『Micro Kubernetes』といった、IoTシステム向けのKubernetesも開発されているため、ますます利用が進むことが予想されます。利用を検討する際には、専業のベンダーに相談してみるのもいいでしょう。