Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Apache KafkaとKubernetes / Kafka and K8s

A9d0b414035afe78da47980a90e62b68?s=47 suzukiry
December 26, 2020

Apache KafkaとKubernetes / Kafka and K8s

A9d0b414035afe78da47980a90e62b68?s=128

suzukiry

December 26, 2020
Tweet

Transcript

  1. Apache Kafka と Kubernetes Apache Kafka Meetup Japan #8 鈴木亮

    @ レッドハット
  2. 今日ご紹介したいこと 01. 02. Strimzi Operator で運用を効率化 Kafka 構築においてコンテナ基盤も選択肢の一つへ ※ 本資料は個人の見解のため所属する団体とは関係ありません。

  3. なぜ Apache Kafka on Kubernetes なのか? 自動回復・自動スケーリング 現在のシステム状態 (Current Status)が

    望ましい状態 (Desired Status)に一致するように 繰り返し動作できる。 分散システム スケーラブル リソースの抽象化 宣言的な記述だけでインフラリソースの 作成・管理ができる。 Kubernetes の価値を、Kafka に適応 Kubernetesの価値
  4. kubernetes Apache Kafka

  5. Strimzi とは • CNCFプロジェクト • Apache Kafka を Kubernetes 上で実行するために以下を提供;

    ◦ コンテナイメージ ◦ Strimzi Operators (カスタムリソース & カスタム Controller ) ▪ デプロイメント・クラスタ管理 ▪ 設定変更・管理、Topic、User作成、セキュリティ などなど apiVersion: apps/v1 kind: Kafka metadata: name: my-cluster spec: replicas: 3 selector: matchLabels:       : Kafka Broker x3 Zookeeper x3 カスタムリソース カスタム Controller リソース (K8s 組み込み) StatefulSets Pods Secrets ReplicaSets : Strimziが提供する カスタムリソース Kafka KafkaTopic KafkaUser KafkaConnect : Kafkaに特化したリ ソースを提供 運用の知見をコー ド化
  6. Strimzi OperatorによるKafka構築 コマンド2つで自動運用されるKafka Brokerクラスタ構築 $ kubectl apply -f install/cluster-operator $

    kubectl apply -f kafka-ephemeral.yaml Step 1. Strimzi Cluster Operatorの構築 Step 2. Kafka Broker クラスタの構築
  7. Strimzi OperatorによるKafka構築 CRD Operator用 リソース and Deployment Step 1. kubectl

    apply -f
  8. Strimzi OperatorによるKafka構築 CRD strimzi-cluster-operator Deployment Operator用 リソース and Strimzi Cluster

    Operator
  9. Strimzi OperatorによるKafka構築 CRD strimzi-cluster-operator Deployment Operator用 リソース Kafkaカスタム リソース and

    Strimzi Cluster Operator kubectl apply -f Step 2.
  10. Strimzi OperatorによるKafka構築 CRD strimzi-cluster-operator Deployment zookeeper StatefulSet (ZooKeeper) zookeeper zookeeper

    Operator用 リソース Kafkaカスタム リソース and Strimzi Cluster Operator
  11. Strimzi OperatorによるKafka構築 CRD kafka tls-sidecar StatefulSet (Kafka Broker) strimzi-cluster-operator Deployment

    kafka tls-sidecar kafka tls-sidecar zookeeper StatefulSet (ZooKeeper) zookeeper zookeeper topic-operator user-operator tls-sidecar Deployment Operator用 リソース Kafkaカスタム リソース and Entity Operator Strimzi Cluster Operator
  12. Strimzi OperatorによるKafka構築 CRD kafka tls-sidecar StatefulSet (Kafka Broker) strimzi-cluster-operator Deployment

    kafka tls-sidecar kafka tls-sidecar zookeeper StatefulSet (ZooKeeper) zookeeper zookeeper Operator用 リソース Kafkaカスタム リソース and Strimzi Cluster Operator kubectl apply -f 更新! topic-operator user-operator tls-sidecar Deployment Entity Operator
  13. Strimzi Operatorと運用 Kafkaの運用体制 = Strimzi Operator + 運用チーム(人) Strimzi Operatorによって運用負荷を下げることで

    開発・エンジニアリングにより専念できる環境を作ることができます。 ・Kafkaクラスタの自動構築・運用 ・Kafka コンポーネントの自動構築・運用 ・セキュリティ管理 ・アップグレード ・自律運用によるノードダウン復旧 ・TopicやUserの作成・管理   など ・クラスタ設計 ・ハードウェア障害の対応 ・自動化失敗時の対応 ・チューニング ・アップグレードなど運用計画        : Strimzi Operatorが できること 運用チーム(人) * strimzi.io Documentを参考
  14. 今日ご紹介したいこと = まとめ 01. 02. Strimzi Operator で運用を効率化 Kafka 構築においてコンテナ基盤も選択肢の一つへ

  15. ハンズオン参考資料 • Strimzi Kafka Operator セットアップ ◦ http://bit.ly/37SdV5D • Control

    Cruise ◦ http://bit.ly/3plR8Vn
  16. Q&A Q) Brokerのバージョンアップの際にrolling updateが必要になるケース等あると思いますが、そ ういうケースもサポートされているのでしょうか? A) はい、アップグレード時のRolling updateは可能です。 StrimziのRolling updateでは、リスタート対象のノードがControllerかであるか否かを確認してい

    ます。もしリスタート対象のノードに Controllerが存在する場合はスキップし、無駄な Controller Electionを避けるようなアルゴリズムがStrimzi Cluster Operatorには備わっています。 もし不明瞭な点がありましたら、 @suzukiry1までご連絡お願いできければと思います。
  17. Q&A Q) KafkaUserをブローカと別のNamespaceに作成は可能でしょうか? A) Cluster Operator経由※でUser Operatorが構築された場合は、KafkaUserリソースを異なる namespaceに作成した場合は処理されませんでした。理由としては、作成された User Operator

    内のKafkaUserリソースをwatchするnamespaceの設定がKafka Brokerのnamespaceと同じも のが設定されているためです。 ※User OperatorをCluster Operator経由ではなく、Standaloneとして構築する場合は、 STRIMZI_NAMESPACE に KafuaUserリソースをwatchしたい namespaceを指定することができるので、こちらの方法ですと実現できるかもしれません。ただし Kafka BrokerとUser Operatorのペアを作らない場合は構 成がやや複雑になったりもするので、(もちろん要件に応じてですが)個人的には運用の観点では namespaceは同じにしておいた方が良いかと考えていま す。 ・Deploying the standalone User Operator https://strimzi.io/docs/operators/0.18.0/using.html#deploying-the-user-operator-standalone-str “STRIMZI_NAMESPACE to the Kubernetes namespace in which you want the operator to watch for KafkaUser resources.” もし不明瞭な点がありましたら、 @suzukiry1までご連絡お願いできければと思います。