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

IKSハンズオン_講義.pdf

k
May 22, 2019

 IKSハンズオン_講義.pdf

k

May 22, 2019
Tweet

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 コンテナー/Kubernetesを使っている企業は増えています
  3. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

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

    IBM Corporation そこでコンテナーですよ 5 1 起動が早い • ホストOSからみると、プロセスが⽴ち上がるだけ • スケールしたときにもすぐにアプリが⽴ち上がる 2 属⼈化や環境差異を排除できる • 環境構築の⼀連の作業をコード化できる • いつ何度実⾏しても同じ環境が再現される 3 ポータビリティー性がある • アプリの実⾏に必要な依存関係をすべてパッケージングできる • Dockerエンジンが動く環境ならどこでも実⾏できることが保証されている
  5. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

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

    IBM Corporation Docker ∈ コンテナー 7 コンテナーを利⽤するための仕組みを提供するプラットフォーム • 「開発者が簡単にアプリケーションを動かす環境を作る」ことができる • コンテナーのデファクトスタンダード Build Ship Run イメージの作成 (アプリの開発) イメージの共有 コンテナーの実行 Dockerを介してコンテナーのライフサイクルを管理
  7. 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
  8. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

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

    IBM Corporation Dockerを使った開発の流れ 10 Dockerfile Docker イメージ コンテナー レジストリ 必要な 設定を記載 開発者 コンテナー イメージ作成 イメージの 登録 開発者 アプリ実⾏ アプリ開発
  10. 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
  11. 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 をいくつか書いてみましょう!
  12. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation コンテナー開発環境 n コンテナー化を始める際に 必要なもの docker ソースコード・レポジトリ ビルド・テスト⾃動化ツール コンテナー・レジストリ GitHub GitLab Docker Registry 開発者環境 git clone git push git commit コミットを トリガーに ⾃動実⾏ コンテナー のビルド アプリケー ションの ビルド コードの取得 テストツール の⾃動実⾏ Dockerfileも アプリケーションコードと 同様に管理 テストを通過したら、 本番⽤レジストリに登録 問題が発⽣したら即座にフィードバック
  13. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

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

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

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

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

    IBM Corporation Kubernetesのアーキテクチャ 18 理想状態になるよう Node上のコンテナを管理 作成したコンテナーはNode上に配置 管理者 ユーザー
  18. @2019 IBM Corporation Deployment (配備、展開 by weblio) 19 n最も⼀般的なワークロード定義体 –

    Label –Pod –ReplicaSet –ports •ClusterIPs •NodePort – (Ingress) Pod IP 10.1.206.34 10.1.206.110 Cluster IP 10.0.0.142 169.56.42.73 Ingress IP Deployment
  19. @2019 IBM Corporation Pod ((エンドウなどの)さや、 (アザラシ・クジラなどの)⼩群 by weblio) 20 nKubernetes

    における最⼩の管理単位 –Podの中には 1つ以上 の コンテナーが含まれる –Pod単位でスケールイン・スケールアウトする –PodごとにIPアドレスがアサインされる Pod IP 10.1.206.34 10.1.206.128
  20. @2019 IBM Corporation ReplicaSet 21 nPodを管理するための定義 –Podの必要稼働数を定義 –K8Sの Scheduler が

    どのノードにアサインするかは考慮してくれる Pod IP 10.1.206.34 10.1.206.110 ReplicaSet - 必要数2 - 現⾏ 2 ノード ノード
  21. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation まとめ 23 02 01 コンテナーとは? Dockerとは? 03 Kubernetesとは? 04 コンテナーのはじめ⽅ • Linux上の隔離された空間で実行されるプロセス • アプリの実行に必要な依存関係をすべてパッケージングできる • コンテナーの作成・共有・実行をするためのツール • 冪等性やポータビリティー性といったメリットがある • コンテナーのオーケストレーション・ツール • 理想状態を宣言すると、その状態を維持しようとしてくれる • まずはアプリをコンテナ(Docker)化してみるところからスタート • Kubernetesは必要な機能だけを絞って動かしてみる