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 と Kubernetes
    Apache Kafka Meetup Japan #8
    鈴木亮 @ レッドハット

    View Slide

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

    View Slide

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

    View Slide

  4. kubernetes
    Apache Kafka

    View Slide

  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に特化したリ
    ソースを提供
    運用の知見をコー
    ド化

    View Slide

  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 クラスタの構築

    View Slide

  7. Strimzi OperatorによるKafka構築
    CRD Operator用
    リソース
    and Deployment
    Step 1.
    kubectl apply -f

    View Slide

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

    View Slide

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

    View Slide

  10. Strimzi OperatorによるKafka構築
    CRD
    strimzi-cluster-operator
    Deployment
    zookeeper
    StatefulSet (ZooKeeper)
    zookeeper
    zookeeper
    Operator用
    リソース
    Kafkaカスタム
    リソース
    and
    Strimzi Cluster
    Operator

    View Slide

  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

    View Slide

  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

    View Slide

  13. Strimzi Operatorと運用
    Kafkaの運用体制 = Strimzi Operator + 運用チーム(人)
    Strimzi Operatorによって運用負荷を下げることで
    開発・エンジニアリングにより専念できる環境を作ることができます。
    ・Kafkaクラスタの自動構築・運用
    ・Kafka コンポーネントの自動構築・運用
    ・セキュリティ管理
    ・アップグレード
    ・自律運用によるノードダウン復旧
    ・TopicやUserの作成・管理   など
    ・クラスタ設計
    ・ハードウェア障害の対応
    ・自動化失敗時の対応
    ・チューニング
    ・アップグレードなど運用計画
           :
    Strimzi Operatorが
    できること 運用チーム(人)
    * strimzi.io Documentを参考

    View Slide

  14. 今日ご紹介したいこと = まとめ
    01.
    02. Strimzi Operator で運用を効率化
    Kafka 構築においてコンテナ基盤も選択肢の一つへ

    View Slide

  15. ハンズオン参考資料
    ● Strimzi Kafka Operator セットアップ
    ○ http://bit.ly/37SdV5D
    ● Control Cruise
    ○ http://bit.ly/3plR8Vn

    View Slide

  16. Q&A
    Q) Brokerのバージョンアップの際にrolling updateが必要になるケース等あると思いますが、そ
    ういうケースもサポートされているのでしょうか?
    A) はい、アップグレード時のRolling updateは可能です。
    StrimziのRolling updateでは、リスタート対象のノードがControllerかであるか否かを確認してい
    ます。もしリスタート対象のノードに
    Controllerが存在する場合はスキップし、無駄な
    Controller
    Electionを避けるようなアルゴリズムがStrimzi Cluster Operatorには備わっています。
    もし不明瞭な点がありましたら、
    @suzukiry25までご連絡お願いできければと思います。

    View Slide

  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.”
    もし不明瞭な点がありましたら、
    @suzukiry25までご連絡お願いできければと思います。

    View Slide