Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コンテナーとKubernetesの基礎 / Fundamentals of Container and Kubernetes

コンテナーとKubernetesの基礎 / Fundamentals of Container and Kubernetes

2019/04/16 IKSワークショップで体験 - コンテナとKubernetes の資料です。

Yoshihiro Kishida

April 16, 2019
Tweet

More Decks by Yoshihiro Kishida

Other Decks in Technology

Transcript

  1. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation なぜ コンテナー/Kubernetesが 注目されているのでしょうか
  2. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation 実現したいことは何でしょう? 開発の スピード リリースの スピード 機能改修の スピード
  3. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation そこでコンテナーですよ 4 1 起動が早い • ホストOSからみると、プロセスが立ち上がるだけ • スケールしたときにもすぐにアプリが立ち上がる 2 冪等性が保たれる • Infrastructure as Code により、環境構築の一連の作業をコード化できる • Immutable Infrastructure により、何度実行しても同じ環境が再現される 3 ポータビリティー性がある • アプリの実行に必要な依存関係をすべてパッケージングできる • Dokcerエンジンが動く環境ならどこでも実行できることが保証されている
  4. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation Container Engine 「仮想マシン」と「コンテナー」 5 https://docs.docker.com/engine/docker-overview • HWレベルの仮想化 • OSカーネルを専有 • 仮想マシンごとに隔離 • OSレベルの仮想化 • OSカーネルを共有し、プロセスとして起動 • プロセスをグループ化して隔離
  5. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation Docker ∈ コンテナー 6 コンテナーを利用するための仕組みを提供するプラットフォーム • 「開発者が簡単にアプリケーションを動かす環境を作る」ことができる • コンテナーのデファクトスタンダード Build Ship Run           Dockerを介してコンテナーのライフサイクルを管理
  6. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation コンテナーのポータビリティ と Docker HUB n コンテナーのポータビリティ –Docker イメージ • アプリケーション稼働に必要な依存ファイルを パッケージングできる • 物理サーバーに固定されない → 同じアーキテクチャの環境であれば ポータビリティが存在ある n Docker HUB システム基盤 (クラウド) ホストOS システム基盤 (オンプレミス) ホストOS コン テナ エン ジン App1 Bin/Libs App2 Bin/Libs App3 Bin/Libs 「僕の環境では動いた」 問題が発生しない docker pull httpd docker push iwashina/myapp docker pull websphere-liberty       コン テナ エン ジン App3 Bin/Libs
  7. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation コンテナー環境におけるシステム開発 nInfrastructure as Code の徹底 – 環境構築の一連の作業はDockerfile にコード化
  8. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation Dockerを使った開発の流れ 9 Dockerfile Docker イメージ コンテナー レジストリ 必要な 設定を記載 開発者 コンテナー イメージ作成 イメージの 登録 開発者 アプリ実行 アプリ開発
  9. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation コンテナーのはじめ方 n CNCFの Cloud Native Trail Map を参照 1. コンテナー化 • 一般的には Docker コンテナで実施 • いかなるサイズのアプリケーションも依存性もコンテナ化可能 • 時間が経つにつれ、アプリケーションを分割し マイクロサービス化したくなるだろう 2. CI/CD(継続デリバリの仕組み) • 継続インテグレーション・継続デリバリの仕組みをセットアップ • コード変更が 新しいコンテナ・イメージとして、 自動的にビルドされ、テストされ、デプロイされるように 3. オーケストレーション&アプリ定義 • 互換性試験に合格している Certified Kubernetes 環境を選択 • もっとも複雑なアプリケーションであっても HELMで 定義して、導入して更新していくことが可能 https://github.com/cncf/landscape/blob/master/README.md#trail-map
  10. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation コンテナーを学ぶには n Docker 社のサイトから無償ダウンロード可能 – https://www.docker.com/products/docker-desktop – docker for Mac / docker for Windows n Docker について学ぶ –http://docs.docker.jp/index.html • 有志により Dockerのドキュメントが 日本語化されています • まずは Dockerfile をいくつか書いてみましょう!
  11. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation コンテナー開発環境 n コンテナー化を始める際に 必要なもの L R R L bli L gcaus blh R D H R R mp L blh D H R e r L f tk L no cd y R G
  12. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation 実現したいことは何でしょう? 開発の スピード リリースの スピード 機能改修の スピード 運用の 自動化 柔軟な スケール
  13. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation Kubernetesとは 14 コンテナーの運用実行と管理を行うオーケストレーションツール • コンテナーが大量になってくると管理しきれない部分をカバー • 複数のDockerホストの管理 • 死活監視 • スケジューリング • スケーリング • 障害時のリカバリー • アプリ実行に必要なインフラリソースを管理 • 永続的なストレージ • ネットワーク • クレデンシャル情報 etc… • 宣言的設定モデル • 「あるべき状態」を記述すると、それを実現し続けようとしてくれる • 障害時も自動で復旧作業を実施
  14. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation Kubernetesの代表的な機能 スケールアウト 負荷分散 バージョン管理 (ロールアウト) ネットワーク管理 永続ストレージ管理 死活監視 自己復旧 CPU / Memory リソース管理
  15. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation マニフェストファイルで状態宣言 (例) • コンテナーイメージは? • コンテナーの数は? • 必要なCPU/Memoryは? • 外部アクセスのために開くポートは?
  16. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation Kubernetesのアーキテクチャ 17 理想状態になるよう Node上のコンテナを管理 作成したコンテナーはNode上に配置  
  17. 02102 0  18 n 2 @ – @B 

    MP 9 C – 0 I I – 0 @ 9 K 0 10.1.206.34 10.1.206.128
  18. 02102 0 19 n 0 C K9 @ P –

    0 MC P – I9 S8 B 0 10.1.206.34 10.1.206.110 2 -
  19. 2 2 021 20 n M B – TM 8

    I 9 – TM M C SM@ P K9 2/ 10.1.206.34 10.1.206.110 30010 30010
  20. . 4@9    21 nM I C B

    B N –1 6 –27 95437@ – @7 .1 –0 671 @ – . 7 1 6 .1 10.1.206.34 10.1.206.110 @7 .1 ( ( )      
  21. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation まとめ 22 02 01 コンテナーとは? Dockerとは? 03 Kubernetesとは? 04 コンテナーのはじめ方 • LinuxBab "W_K\ "!7>.- • %7;K\M]DJ`E$ 50)A,?(! • *?24ACQ@FS@K\$ !1A< • GXN8A/6;2&AN9;03! • *?24A'A)-3=A+:?@1A< • VOUP$L^ !UP$ZR  "! • %7;$*?24cDockerdI ! # -/A3 • KubernetesM]T[ $YH !
  22. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation Kubernetesハンズオンのお時間です github.com/cloud-handson/iks-handson