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

Apache KafkaとKubernetes / Kafka and K8s

suzukiry
December 26, 2020

Apache KafkaとKubernetes / Kafka and K8s

suzukiry

December 26, 2020
Tweet

More Decks by suzukiry

Other Decks in Technology

Transcript

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

    望ましい状態 (Desired Status)に一致するように 繰り返し動作できる。 分散システム スケーラブル リソースの抽象化 宣言的な記述だけでインフラリソースの 作成・管理ができる。 Kubernetes の価値を、Kafka に適応 Kubernetesの価値
  2. 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に特化したリ ソースを提供 運用の知見をコー ド化
  3. 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 クラスタの構築
  4. Strimzi OperatorによるKafka構築 CRD strimzi-cluster-operator Deployment zookeeper StatefulSet (ZooKeeper) zookeeper zookeeper

    Operator用 リソース Kafkaカスタム リソース and Strimzi Cluster Operator
  5. 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
  6. 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
  7. Strimzi Operatorと運用 Kafkaの運用体制 = Strimzi Operator + 運用チーム(人) Strimzi Operatorによって運用負荷を下げることで

    開発・エンジニアリングにより専念できる環境を作ることができます。 ・Kafkaクラスタの自動構築・運用 ・Kafka コンポーネントの自動構築・運用 ・セキュリティ管理 ・アップグレード ・自律運用によるノードダウン復旧 ・TopicやUserの作成・管理   など ・クラスタ設計 ・ハードウェア障害の対応 ・自動化失敗時の対応 ・チューニング ・アップグレードなど運用計画        : Strimzi Operatorが できること 運用チーム(人) * strimzi.io Documentを参考
  8. Q&A Q) Brokerのバージョンアップの際にrolling updateが必要になるケース等あると思いますが、そ ういうケースもサポートされているのでしょうか? A) はい、アップグレード時のRolling updateは可能です。 StrimziのRolling updateでは、リスタート対象のノードがControllerかであるか否かを確認してい

    ます。もしリスタート対象のノードに Controllerが存在する場合はスキップし、無駄な Controller Electionを避けるようなアルゴリズムがStrimzi Cluster Operatorには備わっています。 もし不明瞭な点がありましたら、 @suzukiry25までご連絡お願いできければと思います。
  9. 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.” もし不明瞭な点がありましたら、 @suzukiry25までご連絡お願いできければと思います。