Pro Yearly is on sale from $80 to $50! »

コンテナとサーバ仮想化の違いと、Docker, Kubernetes, OpenShift

コンテナとサーバ仮想化の違いと、Docker, Kubernetes, OpenShift

Docker, Kubernetes, OpenShiftについてざっくりと紹介するスライド

79c2f7db29ee6df3e1ceb85c6a0126d3?s=128

Kazuo Moriwaka

April 06, 2018
Tweet

Transcript

  1. Red Hat K.K. All rights reserved. 1 コンテナとサーバ仮想化の違いと、 Docker, Kubernetes,

    OpenShift レッドハット株式会社 ソリューションアーキテクト 森若和雄 <kmoriwak@redhat.com> 2018-04-10
  2. Red Hat K.K. All rights reserved. 2 もくじ  サーバ仮想化とコンテナの違い

    • サーバ仮想化とコンテナ • コンテナの使いどころは ? • コンテナの注意が必要な点  Docker, Kubernetes, OpenShift • Docker は何をするのか ? • Docker は何がよかったのか ? • オーケストレーターとは ? Kubernetes とは ? • OCI (Open Container Initiative) とは ? • OpenShift Container Platform とは ?  製品としては ? • Red Hat Enterprise Linux • OpenShift Container Platform
  3. Red Hat K.K. All rights reserved. 3 サーバ仮想化とコンテナの違い

  4. Red Hat K.K. All rights reserved. 4 おさらい: 「仮想マシン」とは? 

    英語だと“ virtual machine” • virtual は「事実上の、実質上の、 実際 ( 上 ) の」  「事実上のサーバハードウェア みたいなもの」を ソフトウェアや特殊なハード ウェアで実現したもの サーバハードウェア 仮想化環境 仮想マシン OS アプリケーション
  5. Red Hat K.K. All rights reserved. 5 コンテナとは?  カーネルの

    1 機能  カーネルが提供するリソースを分離して コンテナの外を見えなくする • ネットワーク • プロセス ID • ファイルシステム • UID, GID • 共有メモリ  コンテナの中で動作するアプリケーショ ンからは自分だけが OS を占有して動作 しているように見える • OS の一部機能は利用できない  「仮想マシン」や「ゲスト OS 」は登場 しない サーバハードウェア アプリ カーネル コン テナ コン テナ コン テナ アプリ アプリ
  6. Red Hat K.K. All rights reserved. 6 サーバ仮想化 vs コンテナ(?)

    ゲストOS リソース消費 サーバ仮想化 (VMware, KVM, Hyper-V, Xen) 基本的には仮想化する物理 サーバで動作するなら何で もよい メモリ消費が大きい 起動終了処理は OSの起動が必要になり 待ち時間が長い(数十秒〜) コンテナ (LXC, Docker) 通常のOSでマイナーな機能 を使うだけ。 「ゲストOS」は存在しない メモリ消費が小さい 起動終了処理は 名前空間の分離だけで ほぼ待ち時間ゼロ
  7. Red Hat K.K. All rights reserved. 7 コンテナの使いどころは?  1

    つの OS 内で複数のアプリケーションを分離したい • 複数アプリケーションを同居させる時の悩み • 必要 JDK やライブラリのバージョンの違い • 必要サービス、パッケージの違い • 同一ポート番号の消費 • コンテナで分離し、外部へ見せるサービスはホスト上の NAPT で変換する  開発環境・テスト環境・本番環境で同一コンテナを利用 • 動作環境に依存する設定はホスト側でおこなう • ネットワーク設定やドライバなど • アプリケーションに影響する設定はコンテナ内でおこなう • コンテナの中には環境によって変わらないものだけ存在
  8. Red Hat K.K. All rights reserved. 8 コンテナの注意が必要な点  無理なこと

    • 別バージョンのカーネル利用 • 別種類の OS 導入  だいたい動くが一部問題がある • 別バージョンの linux カーネルを 前提にしたコンテナの利用 • Ubuntu の上で RHEL のコン テナを動かすなど • ※ RHEL 7 のコンテナでは RHEL 7 と、 RHEL 6 のコンテ ナだけがサポート対象 サーバハードウェア アプリ カーネル コン テナ コン テナ コン テナ アプリ アプリ
  9. Red Hat K.K. All rights reserved. 9 Docker, Kubernetes, OpenShift

  10. Red Hat K.K. All rights reserved. 10 Dockerは何をするのか? 2014 年くらいから「コンテナを利用するときに“

    Docker” を 使うと便利」と言われだした。この Docker が行うことは ?  コンテナの作成・削除・実行状態管理 • 基盤となっている OS とコンテナ間のネットワーク設定、ファイルの共 有、コンテナの権限設定 • 関連するプロセスの削除、過去の実行履歴の管理  コンテナで利用するイメージ ( ファイルシステムツリー ) を 作成・配布・実行・削除するなどの管理 • 転送用フォーマット策定 (tar+JSON) • ツリーの差分を管理し、差分を重ねあわせて ”イメージ”を作る • イメージを登録・取得・検索するための レジストリ作成 コンテナイメージ 実行 ファイル データ ファイル ライブラリ
  11. Red Hat K.K. All rights reserved. 11 Dockerの何が良かったのか?  「

    OS を分離する機能」であったコンテナを「アプリ ケーションを配布する仕組み」に応用した  アプリケーションを配布する仕組みとして「仮想マシ ンイメージ」より優秀 • アプリケーション以外のサービス等を起動しないので起動 処理の時間が短い • ディスクイメージよりコンテナイメージの方がサイズが小さく なるので転送が短い コンテナイメージ 実行 ファイル データ ファイル ライブラリ
  12. Red Hat K.K. All rights reserved. 12 Dockerイメージ図 https://docs.docker.com/engine/docker-overview/ より

  13. Red Hat K.K. All rights reserved. 13 オーケストレータとは? Kubernetes(くーばねぃてす、k8s)とは? 

    「コンテナイメージとしてアプリケーションを配布」は 非常に人気、自動的にやりたいことがでてくる : • コンテナを動かすための前準備 • コンテナに設定を渡す、ストレージを対応づける、パスワード など秘密の情報の付与、ネットワーク設定 • 複数の連携して動作するコンテナ間の対応づけ • コンテナが動作する場所や数の制御 • 可用性の維持、負荷にあわせたスケールアウト  これらを行う「オーケストレータ」が数種類登場した • Kubernetes, Docker Swarm, Apache Mesos など • 2018 年現在 Kubernetes がデファクトスタンダードの地位  コンテナイメージと設定をオーケストレータに渡すと指 定した諸元にあわせてコンテナを実行
  14. Red Hat K.K. All rights reserved. 14 Kubernetesイメージ図 Khtan66 (https://commons.wikimedia.org/wiki/File:Kubernetes.png),

    https://creativecommons.org/licenses/by-sa/4.0/legalcode
  15. Red Hat K.K. All rights reserved. 15 OCI(Open Container Initiative)とは?

    2014 年 : Docker が大人気。別のコンテナ管理の仕組みやオー ケストレータの開発も活発に。「コンテナ = Docker 」時代 ↓ 2015 年 : オープンな標準の必要性が認識され OCI という組織 でベンダ中立なコンテナ関連規格を策定。 ↓ 〜 2017 年 : OCI でイメージのフォーマット、コンテナランタ イムの規格策定と参照実装の開発が進行。 OCI の規格に準拠し た実装が複数登場。「コンテナ = OCI 」時代へ
  16. Red Hat K.K. All rights reserved. 16 OpenShift Container Platform

     Kubernetes を基盤として、アプリケーション開発・実 行環境として利用するための色々な機能を追加した製品  アプリケーションを開発・運用する人むけの機能を提供 • 典型的なアプリケーション実行環境のテンプレートを提供 • 開発したソフトウェアをコンテナイメージにする • コンテナ群を管理する ( ここに Kubernetes を利用 ) • マルチテナントに対応した管理 • アプリケーションの公開 • ロードバランス • 各種パターンでの配備 • ログ収集 • 独自コンテナレジストリ • 等
  17. Red Hat K.K. All rights reserved. 17 OpenShift Container Platformイメージ図

  18. Red Hat K.K. All rights reserved. 18 製品としては?

  19. Red Hat K.K. All rights reserved. 19 Red Hat Enterprise

    Linux (RHEL)  RHEL7 で、 RHEL の 1 機能として Docker 登場  コンテナ管理、イメージの管理機能  ハードウェアの特別な機能は利用しないので環境を選ばず利 用可 • ベアメタル環境 • 仮想化環境 • クラウド環境  kubernetes も含まれているが複数ホスト での利用はサポート対象外なので 事実上開発用途にのみ利用可 サーバハードウェア RHEL7 Docker コンテナ ライブラリ サービス サービス Docker コンテナ ライブラリ サービス サービス Docker コンテナ ライブラリ サービス サービス
  20. Red Hat K.K. All rights reserved. 20 OpenShift Container Platform

     Kubernetes を基に、アプリケーションを開発・動作さ せる基盤として利用するため色々な機能を追加した製品  OpenShift Online • Red Hat が運用する OpenShift によるアプリケーション基盤 • マルチテナント環境。プロジェクト数などにより無料の Starter および月額課金の Pro プランを選択  OpenShift Dedicated • Red Hat が運用する特定ユーザ専用の OpenShift クラスタ  OpenShift Container Platform • サブスクリプション形式で OpenShift のソフトウェアとサポー トを提供