gcp ja night 31 参加メモ¶
2016/01/21
gcp ja night #31 (connpass) に参加したので参加メモ
当日は Google 様会場ご提供ありがとうございました。
また、スタッフの皆様お疲れ様でした。
以下タイトルは connpass より取得したものだったりするので不正確です。
個人的まとめ¶
K8s の RC と Service は独立した構成要素。 RC は Pod の死活監視、 Service は L4 LB 的な動きをする。
GKE は 5 node まで無料で使える ので、安く動かせることが多い。
BigQuery の操作には Cloud Datalab (Jupytter Notebook 派生) が便利。 python で BigQuery を動かしたり pandas などを動かすことができる。
19:15 GKE Introduction @ gcp ja night #31 by @IanMLewis¶
今日の話は 2015 Borg -> GoogleがBorgの詳細を公開 - InfoQ
コンテナー は chroot ulimit とかで実現されている
コンテナ 軽量ポータブル 効率性
Borg は Google社内で利用しているコンテナエンジン
Borg は DCaaS (Datacenter as a Service)
Borg は DC の OS
Borg の設定ファイル は DSL だな 「some = { some = { some = some } }」 みたいな
(感想) Borg で Kubernetes (K8s) を管理するんだなこれは
scheduler から BorgMaster に設定が渡され、コンテナにいろいろ展開される
コンテナ管理の課題 とは 複数サーバーのデプロイ、ノード障害時のリカバリー、コンテナ障害時のリカバリー、コンテナのアップグレード
K8s は Borg の対外的な実装、K8s の実装者は Borg の実装者と同じ
CNCF (Cloud Native Compiuting Foundatoin) で K8s の開発を支援
Container Engine は K8s のhosted版
(疑問) 実際 Docker を直接動かしてるの? Docker 互換の何か?
ポッド とは 複数のコンテナを同じホストで動かしたもの
多数のポッドを識別する には 各々のポッドに種別のラベルを設定して識別
(感想) ラベルはタグ的な
レプリケーションコントローラー は ポッドの実行状態を管理
管理対象はポッド
サービス とは エンドポイントを抽象化したもの
仮想IPが割り振られる
ポッド間 は ラウンドロビン的に Load Balancing する
yaml ファイルに
type: LoadBalancer
とかかくと LoadBalancing してくれて便利(感想) K8s は GUI でコンテナーの状態を表示する機能がありそうで、便利そう
Google Cloud Platform を使ってみよう ってイベントある
GCP NEXT 2016 (参加費 499ドル) ってイベントある
20:00 GKEで半年運用してみた by @na_ga¶
takusuta では AWS/GKE 利用している
takusuta
Web版は GKE で作成
モバイルは AWS Web は GKE
GA 前だけど GKE 利用したかったため、利用した
GKE ざっくり説明
K8s のフルマネージドサービス
すごい安い
5Node まで無料なので、安い
Pod と RC (Replication Controller) をしっていれば何とか使える
Service は Pod に対する L4 の LB な見たいな奴
kube-proxy が動いていて便利
GKE 構成した場合
Service に SSL 証明書置けない
GCE の LB をおいて, GKE を NodePort として起動して使った
Cross Region LB 構成ができて、 CPU/リクエストの閾値を指定して、変更できる
ただ、 Zone によって性能に差があるので、気をつける
GKE の構成
Google Cloud SDK を利用すればワンストップで利用できる
gcloud コマンドで動かせる
コンテナ作成時しか指定できない設定もあるので、注意。作り直しになる
gci.io ってコンテナのアップロード先が地域毎に存在する、日本は asia.gcr.io を利用すると早い
kubectl でコンテナにアタッチできる
GKE 活用例
5 ノード以下は無料なので、大きなクラスターは作らない
ennis-asia-app-001 がポッドの命名規則
ennis はプロジェクト名、 asia はリージョン、app コンテナの種別、001 はユニークキー
インスタンステンプレートを更新する API がないので、不便
gcr へのアップロードは、遅い
アップロードは Jenkins でビルド後にアップロード、 hubot でリリース指示
今のところ gcr は落ちたことなさそう
gcr のイメージの名前は、ハッシュなので、消し辛い。そのうち改善するでしょう
kubectl rolling-update ってコマンドがあって、一台ずつ inc/dec してくれる
multi-container-pod の場合は同じ名前ではアップデート失敗するので、駄目
クラスタの方は gcloud コマンドで制御
RC の数は kubectl で replica を制御
Cloud Logging によるログ管理もでき、 Pod ごとにクラスタごとに検索できる
標準の状態では標準出力もみるので、ノイズが多い。ログ名とかレベル名とかでフィルターできるようにしよう
Monitoring は StackDricer ベータなので、 Monitoring できる
Kubernetes dashboard は表示が不正確で、使い辛い
Kubedash 結構使えるので、便利
まとめ
簡単、安い、将来へ期待
本番でとりあえず使えるのでは
20:50 GCPで新規サービスを開発した話 by @Morikuma_Works¶
内容が被った
構成や使う動機が同じ
どんなプロジェクトだったか
現実世界の混雑度合を IoT を利用して検知を行う系
必要な物
センサデバイス
20億レコード/月 を保存する DB
デバイスの管理、解析をするバックエンド
画面を実際に提供するフロントエンド
1.5ヶ月で作成する
3人で作った
フロントエンドの人がいて、すごいできた人だった
プロトタイプ的なものなので、人が少なかった
下の二つ話す
デバイスの管理、解析をするバックエンド
画面を実際に提供するフロントエンド
設計
マイクロサービスアーキテクチャー
何が問題だったか
資源の無駄遣い
人が少なく、Ansible を利用していたが、無理がでた
リリースなどの Ops の作業が難しかった
どう解決したか
フロントエンド/バックエンド
GKE は GCP の他のサービスと連携できる点が良かった
GKE は CI が行いやすい
GHE -(CI)-> circleci -(upload)-> gcr -(ローリングアップデート)-> GKE
デプロイとロールバックが容易だった
Dockerfile/Docker Image ですべてコンテナ管理できて便利
モジュールなどを細かく記述できるので、マイクロサービスと親和性があった
GKE L7LB (Load Balancer) を使った
100万リクエスト/s をウォームアップなしでさばける
SSL
http2
url-map
HTTP LB はまだ Beta
セットアップの記載は複雑
Google Cloud Monitoring を利用
20億レコード/月 を保存する DB
Streaming Insert でほぼリアルタイプでセンサデータをインサートできる
BQ はリアルタイム性が必要ない分析には速度十分、ちょっとまっても良い処理
保存、分析料金が安い
GCE で静的なIP取得してほっておくとお金かかる、、、
BigQuery へは fluentd でデータを入れている
GCPを使ってみてどうだったか
k8s はマイクロサービスアーキテクチャに最適
k8s + GKE は時短になる
BQ ででかいデータの分析ができる
-> IoT サービスと GCP は親和性が高いのでは
21:20 広告配信システムにおけるGCEでのAutoscalerとCloudLoggingの活用 by @_zoo¶
GCE の Autoscaler と CloudLogging
配信の一部で HTTP(S) LB と GCE を利用
fluct に所属、純国産 SSP(SuplySidePlatform)
広告素材の CDN
インプレッション計測サーバー、計画値ゅ
利用したもの
GCE
HTTP(SP) LB
Autoscaler
Cloud Monitoring
Cloud Logging
BigQuery
official に発表されたものが中心
ハマったところや、利用したものを書いた
LB は組み合わせて利用するもの、 AWS とは異なる感じ
GCE の Autoscaler
CPU utilization
Cloud Monitoring Metrics
HTTP LB serving cap
インスタンスごとの RPS(RequestPerSec) を見る
管理方法
gcloud をラップしたコマンドを利用
さらに
Makefile
書いて、make
コマンドで動くようにしている
Cloud Monitoring
Agent方式
Disk Usage, Memory Usage が見られる
Network, Load Average
Cloud Logging
広告といえばログ、ログといえば解析、解析といえば BigQuery
Cloud Logging は google 提供の td-agent
入れると設定サンプルとかごっそり入れる
tag 単位で export できる
BigQuery, Google Cloud Storage に export できる
21:40 Cloud DatalabとBigQueryを使ったアドホックデータ解析 by @hagino3000¶
Zucks
多椀バンデットアルゴリズム
バナー広告
機械学習やら最適化やっている
担当
CTRの予測
CVRの予測
最適な入札価格
インプレッションの予測
異常枠の検知
アドホックな解析に Cloud Datalab を利用し始めた
S3 -(トリガー)-> ColudStorage -(1時間に一回)-> BigQuery って感じに流す
Hadoopクラスタ無い
AdHok なデータ利用する環境
複数の環境から BigQuery 流すと動かないことがある
300GB/day 取り込めれば良い
マネージドサービスなので、楽
73TBで2000ドル/月
DataLoad
既存のシステムに影響したくないので、 Streaming Insert は利用しない
Streaming Insert お金かかるので リアルタイムに見るデータでは無いので別にいい
今なら Embulk, Cloud Dataflow を利用するかも
Job管理
Luigi を利用している
タスク間の依存性定義
入出力管理の抽象化
リトライエラー管理
モニタリング用UIある
処理は Python で書ける
チームへの共有
Google App Script は Cron的に使えるので便利
GAS で Google Spreadsheet に書き出している
re:dash http://redash.io
Kibana っぽい画面を使える
EC2 / GCE のイメージがある
ちゃんと使うなら、 TLS + Google Account 認証にする
-
Jupyter Notebook ベース
AppEngine + ManagedVM で動作
Jupyter Notebook 課題
実験ノートをもっと気軽に
アクセス制限をかけたい
管理したくない
Cloud Datalab はコンテナなので、もろもろ解決
Cloud Datalab は BigQuery にもアクセスでき、便利