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.8k
KubernetesでKafkaクラスターを動かしてみた
Kafka Meet Up Japan #4 (#kafkajp)の発表資料です。
hhiroshell
March 15, 2018
Tweet
Share
More Decks by hhiroshell
See All by hhiroshell
Architecting Kubernetes-Based Internal Developer Platforms: Essential Patterns and Practices
hhiroshell
0
74
Discover Your Tailored Platform Strategy with Real-World Practice
hhiroshell
1
190
Kubernetesでアプリの安定稼働と高頻度のアップデートを両立するためのプラクティス / Best Practices for Applications on Kubernetesto Achieve Both Frequent Updates and Stability
hhiroshell
10
3.7k
Platform EngineeringにおけるKubernetesの活用法とLINEヤフーにおける事例のご紹介 / Platform Engineering and Kubernetes Findy Lunch LT Edition
hhiroshell
7
1.7k
大規模Webアプリケーションプラットフォームを開発して軌道に乗るまでにやったこと / How to Put Platforms on Track
hhiroshell
2
2.5k
Kubernetesとカスタムコントローラーを活用したプラットフォーム開発・運用の勘所 / Platform Engineering and Kubernetes
hhiroshell
1
1.2k
Best Practices for Applications on Kubernetesto Achieve Both Frequent Updates and Stability
hhiroshell
3
670
Cloud Native Developers JP (cndjp) のご紹介 / about cndjp
hhiroshell
0
180
KustomizeのHash Suffixがあってもいい感じにdiffが見られるkubectlプラグインを作った話 / about kubectl realname-diff
hhiroshell
0
1.8k
Other Decks in Technology
See All in Technology
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
0
110
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
530
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
Terraform Stacks入門 #HashiTalks
msato
0
350
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
170
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
170
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
200
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
360
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
150
Featured
See All Featured
Embracing the Ebb and Flow
colly
84
4.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Typedesign – Prime Four
hannesfritz
40
2.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Optimizing for Happiness
mojombo
376
70k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Statistics for Hackers
jakevdp
796
220k
How STYLIGHT went responsive
nonsquared
95
5.2k
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