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
9.7k
12
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GKE@AbemaTV
AbemaTV Developer Conference 2016
Ryosuke Suto
October 15, 2016
More Decks by Ryosuke Suto
See All by Ryosuke Suto
横断的なSRE推進と成熟度評価
strsk8
9
8.7k
GKEを利用したサービスの運用
strsk8
1
700
パブリック/プライベートクラウドでつかうKubernetes
strsk8
1
2.5k
re:Invent2015参加レポ
strsk8
0
350
成長し続けるインフラの安定運用事情
strsk8
19
5.3k
ソーシャルゲームDBの危機回避
strsk8
10
15k
Other Decks in Technology
See All in Technology
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2k
RSA暗号を手計算したくなること、ありますよね?? (20260615_orestudy6_rsa)
thousanda
0
170
MCP Appsを作ってみよう
iwamot
PRO
4
480
攻撃者視点で考えるDetection Engineering
cryptopeg
0
710
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
4
4.3k
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
580
フロンティアAIのゲート化と地政学リスク
nagatsu
0
110
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
390
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
380
個人最適 から 全体最適 へ AI情報共有会・AIギルド・AI-DLC で進める カンリーの組織展開
rfdnxbro
0
2.2k
機械学習を「社会実装」するということ 2026年夏版 / Social Implementation of Machine Learning June 2026 Version
moepy_stats
4
1.2k
Chainlitで作るお手軽チャットUI
ynt0485
0
150
Featured
See All Featured
BBQ
matthewcrist
89
10k
How GitHub (no longer) Works
holman
316
150k
Leo the Paperboy
mayatellez
7
1.8k
Unsuck your backbone
ammeep
672
58k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
580
A Soul's Torment
seathinner
6
2.9k
For a Future-Friendly Web
brad_frost
183
10k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
610
Exploring anti-patterns in Rails
aemeredith
3
400
Measuring & Analyzing Core Web Vitals
bluesmoon
9
860
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
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.