Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GKE@AbemaTV
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryosuke Suto
October 15, 2016
Technology
12
9.6k
GKE@AbemaTV
AbemaTV Developer Conference 2016
Ryosuke Suto
October 15, 2016
Tweet
Share
More Decks by Ryosuke Suto
See All by Ryosuke Suto
横断的なSRE推進と成熟度評価
strsk8
9
8.5k
GKEを利用したサービスの運用
strsk8
1
670
パブリック/プライベートクラウドでつかうKubernetes
strsk8
1
2.5k
re:Invent2015参加レポ
strsk8
0
340
成長し続けるインフラの安定運用事情
strsk8
19
5.2k
ソーシャルゲームDBの危機回避
strsk8
10
15k
Other Decks in Technology
See All in Technology
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.3k
OpenShiftでllm-dを動かそう!
jpishikawa
0
120
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.9k
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
170
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.5k
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2k
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
120
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
610
超初心者からでも大丈夫!オープンソース半導体の楽しみ方〜今こそ!オレオレチップをつくろう〜
keropiyo
0
110
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
590
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
170
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
2.3M
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
WCS-LA-2024
lcolladotor
0
450
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
220
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
450
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
120
Side Projects
sachag
455
43k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
440
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
67
How to Think Like a Performance Engineer
csswizardry
28
2.4k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
67
Transcript
GKE@AbemaTV Ryosuke Suto 2016/10/15 AbemaTV Developer Conference 2016
@strsk • 須藤涼介(Ryosuke SUTO) • (株)サイバーエージェント • 技術本部 • サービスリライアビリティグループ
Agenda • GKE is... • 選んだ理由 • 設計の話 • 運用、あれこれ
GKE is...
GKEとは • Google Container Engine • Kubernetesのフルマネージドサービス • 略すとGCEとかぶるため、KubernetesのK をとってGKE
Kubernetes くーばねいてぃす
Kubernetes(k8s)とは • Dockerのオーケストレーションツール • コンテナのグルーピングやネットワーク、 監視などをマニフェストファイル(YAML)で 管理する
Node1 Minion1 RC1 Pod1-1 Pod1-2 Pod2-1 Pod2-2 Service1 Service2 Kubernetesの構成
• Master:クラスタを管理 ◦ GKEでは表示されない • Minion:コンテナが起動するノード • Pod:コンテナのグループ • Replication Controller:起動するPod数や 環境変数を管理(Deployments) • Service:Pod郡のエンドポイント
GKE@AbemaTV
iOS GCP Load Balancing Cloud DNS Cloud Storage Compute Engine
Redis Compute Engine MongoDB Stackdriver Monitoring Pub/Sub BigQuery Stackdriver Logging 画像基盤 広告基盤 Client Backend Monitor CDN API/web Container Engine(GKE) Gateway Media Proxy コメント ユーザー 課金 web etc Logging Compute Engine transcoder 社内基盤 ログ基盤 スタジオ/ロケ地 Studio transcoder ここの話
アーキテクチャ • GKE • GCE • GCS • Stackdriver •
BigQuery • Cloud Pub/Sub • Redis, MongoDB • Varnish, Nginx
選んだ理由 ワ ケ
GKE(k8s)を選んだ理由 • GKEがGAに(2015年8月) • k8sのフルマネージドサービス • 活発な開発、アップデート • microservicesとの親和性
設計の話
SPEC • n1-highcpu-16 × 50node ◦ 16 vCPUs, 14.4 GB
memory • 33 Services • 216 Pods
SPEC • default requests & limits ◦ cpu: 4000m ◦
memory: 3Gi
RequestsとLimits • Requests ◦ Pod起動時に必要なリソース • Limits ◦ Podのリソース制限
RequestsとLimits • RequestsとLimitsに開きがあると高負荷 時にMinionのリソースが枯渇する • Podスケール時にスケジュールしていた Limitsを超える可能性がある
RequestsとLimits • kubectl describe node [node]でリソース 全体の何%まで割り当てられているか確 認できる
1(cluster)×N(services) • 追加機能でインフラの準備不要◯ • 運用コストの低減◯ • 各service同士はlocalhostで接続◯
1(cluster)×N(services) • リソース消費の見極めが複雑化△ • レプリカ数が少ないPodは、タイミングに よって同じノードに起動してしまうことが ある△
Docker Image • 基本はAlpine Linux ◦ Docker向きの超軽量OS • デプロイの頻度が少ない、提供されていないパッ ケージがある場合はUbuntu
リリースフロー
Container Registry Container Cluster docker push deploy docker push push
test Docker Hub
kubectl • リソースの作成 kubectl create -f xxx.yml • 設定内容の更新 kubectl
apply -f xxx.yml
kubectl • Rolling-Update kubectl rolling-update xxx -f xxx.yml • Podのスケールアウト
kubectl scale rc xxx --replicas=10
kubectl rolling-updateの課題 • v1.2.0以降、同じタグ指定で Rolling-Updateができない • 途中で失敗するとSelectorが中途半端 な状態で残ってしまう
kubetool
kubetool https://github.com/abema/kubetool • kubectlをラップした補助ツール • 一覧表示の改善 • カナリアリリース
kubetool • Podの一覧 kubetool pods • ReplicationControllerの一覧 kubetool rc
kubetool • Podの再作成 kubetool reload [rc] • RCのイメージ更新 kubetool update
[rc] [version]
kubetool • Podを1台だけ再作成 kubetool reload [rc] --1 • 残りのPodも最新にする kubetool
fix-version [rc]
監視
Stackdriver Monitoring/Logging • 標準で取れるのはリソース状況のみ • Podの標準出力はLoggingへ • 強力なフィルター機能 • ログベースメトリクスの作成が可能
kube-ui • 各コンポーネントの情報一覧 • Podの消費リソース • スケール • YAMLファイルの編集
運用、あれこれ
Terraformとの別離 • TerraformでInstance Templateを編集するとインスタ ンスが全台再作成される • 無停止でスケールアップ/ダウンする場合はテンプ レートを手動で付け替える必要がある • コード化…
ServiceのIPに接続できない • HTTP Load Balancerからは繋がる • LAN内のインスタンスやPodから接続で きない • v1.2.0でのバグ
Nodeアップグレード時に断発生 • 1台ずつアップグレードされるが、Podが 先に落ちないため数秒団が発生 • Node Pool機能で段階的にアップグレー ドする方法が良い
まとめ
GKEをつかってみた感想 • Docker導入の敷居が低くなる • デプロイ簡単 • リソース調整にはコツがいる • DevOpsが捗る
May the Docker be with you.