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
KubernetesでKafkaクラスターを動かしてみた
Search
hhiroshell
March 15, 2018
Technology
2
3.6k
KubernetesでKafkaクラスターを動かしてみた
Kafka Meet Up Japan #4 (#kafkajp)の発表資料です。
hhiroshell
March 15, 2018
Tweet
Share
More Decks by hhiroshell
See All by hhiroshell
Platform EngineeringにおけるKubernetesの活用法とLINEヤフーにおける事例のご紹介 / Platform Engineering and Kubernetes Findy Lunch LT Edition
hhiroshell
6
1.1k
大規模Webアプリケーションプラットフォームを開発して軌道に乗るまでにやったこと / How to Put Platforms on Track
hhiroshell
1
2.1k
Kubernetesとカスタムコントローラーを活用したプラットフォーム開発・運用の勘所 / Platform Engineering and Kubernetes
hhiroshell
1
730
Best Practices for Applications on Kubernetesto Achieve Both Frequent Updates and Stability
hhiroshell
3
500
Cloud Native Developers JP (cndjp) のご紹介 / about cndjp
hhiroshell
0
130
KustomizeのHash Suffixがあってもいい感じにdiffが見られるkubectlプラグインを作った話 / about kubectl realname-diff
hhiroshell
0
1.4k
JavaアプリをKubernetesで動かすためのチューニングガイド / A tuning guide for running java apps on Kubernetes
hhiroshell
2
3.5k
20,000+行のmanifestをリファクタリングして分かったKustomizeの美しきアーキテクチャと拡張性 / Kustomize deep dive
hhiroshell
5
4.8k
Envtest Binaries Managerを使ってみた話 / About Envtest Binaries Manager
hhiroshell
0
1k
Other Decks in Technology
See All in Technology
LLM + RAG を使った SORACOM Support Bot の裏側の歴史
soracom
PRO
1
630
データ化エンジニアとしての1年を振り返る
sansantech
PRO
3
250
Elementaryを用いたデータ品質の可視化とデータ基盤の運用改善
10xinc
6
1.3k
MongoDB Atlas Vectorsearchではじめる生成AIアプリ開発
chie8842
3
500
SREsのためのSRE定着ガイド
netmarkjp
10
1.4k
Oracle Database で機械学習を始めよう! Oracle Machine Learning
oracle4engineer
PRO
1
130
私のRSpecの書き方 / How I write RSpec
tmtms
4
810
どう買う?Azure
kuniteru
1
190
匠MethodとRDRAとICONIXとDDDで実現する一気通貫オブジェクト指向開発
haru860
4
1.4k
生成AIサービスPanorama AIご説明資料
sdt
0
300
チーム単位で保守性を高める:独自指標と向上にむけた実践
tarappo
0
290
やっていきテスト
k6s4i53rx
0
160
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
8
8.2k
The Power of CSS Pseudo Elements
geoffreycrofte
58
4.9k
Automating Front-end Workflow
addyosmani
1353
200k
No one is an island. Learnings from fostering a developers community.
thoeni
14
2k
Statistics for Hackers
jakevdp
789
220k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
5
1.4k
Adopting Sorbet at Scale
ufuk
66
8.5k
It's Worth the Effort
3n
180
27k
How GitHub (no longer) Works
holman
301
140k
Pencils Down: Stop Designing & Start Developing
hursman
115
11k
Transcript
Cloud Native Developers JP Kubernetesで Kafkaクラスターを動かしてみた @hhiroshell 1
Cloud Native Developers JP • 早川 博(はやかわ ひろし) • 日本オラクル所属
– Java SE/EE, Microservices, DevOps • Ergodoxユーザー 2 自己紹介 @hhiroshell
Cloud Native Developers JP 発端 • KubernetesとKafkaを組み合わせたら、こんなことができるんじゃ ないかと思った – コマンドひとつでスケールアウト(brokerを追加)
– brokerが落ちたときに、オペレーションなしで自律回復 • やってみよう! 3
Cloud Native Developers JP と、その前に…。 Kubernetesとはなにか1分で解説します。 4
Cloud Native Developers JP Kubernetesが実現すること 5 大きなリソースのプール
Cloud Native Developers JP Kubernetesが実現すること 動け! 6
Cloud Native Developers JP Kubernetesが実現すること コンテナ化されたアプリ はい! 7
Cloud Native Developers JP Kubernetesが実現すること コンテナ化されたアプリ はい! 8
Cloud Native Developers JP Kubernetesが実現すること 利用者からのリクエスト わー! 9
Cloud Native Developers JP Kubernetesが実現すること がんばれ! 10
Cloud Native Developers JP Kubernetesが実現すること 11 はい! 自動で複数のマシンに分散配置 (HWを意識しない)
Cloud Native Developers JP Kubernetesが実現すること わー! コンテナが落ちたら自動で新たに立ち上げる 12
Cloud Native Developers JP 発端(再掲) • KubernetesとKafkaを組み合わせたら、こんなことができる気がし てきた。 – コマンドひとつでスケールアウト(brokerを追加)
– brokerが落ちたときに、オペレーションなしで自律回復 13
Cloud Native Developers JP KubernetesでKafkaを動かすまで 14
Cloud Native Developers JP どうやってKafkaを動かすか • Kubernetesにデプロイするモノの定義は、manifestファイル (json/yaml)に記述することができる • Kubernetesの管理用CLI(kubectl)を、manifestを噛ませて実行する
と、所望のオブジェクト群がKubernetesに配備される → Kafka用のmanifestファイルを用意してkubectl実行! 15
Cloud Native Developers JP manifestファイルの準備 • 先人の知恵を借りました m(_ _)m –
https://github.com/Yolean/kubernetes-kafka – 手元のKubernetesのバージョン(1.7.x)に合わせて、Release v2.1.0を利用 – 環境に合わせて一部手直し • (参考)Helmを使って配備するものもあります – https://github.com/kubernetes/charts/tree/master/incubator/kafka 16 Helmは複数のmanifestをパッケージとして管理するためのツール。 多数のKubernetesオブジェクトのセットをデプロイするのに便利です。 i
Cloud Native Developers JP Kubernetesでbroker群が立ち上がる仕組み • zookeeperが配備済みの状態から説明します 17 zookeeper Kubernetesクラスター
ストレージ (e.g. AWS EBS)
Cloud Native Developers JP Kubernetesでbroker群が立ち上がる仕組み • server.propertiesのテンプレートとそれを編集するスクリプトを ConfigMapオブジェクトに含めて配備する 18 zookeeper
broker-config init.sh server.properties Kubernetesクラスター ストレージ (e.g. AWS EBS) ConfigMap server.propertiesのテンプレート server.propertiesを編集するスクリプト
Cloud Native Developers JP Kubernetesでbroker群が立ち上がる仕組み • brokerを動かすためのPodの配備を開始 • VolumeにConfigMap内のファイルがコピーされる 19
zookeeper broker-config init.sh server.properties init.sh server.properties Kubernetesクラスター ストレージ (e.g. AWS EBS) kafka-0 Pod ファイルをコピー Volume
Cloud Native Developers JP Kubernetesでbroker群が立ち上がる仕組み • initContanerが立ち上がり、前ページのVolumeをマウント • init.shを実行して、環境に合わせてserver.propertiesを書き換え 20
zookeeper broker-config init.sh server.properties init.sh server.properties Kubernetesクラスター ストレージ (e.g. AWS EBS) kafka-0 init-cofnig マウント init.shを実行して server.propertiesを書き換え initContainer
Cloud Native Developers JP Kubernetesでbroker群が立ち上がる仕組み • brokerを可動させるコンテナを起動 • brokerのデータを保持するためのVolumeオブジェクトをマウント 21
zookeeper kafka-0 broker-config init.sh server.properties broker init.sh server.properties Kubernetesクラスター ストレージ (e.g. AWS EBS) Container マウント
Cloud Native Developers JP Kubernetesでbroker群が立ち上がる仕組み • PersistentVolumeClaim(PVC)に記述されたストレージの要件(容量、 サービスレベルなど)に従い、StorageClassがプロビジョニング 22 zookeeper
kafka-0 broker-config init.sh server.properties broker init.sh server.properties Kubernetesクラスター ストレージ (e.g. AWS EBS) PersistentVolumeClaim(PVC) StorageClass PVCに記述された要件に従い、 StorageClassがストレージを プロビジョニング
Cloud Native Developers JP Kubernetesでbroker群が立ち上がる仕組み • brokerのプロセスを起動する 23 zookeeper kafka-0
broker-config init.sh server.properties broker init.sh server.properties Kubernetesクラスター ストレージ (e.g. AWS EBS) brokerのプロセスを起動
Cloud Native Developers JP Kubernetesでbroker群が立ち上がる仕組み • brokerが起動した状態 24 zookeeper kafka-0
broker-config init.sh server.properties broker init.sh server.properties Kubernetesクラスター ストレージ (e.g. AWS EBS)
Cloud Native Developers JP Kubernetesでbroker群が立ち上がる仕組み • 設定されたレプリカ数に達するまで繰り返し 25 zookeeper kafka-0
broker-config init.sh server.properties broker container init.sh server.properties Kubernetesクラスター ストレージ (e.g. AWS EBS) kafka-1 init.sh server.properties kafka-1 繰り返し…
Cloud Native Developers JP チュートリアルも公開中 • 具体的な操作手順やmanifestの中身については、チュートリアルを 参照ください – https://github.com/oracle-japan/cndjp3/blob/master/handson1.md
26
Cloud Native Developers JP Demo 27
Cloud Native Developers JP Demoでやること • Kubernetesにbrokerを配備 • スケールアウト •
brokerの障害からの自律的な回復 28
Cloud Native Developers JP まとめ • KubernetesでKafkaがちゃんと動いた • スケールアウトは道半ば –
broker追加まではいいが、そのあとパーティションをリバランスするところ でもうひと工夫必要 • brokerに障害があっても自律回復できることがわかった • manifestがありさえすればどこのKubernetes環境にもデプロイOK 29
Cloud Native Developers JP お知らせ Cloud NativeなOSSの勉強会シリーズ 「Cloud Native Developers
JP」 30 https://cnd.connpass.com/event/
Cloud Native Developers JP Fin. 31