現在位置: ホーム / ゲストブログ / [第5回]Linux/OSS エヴァンジェリスト古賀政純の ”旬”のオープンソースソフトウェア~Docker管理ソフトウェアのKubernetesの概要を理解する(前編)~

[第5回]Linux/OSS エヴァンジェリスト古賀政純の ”旬”のオープンソースソフトウェア~Docker管理ソフトウェアのKubernetesの概要を理解する(前編)~

今回のゲストブログは、日本ヒューレット・パッカードが公式に認定するオープンソース・Linuxテクノロジーエバンジェリストの古賀政純さんです。連載5回と第6回に分けて、『Docker管理ソフトウェアのKubernetesの概要を理解する』と題して、Docker環境の管理ツールとして注目を浴びるKubernetes(クーバネティス)を紹介しています。Kubernetesは、コンテナのオーケストレーションを行い、オンプレミスのベアメタル(物理サーバー)環境やハイパーバイザー型の仮想化環境で稼動するDockerコンテナの実行だけでなく、クラウド環境での稼動もサポートしています。本ブログでは、Kubernetesで実現できることや、Kubernetesのコンセプト、アーキテクチャを中心に紹介します。(2016年1月14日)

 

Docker管理ソフトウェアのKubernetesの概要を理解する(前編)

大流行のコンテナ技術

以前、本連載で取り上げたApache SparkやApache Mesosと並んで、近年、欧米のIT部門や開発者の間でもっともホットな話題の一つに「コンテナ」があります。商用のUNIXシステムに携わる方は、HP-UX ContainersやSolaris Containersという言葉が思いつく方もいるかもしれませんが、2013年に登場したLinux上で稼動する「Docker(ドッカー)」とよばれるコンテナ管理ソフトウェアが大流行しています。

このDockerは、従来のUNIXシステムで採用されていたコンテナの概念やLinuxで稼動する「Linuxコンテナ」などの技術を取り入れ、それをさらに発展させたものです。Dockerは、開発効率を劇的に向上させると同時に、OSやアプリケーションの構築・配備の自動化といった、開発者、および、運用管理者双方にとっての効率化の仕組みを提供しているため、現在、欧米のIT部門で進んでいるDevOpsに不可欠な要素の一つとして考えられています。

とくに、運用管理を行うIT部門にとって、複雑に絡みあう複数のOSSスタックの構築を簡素化できるとあって、Dockerに大きな期待が寄せられています。

guest-blog-20160105_1_1_なぜコンテナなのか?

図1. なぜコンテナなのか?

 

コンテナ管理ソフトウェアの必要性

しかし、Dockerコンテナを稼動させるエンジン本体だけでは、コンテナを使った開発や運用の効率化を行うことはできません。Dockerエンジンや基本的なコマンド以外に、様々な周辺ソフトウェアが必要となります。

Dockerの周辺ソフトウェアとしては、複数の物理サーバーで稼動するDocker環境を束ねてクラスター化するDocker Swarmや、複数の異なるアプリケーションの連携やスケールなどを行うDocker Compose、さらに、複数の物理サーバー間で仮想的なネットワークを構成するためのflannel(フラネル)やdocker networkなどがあります。

1台の物理サーバーで少数のアプリケーションが稼動するような単純なシステムであれば、Dockerエンジンと簡単な管理コマンドだけで事足りるでしょうが、複数の物理サーバーがネットワークでつながり、その上で稼動する膨大な数のコンテナが協調動作するような複雑なシステムでは、コンテナの効率的な管理は欠かせません。アプリケーション同士の連携、応答性能の向上、監視の仕組みなどを考慮する必要があります。

その中でも、Docker環境の管理ツールとして注目されているのが、Google社が当初開発を行い、現在、Linux Foundationの傘下のCloud Native Computing Foundationの元、開発が進められているKubernetes(クーバネティス)です。

 

Kubernetesとは?

Kubernetesは、Google社がオープンソースで公開したコンテナ向けのクラスター管理ソフトウェアです。欧米では、「kube」や、「k8s」(Kubernetesという単語の先頭のKと最後のsの間にアルファベットが8文字あるため)と呼ばれることもあります。

Kubernetesは、コンテナのオーケストレーションを行い、オンプレミスのベアメタル(物理サーバー)環境やハイパーバイザー型の仮想化環境で稼動するDockerコンテナの実行だけでなく、クラウド環境での稼動もサポートしています。

稼動するOS環境は、主にLinuxです。RHEL、CentOS、Ubuntu Server、さらに、CoreOS(コアオーエス)や、Atomic Hostなどのコンテナ専用OSでも稼動します。最近では、Red Hat社がリリースしたコンテナ専用OS「Red Hat Enterprise Linux Atomic Host」においてもKubernetesが採用され、注目が集まっています。

Kubernetesが稼動できる環境については、以下のURLが参考になります。

 

guest-blog-20160105_1_2_Kubernetesが稼動できる環境

図2. Kubernetesが稼動できる環境


Kubernetes自体は、今年になって非常に注目されるようになりましたが、Google社では、巷でハイパーバイザー型の仮想化基盤が流行しはじめた2000年代中ごろの時代から、業務アプリケーションのコンテナ化に取り組んでおり、すでに10年以上の経験があります。

Google社では、検索システム、メールシステム、地図情報提供システム、ビッグデータ基盤など、ほぼ全ての業務アプリケーションがコンテナで稼動しています。その数も膨大で、1週間に20億個のコンテナが起動しています。当然、膨大な数のコンテナを効率よく管理する仕組みも組み込まれています。また、負荷の集中によるアプリケーションの応答速度の低減やコンテナの異常終了による業務停止をどうやって回避するのかといったことも検討されています。

Kubernetesには、これらのGoogle社のノウハウが凝縮されており、膨大な数のコンテナを稼動させる場合に必要となる技術要素をKubernetesで知ることができます。

Kubernetesで実現できること

Kubernetesは、物理サーバーの管理やOS配備は行いませんが、その上で稼動するコンテナのアプリケーションを管理します。また、コンテナの複製(レプリケーション)や障害時におけるコンテナの再起動といったサービスの可用性、応答性能向上のためのコンテナの自動スケール機能、スケジューリング機能を提供します。

このような業務継続、可用性を検討するには、複数の物理サーバーや仮想化環境(一般的にマルチホストといいます)上で稼動するコンテナの基盤をどのように自動的に管理・運用するかといった議論が必要になります。

ここではあまり深く紹介しませんが、マルチホストでコンテナが稼動するIT基盤において、主な議論すべき点をあげると以下があげられます。

  • 単一障害点の排除
  • スケールアウトによる応答性能の向上
  • 分散アプリケーションの効率的な管理
  • 自動回復機能

Kubernetesを導入すると、主に以下のようなことが実現できます。

  • 複数の物理サーバーにまたがったコンテナの配備、管理
  • コンテナの死活監視、再起動
  • コンテナの負荷分散
  • 複数のコンテナのグループ化
  • コンテナで稼動するアプリケーションのオーケストレーション


Kubernetesは、Dockerイメージの入手、コンテナの起動などを行いますが、その後ろには、Dockerが必要です。ただし、Kubernetesで提供される機能は、Dockerのコマンドラインでできることの全てを網羅しているわけではありません。

場合によっては、ほかのGUIツールとの併用や作りこみを考慮する必要がありますので、注意が必要です。

Kubernetesのコンセプト、アーキテクチャ

Kubernetesは、複数の物理サーバーや仮想化環境で稼動するコンテナを効率よく管理できますが、その効率化のための独自の仕組みがあります。そのためには、Kubernetesを構成するコンポーネントを理解する必要があります。

以下は、Kubernetesにおける用語や、主なコンポーネントです。

  • クラスター(計算資源の集まり)
  • マスター(クラスター全体を管理するホスト)
  • ノード(Docker、kubelet、プロキシーが稼動するホスト)
  • Pods (IPアドレスと共有ボリュームを持つコンテナの集まり。生成、スケジュール、管理の基本単位)
  • Replication Controllers (ポッドのライフサイクル管理に利用)
  • Services (Podの集合体に対して、仮想IPアドレスや、基本的なロードバランサーを提供)
  • Labels(オブジェクトのグループの選択に利用される名前)


次回は、Kubernetesの各コンポーネントについてより深く紹介します。

各種お問い合わせ

サイオスOSSよろず相談室(1)

問い合わせボタン

最新の情報
[第17回] Linux/OSS エバンジェリスト古賀政純の『オープンソース・Linux超入門』 Linuxサーバーのためのハードウェア設定 ~ ハードウェアに搭載されている電源管理・電力管理機能とLinuxの関係 ~ 2017年07月19日
[第16回] Linux/OSS エバンジェリスト古賀政純の『オープンソース・Linux超入門』 Linuxサーバーのためのハードウェア設定 ~ CPUの仮想化支援機能 ~ 2017年07月05日
[第15回] Linux/OSS エバンジェリスト古賀政純の『オープンソース・Linux超入門』 Linuxサーバーのためのハードウェア設定 ~ Hyper-Threading ~ 2017年06月21日
わかっておきたいセキュリティ: 第5回 VirusTotal at Home/Work「Malice」 2017年05月10日
わかっておきたいセキュリティ: 第4回 IRMA (Incident Response Malware Analysis) 2017年03月29日
わかっておきたいセキュリティ: 第3回 マルウェア解析サンドボックス「Cuckoo」との連携 その2 2017年02月22日
[第14回] Linux/OSS エバンジェリスト古賀政純の 『オープンソース・Linux超入門』 システム要件において検討すべき点 その4 2017年02月08日
[第13回] Linux/OSS エバンジェリスト古賀政純の 『オープンソース・Linux超入門』 システム要件において検討すべき点 その3 2017年02月01日
[第12回] Linux/OSS エバンジェリスト古賀政純の 『オープンソース・Linux超入門』 システム要件において検討すべき点 その2 2017年01月25日
[第11回] Linux/OSS エバンジェリスト古賀政純の『オープンソース・Linux超入門』 システム要件において検討すべき点 その1 2017年01月18日
Python人材育成の支援を目的としたPythonエンジニア育成推進協会の活動とは? 2016年12月21日
わかっておきたいセキュリティ: 第2回 マルウェア解析サンドボックス「Cuckoo」との連携 2016年12月14日
可知豊の『 わかっておきたい、オープンソースライセンス』: 第3回 オープンソースライセンスの使い方をわかっておきたい 2016年12月08日
可知豊の『 わかっておきたい、オープンソースライセンス』: 第2回 色々なオープンソースライセンスをわかっておきたい 2016年11月30日
可知豊の『 わかっておきたい、オープンソースライセンス』: 第1回 著作権とライセンスをわかっておきたい 2016年11月17日
わかっておきたいセキュリティ: 第1回 マルウェア解析サンドボックス「Cuckoo」 2016年11月02日
[第10回] Linux/OSS エヴァンジェリスト古賀政純の 『オープンソース・Linux超入門』 Linuxサーバーシステム導入前の検討~ RHELを知る ~ 2016年10月26日
[第9回] Linux/OSS エヴァンジェリスト古賀政純の 『オープンソース・Linux超入門』 Linuxサーバーシステム導入前の検討~ Ubuntu Serverを知る ~ 2016年10月19日
[第8回] Linux/OSS エヴァンジェリスト古賀政純の 『オープンソース・Linux超入門』  Linuxサーバーシステム導入前の検討~ SUSEを知る ~ 2016年10月12日
[第7回] Linux/OSS エヴァンジェリスト古賀政純の 『オープンソース・Linux超入門』~「初心者でもわかる、Linuxサーバーシステム活用者が知っておくべきポイント」(後編) 2016年08月09日
最新の情報 - もっと...