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

GCPUGでのライトニングトーク(自己紹介とKubernates)

 GCPUGでのライトニングトーク(自己紹介とKubernates)

とこま

May 30, 2018
Tweet

Other Decks in Technology

Transcript

  1. 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
  2. 3 自己紹介 • これから新たにやろうとしていること – ブロックチェーン関連 • Ethereum • HyperLedger

    – 最適化問題 • Google ortools(Google の Paris Lab が開発 ) – 工場のシフトスケジューリング、生産ラインの最適化 • 個人的には – 神戸市内で農業と IT を繋げる活動 • 食に興味あり • シェアリングエコノミーと結びつけられないか?
  3. 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
  4. 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 "/" [] "<h1> こんにちは </h1>") (route/not-found "<h1> ページがみつかりません </h1>")) GCP の IAS(Compute Engine) の起動は速い ! GAE の Clojure コード例
  5. 9 Kubernetes でやってみたいこと • DevOps – ローカルでクラスタ環境を構築して開発・テストを 行い、さくっとプロダクション環境に持っていきたい – Minikube→GKE

    • オンプレ、クラウド非依存 – オンプレ、クラウドベンダに依存しない可搬性の高 い基盤を構築したい • クラスタリング – Spark 、 NoSQL などビッグデータの環境を k8s で構 築する – Hyperledger の環境を k8s で構築する
  6. 10 Kubernetes とは • 公開コンテナを利用したインフラ環境の構築、運 用を容易にするためのソフトウェア – ソフトウェア組み合わせによる環境構築を容易にする – クラスタリング環境の構築を行い、手動・自動スケー

    リング機能を提供する – ローリングアップデートと呼ばれる稼働中のソフトウェア のアップデートを可能にする • Google が社内で開発して、実際に利用しているコ ンテナ管理システムである Borg をベースにして 2018 年 6 月に公開 • 船の操縦手 , 統括者・支配者というギリシャ語で あり、 k8s と略される
  7. 11 Kubernetes の構成要素 • Pod – Kubernetes にデプロイできるオブジェクトの最小単位 – pod

    には Docker などのコンテナが 1 つ以上含まれる – ポッドで複数のコンテナが実行される場合、コンテナは単一のエンティ ティとして管理され、ポッドのリソースを共有 (ボリューム、ネットワーキン グ ) • Deployment – Pod の配備と冗長化( レプリカ ) を行う – ReplicaSet の生成・管理を行う • Service – Pod へのアクセスを提供する – ExternalIP を提供することで外部へのサービスを公開する • Node – Docker などのコンテナのホストとなる物理的もしくは仮想的なマシン
  8. 12 マスターコンポーネント 構成要素 説明 kube-apiserver RESTベースのkubernetesの操作を行うフロ ントエンドAPIを提供 etcd クラスタデータを保持する分散型KVS kube-controller-

    manager 各種コントローラーを起動し、その状態を管 理するマネージャー cloud-controller- manager 各ベンダーのクラウド基盤とのやり取りを行 う kube-scheduler 可用性、パフォーマンス、および容量に大き な影響を与えるポリシーリッチ・トポロジを意 識したワークロード固有の機能を提供
  9. 13 ワーカーコンポーネント 構成要素 説明 kubelet クラスタのノード上で稼動するエージェン ト、podの中でコンテナが稼動していることを 保証する Kube-proxy KubernetesのServiceが持つ仮想的なIPア

    ドレス(cluster IP)へのアクセスをルーティング Container Runtime コンテナのためのソフトェアであり、現在 Docker, rkt, runcおよびOCIランタイム仕様 の実装が動く
  10. 14 アドオン 構成要素 説明 DNS KubernetesのためのDNSで多くのクラスタで はこのDNSを利用しており、クラスタ立ち上げ 時にDNSは起動する Web-ui (Dashboard)

    KubernetesのためのWebベースのダッシュボー ドであり、クラスタ自身とクラスタで稼動する アプリケーションの管理とトラブルシューティン グを行う Container Resource Monitoring 時系列のコンテナのリソースモニタリングのた めのメトリックスのデータベースおよびこれらの データを表示するためのUI Cluster-Level Logging クラスタレベルのロギングメカニズムおよび検 索・表示のためのインターフェイス
  11. 15 アーキテクチャ図 クラウド kubecnl kube- apiserver etcd kube- controller- manager

    cloud- controller- manager kubelet Container runtime kube-proxy ノード kubelet Container runtime kube-proxy ノード
  12. 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 時頃に分った 涙 ) – これではまずいので現在問題究明中
  13. 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( クラスタ環境 ) への切り替え
  14. 19 次回機会があれば • Kubernetes の続き – 実践的なより複雑なクラスタの構成の解説 – DevOps について

    • Cloujure/Clojurescript ベースの物体認識ア プリ – oogle-vision-api などを利用 – Clojure on app-engine などなど・・・・・ みんなで盛り上げましょう !