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
4k
KubernetesでKafkaクラスターを動かしてみた
Kafka Meet Up Japan #4 (#kafkajp)の発表資料です。
hhiroshell
March 15, 2018
Tweet
Share
More Decks by hhiroshell
See All by hhiroshell
Cloud Native Scalability for Internal Developer Platforms
hhiroshell
5
680
LINEヤフーにおける超大規模プラットフォーム実現への挑戦と学び / Challenges and Lessons in Building an Ultra-Large-Scale Platform at LY Corporation
hhiroshell
3
1.7k
Architecting Kubernetes-Based Internal Developer Platforms: Essential Patterns and Practices
hhiroshell
0
240
Discover Your Tailored Platform Strategy with Real-World Practice
hhiroshell
1
270
Kubernetesでアプリの安定稼働と高頻度のアップデートを両立するためのプラクティス / Best Practices for Applications on Kubernetesto Achieve Both Frequent Updates and Stability
hhiroshell
11
4.2k
Platform EngineeringにおけるKubernetesの活用法とLINEヤフーにおける事例のご紹介 / Platform Engineering and Kubernetes Findy Lunch LT Edition
hhiroshell
7
2.4k
大規模Webアプリケーションプラットフォームを開発して軌道に乗るまでにやったこと / How to Put Platforms on Track
hhiroshell
2
2.6k
Kubernetesとカスタムコントローラーを活用したプラットフォーム開発・運用の勘所 / Platform Engineering and Kubernetes
hhiroshell
1
1.6k
Best Practices for Applications on Kubernetesto Achieve Both Frequent Updates and Stability
hhiroshell
3
760
Other Decks in Technology
See All in Technology
実践!カスタムインストラクション&スラッシュコマンド
puku0x
0
490
データ分析エージェント Socrates の育て方
na0
5
1.3k
TS-S205_昨年対比2倍以上の機能追加を実現するデータ基盤プロジェクトでのAI活用について
kaz3284
1
210
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
10
75k
テストを軸にした生き残り術
kworkdev
PRO
0
210
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
20
10k
機械学習を扱うプラットフォーム開発と運用事例
lycorptech_jp
PRO
0
580
いま注目のAIエージェントを作ってみよう
supermarimobros
0
340
Rustから学ぶ 非同期処理の仕組み
skanehira
1
150
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
370
S3アクセス制御の設計ポイント
tommy0124
3
200
なぜテストマネージャの視点が 必要なのか? 〜 一歩先へ進むために 〜
moritamasami
0
230
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Side Projects
sachag
455
43k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.1k
Producing Creativity
orderedlist
PRO
347
40k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
GraphQLとの向き合い方2022年版
quramy
49
14k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Code Reviewing Like a Champion
maltzj
525
40k
What's in a price? How to price your products and services
michaelherold
246
12k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
A Tale of Four Properties
chriscoyier
160
23k
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