KNOWLEDGE - COLUMN ナレッジ - コラム

今さら聞けないコンテナ管理の新常識 「Kubernetes(k8s)/OpenShift」

col215_main

関連するソリューション

ID-Cross/クラウドサービス


エバンジェリスト・フェロー 玉越 元啓 玉越写真_100x150 


今回は、「Kubernetes(k8s)/OpenShift」をテーマでお送りします。最近、技術者ではなくビジネスレイヤーの方から「一体何なの?」と聞かれる場面が増えてきました。ITの基盤に関する技術なのですが、自動車でいうと、燃費が良くなる/車検の時間が短くなる/部品の交換が簡単になる、といった足回りをよくすることができる技術になります。システム部門やベンダーに提案を促し、内容を理解・評価できるよう概要を知っていただきたいです。

  • Kubernetesとは
  • 今Kubernetesが注目されている理由
  • コンテナとは
  • できること
  • Kubernetesの活用例
  • OpenShiftとは
  • 困ったら
 

Kubernetesとは

「Kubernetes」は日本語では「クーバネティス」と発音されています。コンテナ化(※後述)されたアプリケーションを管理し、アプリケーションのデプロイ(※1)やスケーリング(※2)を自動化できるオープンソースのシステムです。元はGoogleによって開発されましたが、現在はオープンソース化されており、コンテナ管理のデファクトスタンダードとなっています。K8sと略されることもあります。略語の「K8s」は、Kとsの間の「ubernete」の8文字を数字の8に置き換えたものです。
 
※1 デプロイ
開発したアプリケーションやシステムを実際に運用するための環境に反映すること
 
※2 スケーリング
要求される処理量に応じて、処理に必要なサーバ/CPU/メモリなどのリソースを増加・減少させること

近年Kubernetesが注目・採用されている理由

大きく2つの理由があります。一つめは、ビジネスの変化のスピードにITの変化も対応するため、二つ目は、限りあるリソースを有効活用するため、です。
ビジネスサイドの判断にあわせて、機敏にシステムを開発し、柔軟にサービスを提供・レベルアップさせるために、クラウドの利用やマイクロサービス化(※3)が進められています。マイクロサービスやクラウドネイティブアーキテクチャに有効なコンテナ技術が採用されるに従い、コンテナ管理に強力で実績のあるプラットフォームを求められるようになり、Kubernetesが選択されるようになりました。

Kubernetesは既にコンテナオーケストレーションのデファクトスタンダードとしての地位を確立しており、Google、AWS、Microsoft、IBM、Intel、Cisco、Red Hatなどの主要企業が支援するCloud Native Computing Foundation (CNCF:https://www.cncf.io/)の重要プロジェクトとなっており、その成果はKubernetes公式サイト(※外部リンク)にまとめられています。
またKubernetesでは、処理に必要なリソースを自動的に分配する仕組みがあるため、ピーク時の処理量に合わせて各種リソースを準備する等の過大になりがちな初期投資と運用コストを抑える効果が期待できます。
 
※3 マイクロサービスとは
マイクロサービスは、小さな独立した複数のサービスでソフトウェアを構成する、ソフトウェア開発のアプローチです。マイクロサービスでは、アプリケーションのスケーリングが容易になり、既存機能の再利用と機能を独立させることにより開発期間が短縮できるため、ビジネスの実現と市場投入のサイクルを加速させることにつながります。

コンテナとは

コンテナとはアプリケーションの動作環境を仮想化する技術です。一つのハードウエアで複数の環境を動作させることができるため、リソースを有効活用することができます。従来のサーバごと仮想化する技術ではOSレベルから仮想化していましたが、コンテナではOSを共有しているため、メモリなどのリソース消費はもちろんのこと、プロセスなどの起動も仮想マシンより早く実行することができるメリットがあります。Kubernetesには、このコンテナを管理するために仕組みが備わっています。

dockerとhv

画像出展:https://www.ogis-ri.co.jp/otc/hiroba/technical/docker/part1.html

コンテナについては、エンジニアが当たり前に知らないといけない知識になったと実感しています。

Kubernetesができること

細かくはかなり多くの、エンジニアにとっては痒い所に手が届く、機能が提供されています。ここでは、根幹をなす主要な機能の概要を紹介します。
 
1、負荷に応じてコンテナの数を増減(自動スケーリング)
データ量が大きいときは複数のコンテナで処理し、減ってきたらコンテナを減らすことができます。配達する荷物が多いときは多くのトラックを出し、少ないときは最低限のトラックで配送する、こうした運用を人が都度設定するのではなく自動化できます。
 
2、サーバ性能に応じたコンテナの配置先を制御
CPU性能が必要なコンテナはCPU性能の良いサーバ上へ配置、ファイルアクセスが頻繁なコンテナはディスク性能の良いサーバへ配置するなど、コンテナの特性に合わせて適材適所なリソースの割り当てができます。
運搬するものや道路状況に応じて、トラック、4WD、自動車、鉄道、空路などの経路・手段を自動で選んでくれるイメージです。
 
3、異常なコンテナの検知と置換
Auto Healingとよばれる機能です。何かしらコンテナに問題が発生した場合、そのコンテナを破棄し新しいコンテナで処理を継続します。荷物を詰めている段ボールに破損が見つかったら、自動的に新しい段ボールに詰めなおして運送を再開するイメージです。
 
4、利用可能なコンテナとリソースの紐づけ
システムによっては特定のリソースでのみ動作させたいこともありえます。そうした制約を設けることもできます。この荷物はクール宅急便のみ、といった指定が可能です。
 
5、自動ロールアウト
全体を止めずにアプリケーションを少しずつバージョンアップすることができます。アプリケーションのデプロイのために、新しいコンテナの作成や既存コンテナの削除、新しいコンテナにリソースを適用する作業を、自動化できます。配送が終わった車からカーナビの機能を更新し、更新が終わった車から順次配達に回せる、そんな仕組みです。
 
6、機能拡張の柔軟性
詳細な監視やログ収集といった機能を柔軟に拡張が可能です。CNCFの支援により多数のOSSプロジェクトが活動しており、状況に合わせた様々な選択肢が用意されています。
 
7、クラウドベンダーのマネージドサービスとの統合
GKE(Google Kubernetes Engine)/AKS(Azure Kubernetes Service)/Amazon EKS(Elastic Kubernetes Service)などの主要なクラウドベンダーがKubernetesのサービスを提供しています。これらのサービスは各社のクラウドサービスとの連携・統合管理が非常に容易です。

Kubernetesの活用例

(1)Pokémon GO が数百万ものリクエストへの対応を実現している方法
https://cloud.google.com/blog/ja/topics/developers-practitioners/how-pok25c325a9mon-go-scales-millions-requests(※外部リンク)

Pokémon GO
画像出展:How does Pokémon Go scale to millions of requests?(※外部リンク)

フロントエンドサービスをGKEで運用しており、大きなイベント時でも簡単な準備で済んでいるそうです。上図中央のClusterがKubernetesでスケールされている部分になります。Kubernetesは何百万人もの人がプレイするアプリケーションでも採用されている技術です。

(2) コンテナ導入でDXを推進、2025年の壁を乗り越えよう
PlayStationグループ全体で使用している開発ツールやテストツールを、Kubernetesで運用しており、プロジェクトやチームごとに開発環境の最適化を図れているそうです。
※参考:https://codezine.jp/article/detail/12040(※外部リンク)

OpenShiftとは

Kubernetesによるコンテナ管理以外にも、実際のシステム運用には開発したアプリケーションをリリースする、などの作業が伴うため、開発・運用時によく使われる機能をKubernetesと組み合わせる必要があります。そこで登場したのがOpenShiftです。

OpenShift とは、Red Hat社が提供しているエンタープライズ対応のKubernetesコンテナプラットフォームで、Docker、Kubernetes、Dockerレジストリなどで構成されています。運用だけでなく、CI/CD(※4)に対応した機能が追加されています。例えば、コンテナ間の通信をプロジェクト毎に分離する機能や、ソースコードからビルドしたアプリケーションをコンテナにデプロイ(適応)する機能などがあります。
 
※4 CI/CD
CI/CDとは「Continuous Integration/Continuous Delivery」の略で、日本語では継続的インティグレーション/継続的デリバリーといいます。1つの技術を指すものでなく、ソフトウェアの変更を常にテストして自動で本番環境にリリース可能な状態にしておく、ソフトウェア開発の手法を意味しています。

運用に向けて

安定的な運用には、Kubernetes/OpenShiftのようなアプリケーションを安定的に稼働できる環境を準備する以外にも、運用する人や場所、ネットワークのセキュリティの担保、BCP(事業継続計画Business Continuity Planning)といった課題があります。特にBCPをたて、自然災害やテロ、システム障害など危機的な状況に遭遇した時に損害を最小限に抑え、重要な業務を継続し早期復旧を図るための準備を行う必要性が高まっています。
システムの開発・更改だけでなく、サーバの保守期限が近くクラウドへの移行を検討する、BCP環境を早々に準備する、など一緒に検討計画したほうがビジネスのコストも速度も効率がよいテーマが多いと思います。
 
私は、エンジニアとして20年超様々なシステムを開発してきました。私が所属している会社とは別の会社となりますがIDデータセンターマネジメント社のメンバーとシステムの基盤を一緒に設計し、開発した後の運用を任せてきました。ホストからクラウドまで対応できる非常に頼もしいチームです。コンサルにありがちな、相談・計画はするけど実行できない、ということはなく、あらゆる相談と計画と実行までお任せできます。来年度の計画検討にあたり、下の「IDデータセンターマネジメント」へご連絡ください。

Smart運用

IDデータセンターマネジメント、 次世代型システム運用サービス「Smart運用」提供開始 ~人からAIへ、最大90%のコスト削減を実現する運用革命~
https://www.id-dcm.co.jp/news/423
 
【本件に関するお問い合わせ先】
 株式会社IDデータセンターマネジメント
 電話番号:03-5211-0810
 メールアドレス:dcm-sales@id-dcm.co.jp


当サイトの内容、テキスト、画像等の転載・転記・使用する場合は問い合わせよりご連絡下さい。

エバンジェリストによるコラムやIDグループからのお知らせなどを
メルマガでお届けしています。

メルマガ登録ボタン