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
Ryosuke Suto
October 15, 2016
Technology
12
9.5k
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.2k
GKEを利用したサービスの運用
strsk8
1
640
パブリック/プライベートクラウドでつかうKubernetes
strsk8
1
2.5k
re:Invent2015参加レポ
strsk8
0
310
成長し続けるインフラの安定運用事情
strsk8
19
5.2k
ソーシャルゲームDBの危機回避
strsk8
10
14k
Other Decks in Technology
See All in Technology
AIとともに歩んでいくデザイナーの役割の変化
lycorptech_jp
PRO
0
660
Kubernetes self-healing of your workload
hwchiu
0
290
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
43k
Claude Code Subagents 再入門 ~cc-sddの実装で学んだこと~
gotalab555
10
17k
[2025年10月版] Databricks Data + AI Boot Camp
databricksjapan
1
210
だいたい分かった気になる 『SREの知識地図』 / introduction-to-sre-knowledge-map-book
katsuhisa91
PRO
0
110
サイバーエージェント流クラウドコスト削減施策「みんなで金塊堀太郎」
kurochan
4
2.2k
初めてのDatabricks Apps開発
taka_aki
1
210
CNCFの視点で捉えるPlatform Engineering - 最新動向と展望 / Platform Engineering from the CNCF Perspective
hhiroshell
0
110
新規事業におけるGORM+SQLx併用アーキテクチャ
hacomono
PRO
0
440
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.8k
クラウドとリアルの融合により、製造業はどう変わるのか?〜クラスメソッドの製造業への取組と共に〜
hamadakoji
0
160
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
What's in a price? How to price your products and services
michaelherold
246
12k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
GraphQLとの向き合い方2022年版
quramy
49
14k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3k
Making Projects Easy
brettharned
120
6.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Designing for humans not robots
tammielis
254
26k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
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.