Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ThirdPartyResource を使った Kubernetes as a Service...
Search
Shunya Murata
January 19, 2017
Programming
3.4k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ThirdPartyResource を使った Kubernetes as a Service の実装
Kubernetes Meetup Tokyo #3で発表した ThirdPartyResource を使った Kubernetes as a Service の実装 の資料です。
Shunya Murata
January 19, 2017
More Decks by Shunya Murata
See All by Shunya Murata
Kubernetes v1.19 Updates
shmurata
3
1.4k
プロダクションレディを目指した Kubernetes クラスタのアップグレード戦略/Strategy to upgrade Kubernetes clusters in Production
shmurata
9
4.5k
KubeConEU 2019 recap - VPA in-place update
shmurata
3
2.6k
Kubernetes上でアプリケーションを 運用するまでの道のり/The way to run applications with Kubernetes
shmurata
15
3k
Kubernetes Operator で実現する NoOps の世界 / How we accomplish NoOps by Kubernetes Operator.
shmurata
20
4.3k
180715-line-meetup.pdf
shmurata
3
1.1k
Other Decks in Programming
See All in Programming
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
690
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
950
気持ちぃ〜角丸 Squircle
ryu1013
0
190
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
160
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
160
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
370
パーソナライズPodcastを作った話
repunit11
0
130
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
150
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
22
22k
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
140
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5k
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
350
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
6.3k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Building AI with AI
inesmontani
PRO
1
1.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.2k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
310
Making Projects Easy
brettharned
120
6.8k
It's Worth the Effort
3n
188
29k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
480
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
The Language of Interfaces
destraynor
162
27k
Transcript
ThirdPartyResource を使った Kubernetes as a Service の実装 Z Lab Corporation
村⽥ 俊哉 稲津 和磨 1
Z Lab Corporation • 次世代インフラ基盤を調査・研究開発 • Kubernetes, Docker • Yahoo!
JAPAN の⼦会社 • https://zlab.co.jp 2
Kubernetes as a Service • 開発者がセルフサービスでクラスタを作成できるサービス • 作成したクラスタはフルマネージド • ⾃動アップデート
• ダウンタイムゼロ • ローリングアップデート • セルフヒーリング • ノード障害時に別のノードを作成して復旧 • ノードのオートスケール 3
Kubernetes as a Service 要件 • スケール性能 • 数万台規模まで利⽤できるようにしたい •
⾮同期 • サーバの構築などは時間がかかるため⾮同期にせざる負えない • 堅牢性 • フェイルオーバー • 処理を中断しても再開できること 4
実装⽅式検討 • 実装が複雑になりそうな分散システムが必要 • ノードの状態などを監視しながら、ノードの状態の変更に対応して 処理をする必要がある • 各リソースの状態を監視し、そのイベントに対応して処理を⾏うアー キテクチャが良さそう 5
None
Kubernetes のアーキテクチャ 7 Spec と Status の 差分の検知 差分の反映 差分の検知
Queue Status の同期 Resource 4QFD 4UBUVT API Server Controller Manager Other Resource Spec :あるべき状態 Status : 現在の状態
Kubernetes をフレームワークのように利⽤ • ThirdPartyResource • Informer Framework • RateLimitingQueue 8
Kubernetes をフレームワークのように利⽤ 9 Spec と Status の 差分の検知 差分の反映 差分の検知
RateLimitingQueue Status の同期 ThirdParty Resource Spec Status API Server Controller Other Resource InformerFramework アプリケーションの 実装に専念できる SyncLoop
apiVersion: extensions/v1beta1 kind: ThirdPartyResource metadata: name: hello-world.example.com description: "hello world
object" versions: - name: v1 • Kubernetes API にユーザ独⾃のリソースの API を追加するリソー ス • Kubernetes のリソースの⼀つ • 追加される API は CRUD の操作と watch をサポート ThirdPartyResource 10 API Server Pod Service Deployments HelloWorld
Informer Framework 11 Resource Spec Status API Server Informer Framework
watch diff cache OnAdd OnUpdate OnDelete • Kubernetes の Controller (ControllerManager) で利⽤されている • Watch API を利⽤して変更を検知してイベントハンドラを実⾏する • OnAdd, OnUpdate, OnDelete • Watch と対応した Cache をもっていて無駄な API へのアクセスを削減
RateLimitingQueue • RateLimiter を持つ Queue • 同じ key のオブジェクトのユニーク性を保証 •
エラーの場合 Delay を持たせて enqueue (retry) などが簡単にで きる 12 Informer Framework cache OnAdd OnUpdate OnDelete Sync loop エラーなら Delay して retry RateLimitingQueue
SyncLoop • Spec と Status の差分を確認し、Status を Spec へ近づけていく 処理を⾏う
Loop • アプリケーション⾃体の処理を実装する部分 13 • 実装時の注意した点 • いつ中断しても再開できるように • レースコンディションが発⽣しないように Spec と Status の 差分の検知 Status の同期 差分の反映
Controller の動作環境 • 開発した Controller は Kubernetes の Pod としてデプロイ
• Kubernetes API の 認証に ServiceAccount を利⽤できる • 標準の Client と同じものを⽤意すれば特に設定せずにデフォルト のアカウントを勝⼿に使⽤してくれる 14 Kubernetes Cluster API Server TPR TPR Controller Pod ServiceAccount
Kubernetes as a Service の ThirdPartyResource と Controller • ThirdPartyResources
• Kuberneteses • KubernetesClusters • Etcds • LoadBlancers • Machines • MachineSets • MachineDeployments • MachineImages • MachinePools 15 • Controllers • KubernetesController • KubernetesClusterController • EtcdController • LoadBlancerController • MachineController • MachineSetController • MachineDeploymentController • MachineImageController
DEMO
CaaS Kubernetes Cluster Kubernetes as a Service(CaaS) • Kubernetesクラスタを⽣成・管理するシステム 17
Create Read Update Delete API Server TPRs User Kubernetes Cluster Master Worker User Kubernetes Cluster Master Worker TPR Controllers Pods
ThirdPartyResource • KubernetesClusters • クラスタそのものを表す。Kubernetes リソースを管理する • Kubernetes • Master,Worker
の初期化スクリプトを⽣成し MachineDeployments を 管理する • MachineDeployments • MachineSets を管理しローリングアップデートを⾏う • MachineSets • Machines を指定数に保つように管理する • Machines • IaaS のマシンを管理する 18
デモ内容 • Kubernetes クラスタの作成 • Kubernetes のバージョンアップ • ローリングアップデート •
Worker Node のスケールアウト 19
まとめ • ThirdPartyResource を利⽤したアプリケーションの実装例として Kubernetes as a Service の紹介しました •
Kubernetes Like なアプリケーションが ThirdPartyResource, InformerFramework, RateLimitingQueue などを利⽤することで 簡単に実装できます 20
技術で新しい世界へシフトする。 WE ARE HIRING!
参考⽂献 • ThirdPartyResource • https://kubernetes.io/docs/user-guide/thirdpartyresources/ • Informer Framework • https://github.com/kubernetes/kubernetes/blob/v1.5.2/
pkg/client/cache/controller.go • RateLimitingQueue • https://github.com/kubernetes/kubernetes/blob/v1.5.2/ pkg/util/workqueue/rate_limitting_queue.go 22