GCPUGでのライトニングトーク(自己紹介とKubernates)
by
とこま
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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 などなど・・・・・ みんなで盛り上げましょう !