Slide 1

Slide 1 text

IBM Cloud | ©2019 IBM Corporation コンテナーと Kubernetesの基礎 日本アイ・ビー・エム株式会社 クラウド事業部 岸田 吉弘 IKSワークショップで体験 - コンテナとKubernetes

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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 をいくつか書いてみましょう!

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018 IBM Corporation Kubernetesのアーキテクチャ 17 理想状態になるよう Node上のコンテナを管理 作成したコンテナーはNode上に配置

Slide 18

Slide 18 text

02102 0 18 n 2 @ – @B MP 9 C – 0 I I – 0 @ 9 K 0 10.1.206.34 10.1.206.128

Slide 19

Slide 19 text

02102 0 19 n 0 C K9 @ P – 0 MC P – I9 S8 B 0 10.1.206.34 10.1.206.110 2 -

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

. 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 ( ( )

Slide 22

Slide 22 text

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!

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

IBM Cloud | ©2019 IBM Corporation