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

20181211_OracleCodeTokyo_k8s.pdf

cotoc
December 11, 2018
12k

 20181211_OracleCodeTokyo_k8s.pdf

2018/12/11 Oracle Code Tokyo
Kubernetes 基礎:私が半年間で学んだKubernetesの3つのこと

cotoc

December 11, 2018
Tweet

Transcript

  1. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 私が半年間で学んだ Kubernetesの3つのこと 日本オラクル株式会社 クラウド・プラットフォーム本部 Middlewareソリューション部
  2. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 自己紹介 • 茂 こと(しげる こと) • 日本オラクルのソリューションエンジニア – Oracle Database 数年 – Docker/Kubernetes 6ヶ月くらい – Vitess/MySQL 3週間くらい • キーボードはREALFORCE(光らない) @cotoc88 撮影:JapanContainerDays実行委員会 2
  3. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Kubernetesを さわったことがありますか? 3
  4. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Kubernetesとは • Kubernetesはコンテナ・オーケストレーションツール – Google発のオープンソース • 2014年6月にローンチされ、2015年7月にCloud Native Computing Foundation(CNCF)に開発が移管 – CNCFは著名な開発者、エンドユーザ、大手クラウドプロバイダ、 ベンダーが参加しており、現在はCNCFが主体となり中立的な立 場で開発が進められています Platinum Members 4
  5. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 私が半年間で学んだKubernetesの3つのこと 1. Kubernetes、なんだかすごそうだ! – Kubernetes登場の背景・メリット 2. Kubernetes、なんだか大変そうだ! – 最初にぶつかる壁 3. Kubernetesで広がる世界! 5
  6. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Container/Kubernetesって なぜ流行ってるの? 6
  7. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | コンテナは流行っているらしい 世界中の企業で採用が進んでいる 2. スケーラビリティ 1. 素早いデプロイメント 3. モジュール性
  8. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | コンテナってなに…? • コンテナ型仮想化という技術で実現されている、仮想マシンの一種 • 軽量・高速・高密度にアプリケーションを実行させることが可能 コンテナ = 軽量・高速な仮想マシン H/W ホストOS Bin /Lib アプ リA Bin /Lib アプ リB Bin /Lib アプ リC Bin /Lib アプ リD Bin /Lib アプ リE Bin /Lib アプ リF ホストOS ハイパーバイザー Bin/Lib アプリA Bin/Lib ゲストOS ゲストOS H/W アプリB アプリC 従来型の仮想化 コンテナ型仮想化 ✓ 軽容量 – カーネル部分をホストOSと共有するため軽量 – 高い可搬性 ✓ 高速 – 起動が早い – オーバヘッドが少なくパフォーマンスが高い ✓ モジュール化 – 他の構成要素に及ぼす影響が最小限 8
  9. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | どうやって面倒を見れば… 10 手に負えん… 軽くて集約できるもんだからついつい数が増えちゃう
  10. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | コンテナ・オーケストレーター • 複数コンテナのデプロイ、スケーリング等を自動管理するプラットフォーム • Kubernetesがデファクト・スタンダードになりつつある 大量のコンテナを管理・運用するプラットフォーム – 複数ホストにコンテナをデプロイ (HWを意識しない) – 手動/自動でスケーリング – 複数コンテナをまとめて制御 – コンテナの死活監視 障害時のコンテナ再立ち上げ – クラスター内/外のネットワーク アクセスの管理 11
  11. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | コンテナオーケストレーションが実現すること 大きなリソースのプール 12
  12. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | コンテナオーケストレーションが実現すること コンテナ はい! 動け! 13
  13. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | コンテナオーケストレーションが実現すること はい! がんばれ! 自動で複数のマシンに分散配置 (HWを意識しない) 14
  14. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | コンテナオーケストレーションが実現すること はい! 自律的にローリングアップデート アップグレード! 15
  15. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | コンテナオーケストレーションが実現すること はい! コンテナが落ちたら自動で新たに立ち上げる 16
  16. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | よし、 さっそくやってみよう! 18
  17. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Kubernetes利用環境の主要な構成要素 • 大きく分けて、Kubernetesクラスター、kubectl、コンテナレジストリで構成 – kubectl • Kubernetesクラスターの管理操作を行うためのコマンドラインツール – Kubernetesクラスター • クラスター本体、実際のワークロードが可動する場所 – コンテナレジストリ • コンテナイメージの保管・配送システム Kubenetesクラスター >_ kubectl ノードとネットワーク コンテナ レジストリ 19
  18. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Kubernetes上でコンテナが動作する様子 • Kubernetesでアプリケーションを動かすときの最も基本的な構成 – Pod / Container • 複数のコンテナを束ねる単位 – Deployment / Deployment Controller • Podの状態(レプリカ数など)を定義するデータ/制御プロセス – Service • クラスタ内外の通信を ルーティング Kuberenetesクラスター Dc Deployment Controller Service etcd Master D Deployment Pod Container リクエスト 20
  19. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Kubernetesは宣言的オペレーション 21 最終的にどうあるべきかということを宣言的に記述 Kuberenetesクラスター manifestファイル ✓ アプリ x 3 ✓ データストア x 2 ✓ ネットワークはアプリ→ データストアを許可 ✓ …etc Kubernetesに適用 • クラスターに配備する要素を全てマニフェスト・ファイル(=コード)に記述 – 環境構成の変更内容をバージョン管理し、追跡可能にする – 運用オペレーションはコードの変更によって実施し、作業を簡素化する
  20. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | マニフェスト・ファイルの例 • yaml形式で記述するのが主流 • 右例では以下のような構成を定義 – 3つのPodで冗長化 – コンテナイメージは、 cotoc/cowweb:v1.0 – ポート8080を公開してアプリに流す … apiVersion: apps/v1 kind: Deployment metadata: name: cowweb spec: replicas: 3 selector: matchLabels: app: cowweb strategy: type: Recreate template: metadata: labels: app: cowweb version: v1.0 spec: containers: - name: cowweb image: cotoc/cowweb:v1.0 ports: - name: api containerPort: 8080 ...(以下略)... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 22
  21. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | マニフェスト・ファイルの運用 本番環境で運用するためには様々な考慮が必要 https://speakerdeck.com/masayaaoyama/jkd1812-prd-manifests Kubernetes完全ガイド impress top gearシリーズ @amsy810 23
  22. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 単純なアプリケーションでも3桁・・・ 24 apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports: - port: 80 selector: app: wordpress tier: frontend type: LoadBalancer --- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wp-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi 17 18 19 20 21 22 23 24 25 26 27 28 29 30 apiVersion: apps/v1 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: frontend ---- 略 ---- storage mountPath: /var/www/html volumes: - name: wordpress-persistent-storage persistentVolumeClaim: claimName: wp-pv-claim 31 32 33 33 34 35 36 37 39 40 41 42 … 60 61 62 63 64 65 66 67 apiVersion: v1 kind: Service metadata: name: wordpress-mysql labels: app: wordpress spec: ports: - port: 3306 selector: app: wordpress tier: mysql clusterIP: None --- 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi --- 以下略 --- 83 84 85 86 87 88 89 90 91 92 93 94 95 96 ・ ・ 131
  23. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | なんだか大変そうだ… 通称:YAMLの壁 25
  24. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | でも、その先に待つのは! 複数ホストにコンテナをデプロイ (HWを意識しない) 手動/自動でスケーリング 複数コンテナをまとめて制御 コンテナの死活監視 障害時のコンテナ再立ち上げ クラスター内/外のネットワーク アクセスの管理
  25. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Cloud Nativeプロダクトと組み合わせて最高のDevOpsを!
  26. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | • コンテナのCI/CD – 自動でビルド,テスト,デプロイを実施 • Wercker – 2012年オランダ発、現在はOracleが提供して いるCIツール • Spinnaker – Netflixが開発したCDツール • カナリーリリースの自動解析など • 運用・監視 – k8sクラスターやPodの監視 • Prometheus – システムのモニタリング・アラートのためのソフ トウェア – K8sとの連携機能あり • Grafana – メトリックの可視化ツール • 豊富なグラフテンプレート DevOpsを実現するためのCloud Nativeプロダクト群 28
  27. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | • サービスメッシュ – マイクロサービス間に張りめぐされたメッシュ 状のトラフィックや経路の制御 • Istio – Pod間の通信にプロキシ(Envoy)を挟むことで トラフィックのモニタリングやコントロールを行う – アプリの変更なし • 分散データベース – k8s上でスケーラブルな分散データベース • Vitess – シャーディング技術を用いることでMySQLをス ケーラブルに扱うことができるクラスタリングシ ステム スケーラブルなアーキテクチャに不可欠なインフラ 29
  28. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | 本日お話した3つのこと 1. Kubernetes、なんだかすごそうだ! – Kubernetes登場の背景・メリット 2. Kubernetes、なんだか大変そうだ! – 最初にぶつかる壁 3. Kubernetesで広がる世界! 30 YAMLの壁を乗り越えて、KubernetesとCloud Nativeプロダクトを活用 して最高の開発/プロダクション環境を実現しよう!
  29. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | • Oracle Container Engine for Kubernetes (OKE) – マネージドKubernetesサービス • Oracle Cloud Infrastructure Registry (OCIR) – マネージドなコンテナレジストリ Containers on Oracle Cloud OracleもKubernetesのサービスを提供しています • コンテナベースのマイクロサービスおよびサーバーレス・アプリケーション を構築、配置、管理するためのフルマネージド・サービスを提供します 32
  30. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Oracle on Docker Store • Docker StoreでOracle Database、Oracle WebLogic Server、Oracle Coherence、Oracle Javaなどの主要製品を公式なDockerイメージとして利 用できるようになりました – OTN開発者ライセンスで無償利用可能 Oracleの製品がDockerで簡単に動かせるようになりました https://store.docker.com/publishers/oracle 33
  31. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Container/Cloud Nativeの世界はコミュニティが活発 34 もっと詳しくCloud Nativeな技術を共有し学び会える場 ※ https://containerdays.jp ※来年はCloudNative Daysに名称が変更
  32. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Oracle Cloud Hangout Cafe(OchaCafe) テーマ キーワード 12/20 コンテナを使ったCI/CD Wercker,Kubernetes,Spinnaker 1月開催予定 Microservicesの運用・管理 Grafana,Prometheus,istio, 2月開催予定 Microservicesな Javaアプリケーション Helidon,MicroProfile,GraalVM 3月開催予定 明日から使える Enterprise Blockchain Hyperledger Fabric 4月開催予定 避けては通れない 認証/認可 OAuth 2.0,OpenID Connect 5月開催予定 OpenAPIのエコシステム OpenAPI 35 カフェで一息つきながらしっかり学べる、Cloud Nativeな勉強会シリーズ ※発表順序・テーマは変更する可能性があります。 https://ochacafe.connpass.com/event/108009/ #ochacafe
  33. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.

    | Safe Harbor Statement The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.