Slide 1

Slide 1 text

Lightning talk Makoto Hashimoto

Slide 2

Slide 2 text

2 自己紹介 ● これまでやってきたこと、現在やっていること – エンタープライズ系アプリケーション ● Java&framework->ESB(Enterprise Service Bus) ● Business Rule Engine – ビッグデータ関連 ● Scala / Spark ● NoSQL(CouchDB 、 MongoDB 、 Couchbase) ● Amazon Elastic MapReduce(Spark 、 S3) ● プログラミング言語 – Java 、 python 、 Javascript 、 Clojure 、 Scala ● 開発環境 – Linux(Ubuntu)/Emacs – Cider(Clojure) 、 Encime(Scala) https://goo.gl/xD4gWN

Slide 3

Slide 3 text

3 自己紹介 ● これから新たにやろうとしていること – ブロックチェーン関連 ● Ethereum ● HyperLedger – 最適化問題 ● Google ortools(Google の Paris Lab が開発 ) – 工場のシフトスケジューリング、生産ラインの最適化 ● 個人的には – 神戸市内で農業と IT を繋げる活動 ● 食に興味あり ● シェアリングエコノミーと結びつけられないか?

Slide 4

Slide 4 text

4 自己紹介 農業と IT をつなぐ活動

Slide 5

Slide 5 text

5 神戸のムーブメント https://readyfor.jp/projects/tanigami 谷上プロジェクト https://www.nikkei.com/article/DGXMZO30513150V10C18A5AM1000/ マッキンゼーの研修拠点が新神戸に ( 日経新聞の web サイトより ) http://thebridge.jp/2017/04/announcing-500-kobe-accelerator- program-2017 http://urban-innovation-kobe.com/

Slide 6

Slide 6 text

6 GCPAG Kobe への期待 ● 何か面白いことができそう ! ● 地元で集まって技術者のネットワーキング ● テーマは? – 機械学習、 AI – インフラ (Kubernetes) U

Slide 7

Slide 7 text

7 GCP との関わり、やってみたいこと ● 3 月末から個人アカウントで利用開始 – 知り合いが GCP に転職して Facebook メッセージがきたのがきっかけ – Compute Engine(Bitcoin やEthereumの環境構築に利用 ) – Big Query ● BigData 関連 – GCP 環境での Sparkの利用 (Dataprop) – BigQueryでの PoC( バッチ、ストリーミング ) ● App Engine – AppEngine example with Clojure – WordPress ● Clojure wrapper for Google API – Google API for Clojurescript(ML API) – Clojurescript(Javascript) にて vision-api を用いた物体認識アプリケー ションを作成中( はまっています) ● そして Kubenetes

Slide 8

Slide 8 text

8 GCP との関わり、やってみたいこと $ time gcloud compute instances start instance-2 Starting instance(s) instance-2...done. Updated [https://www.googleapis.com/compute/v1/projects/test- project-199421/zones/us-east1-b/instances/instance-2]. real 0m9.996s user 0m0.607s sys 0m0.079s (ns my-gae.core (:require [compojure.core :refer :all] [compojure.route :as route])) (defroutes app (GET "/" [] "

こんにちは

") (route/not-found "

ページがみつかりません

")) GCP の IAS(Compute Engine) の起動は速い ! GAE の Clojure コード例

Slide 9

Slide 9 text

9 Kubernetes でやってみたいこと ● DevOps – ローカルでクラスタ環境を構築して開発・テストを 行い、さくっとプロダクション環境に持っていきたい – Minikube→GKE ● オンプレ、クラウド非依存 – オンプレ、クラウドベンダに依存しない可搬性の高 い基盤を構築したい ● クラスタリング – Spark 、 NoSQL などビッグデータの環境を k8s で構 築する – Hyperledger の環境を k8s で構築する

Slide 10

Slide 10 text

10 Kubernetes とは ● 公開コンテナを利用したインフラ環境の構築、運 用を容易にするためのソフトウェア – ソフトウェア組み合わせによる環境構築を容易にする – クラスタリング環境の構築を行い、手動・自動スケー リング機能を提供する – ローリングアップデートと呼ばれる稼働中のソフトウェア のアップデートを可能にする ● Google が社内で開発して、実際に利用しているコ ンテナ管理システムである Borg をベースにして 2018 年 6 月に公開 ● 船の操縦手 , 統括者・支配者というギリシャ語で あり、 k8s と略される

Slide 11

Slide 11 text

11 Kubernetes の構成要素 ● Pod – Kubernetes にデプロイできるオブジェクトの最小単位 – pod には Docker などのコンテナが 1 つ以上含まれる – ポッドで複数のコンテナが実行される場合、コンテナは単一のエンティ ティとして管理され、ポッドのリソースを共有 (ボリューム、ネットワーキン グ ) ● Deployment – Pod の配備と冗長化( レプリカ ) を行う – ReplicaSet の生成・管理を行う ● Service – Pod へのアクセスを提供する – ExternalIP を提供することで外部へのサービスを公開する ● Node – Docker などのコンテナのホストとなる物理的もしくは仮想的なマシン

Slide 12

Slide 12 text

12 マスターコンポーネント 構成要素 説明 kube-apiserver RESTベースのkubernetesの操作を行うフロ ントエンドAPIを提供 etcd クラスタデータを保持する分散型KVS kube-controller- manager 各種コントローラーを起動し、その状態を管 理するマネージャー cloud-controller- manager 各ベンダーのクラウド基盤とのやり取りを行 う kube-scheduler 可用性、パフォーマンス、および容量に大き な影響を与えるポリシーリッチ・トポロジを意 識したワークロード固有の機能を提供

Slide 13

Slide 13 text

13 ワーカーコンポーネント 構成要素 説明 kubelet クラスタのノード上で稼動するエージェン ト、podの中でコンテナが稼動していることを 保証する Kube-proxy KubernetesのServiceが持つ仮想的なIPア ドレス(cluster IP)へのアクセスをルーティング Container Runtime コンテナのためのソフトェアであり、現在 Docker, rkt, runcおよびOCIランタイム仕様 の実装が動く

Slide 14

Slide 14 text

14 アドオン 構成要素 説明 DNS KubernetesのためのDNSで多くのクラスタで はこのDNSを利用しており、クラスタ立ち上げ 時にDNSは起動する Web-ui (Dashboard) KubernetesのためのWebベースのダッシュボー ドであり、クラスタ自身とクラスタで稼動する アプリケーションの管理とトラブルシューティン グを行う Container Resource Monitoring 時系列のコンテナのリソースモニタリングのた めのメトリックスのデータベースおよびこれらの データを表示するためのUI Cluster-Level Logging クラスタレベルのロギングメカニズムおよび検 索・表示のためのインターフェイス

Slide 15

Slide 15 text

15 アーキテクチャ図 クラウド kubecnl kube- apiserver etcd kube- controller- manager cloud- controller- manager kubelet Container runtime kube-proxy ノード kubelet Container runtime kube-proxy ノード

Slide 16

Slide 16 text

16 オンプレ ( ノート PC) と GKE で切り替え kubecntl

Slide 17

Slide 17 text

17 うまくいかなかったところ $ kubectl get pods Error from server (Forbidden): pods is forbidden: User "client" cannot list pods in the namespace "default": Unknown user "client" ● Local PC(ubuntu 16.04) で以下を実行すると うまくいかない – gcloud container clusters get-credentials xxx ● Compute engine と同じ環境の ~/.kube/config をローカルにコピーするとうまく いく ( 当日の早朝 2 時頃に分った 涙 ) – これではまずいので現在問題究明中

Slide 18

Slide 18 text

18 一応できた ! $ kubectl config use-context minikube Switched to context "minikube". $ kubectl config use-context gke_test-project-199421_us-east1-b_my- cluster Switched to context "gke_test-project-199421_us-east1-b_my-cluster". ● minikube( ローカル環境 ) への切り替え ● GKE( クラスタ環境 ) への切り替え

Slide 19

Slide 19 text

19 次回機会があれば ● Kubernetes の続き – 実践的なより複雑なクラスタの構成の解説 – DevOps について ● Cloujure/Clojurescript ベースの物体認識ア プリ – oogle-vision-api などを利用 – Clojure on app-engine などなど・・・・・ みんなで盛り上げましょう !