- 著者
-
坂下 幸徳
- 雑誌
- 情報処理
- 巻号頁・発行日
- vol.62, no.8, pp.d33-d56, 2021-07-15
ショッピングサイトや地図サービスなどのWebサービスでは,利用者からのアクセス増減が激しく,バージョンアップによる機能追加やバグ修正も高頻度に行われる.このような特徴を持つWebサービスでは,機能単位に細分化しアプリケーションを分割するアーキテクチャのマイクロサービスが浸透している.これにより,Webサービス全体を変更せず特定のアプリケーションのリソースの増強やバージョンアップを行うことができる.この細分化されたアプリケーションの実行環境としてCPUやメモリなどのリソースの集約率の高さや増強のしやすさからコンテナが注目されている.しかし,マイクロサービスでは,機能単位に細分化されるため,コンテナ数が増加する傾向がある.この増加するコンテナを管理するためコンテナオーケストレーションKubernetesが普及している.Kubernetesは,コンテナのリソースを容易に増減させるスケール機能,障害のセルフヒーリング,Webサービスを無停止でバージョンアップするローリングアップデートなどを有している.このKubernetesの導入により,コンテナの管理負荷の軽減は見込める.しかし,複数Kubernetesを有する大規模コンテナ環境では,Kubernetes自身の管理やこれを構成するコンピュート・ネットワーク・ストレージのインフラ管理が複雑になり管理者の負荷が増加してしまう.本稿では,大規模コンテナ環境としてヤフー(株)にて運用しているKubernetes as a Serviceについて,アーキテクチャと運用実績から得られた知見を報告する.このKubernetes as a Serviceは,2020年12月時点で204,980個以上のコンテナ,860クラスタ以上のKubernetesが稼働している.このような大規模コンテナ環境により,コンテナを使わずVMのみでアプリケーションの実行環境を構築した場合と比較し,コンピュート・ネットワークリソースは約86.4%の集約効果があった.さらに,Kubernetesを使い複数Kubernetesを自律管理する方式にて開発し管理者間のコミュニケーションでのリソース調整を削減するインフラ構成とすることで,管理者の負荷の軽減効果があった.