k8s kafka導入実戦

Yuxian: CSDN コンテンツ パートナー、CSDN の新人メンター、51CTO (トップ セレブ + 専門ブロガー)、github オープン ソース愛好家 (ゴーゼロ ソース コードの二次開発、ゲーム バックエンド アーキテクチャ https://github.com/Peakchen)

 

Kubernetes (k8s) はコンテナ操作を自動化するためのオープンソース プラットフォームであり、Kafka は分散ストリーム データ処理プラットフォームです。Kafka を k8s にデプロイすると、Kafka のデプロイメントの管理と保守が容易になります。以下は、k8s Kafka の簡単なデプロイメントです。

  1. k8s クラスターをインストールする

Kafka をデプロイする前に、k8s クラスターを準備する必要があります。Minikube などのツールを使用して、テスト用に k8s クラスターをローカルに構築できます。実稼働環境にデプロイする必要がある場合は、AWS EKS、Google GKE などのクラウド サービス プロバイダーが提供する k8s サービスを使用できます。

  1. Kafka イメージをダウンロードする

公式 Web サイトから Kafka イメージをダウンロードするか、Docker Hub の Kafka イメージを使用できます。ダウンロードが完了したら、イメージを k8s クラスターの Docker ウェアハウスにアップロードする必要があります。

  1. Kafka トピックを作成する

k8s が提供するコマンド ライン ツール kubectl を使用して Kafka トピックを作成します。コマンド kubectl create -f <topic.yaml> でトピックを作成できます。

  1. Kafka デプロイメント ファイルを作成する

k8s クラスター上に Kafka デプロイメント ファイルを作成して、Kafka のポッド、サービスなどを定義します。デプロイメント ファイルの例は次のとおりです。

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: kafka
  namespace: default
spec:
  selector:
    matchLabels:
      app: kafka
  serviceName: kafka
  replicas: 3
  template:
    metadata:
      labels:
        app: kafka
    spec:
      containers:
      - name: kafka
        image: <kafka-image>
        ports:
        - containerPort: 9092
        volumeMounts:
        - name: data
          mountPath: /var/lib/kafka
      volumes:
      - name: data
        emptyDir: {}

このファイルは、Kafka ポッドを作成するための StatefulSet を定義します。3 つのレプリカを定義し、Kafka ミラーリングを使用し、ポート 9092 を公開し、データ ボリュームをマウントします。

  1. Kafkaサービスの作成

k8s が提供するコマンドライン ツール kubectl を使用して、Kafka サービスを作成し、Kafka クラスターを k8s クラスターの外部に公開します。サービス ファイルの例は次のとおりです。

apiVersion: v1
kind: Service
metadata:
  name: kafka
  namespace: default
  labels:
    app: kafka
spec:
  ports:
  - name: kafka
    port: 9092
    protocol: TCP
  selector:
    app: kafka

このファイルは、Kafka クラスターを k8s クラスターの外部に公開し、Kafka のポート 9092 を公開するサービスを定義します。

  1. 部署 Kafka

コマンド kubectl apply -f <kafka-deploy.yaml> を使用して Kafka をデプロイします。

  1. カフカをテストする

Kafka が提供するコマンド ライン ツールを使用して Kafka のデプロイメントをテストした後、Kafka が提供するコマンド ライン ツールを使用して、Kafka が適切に動作しているかどうかをテストできます。

  1. Kafka トピックを作成します。
kubectl exec -it kafka-0 -- /usr/bin/kafka-topics --create --topic test-topic --partitions 3 --replication-factor 3 --if-not-exists --zookeeper zk-cs:2181
  1. Kafka トピックのリストを表示します。
kubectl exec -it kafka-0 -- /usr/bin/kafka-topics --list --zookeeper zk-cs:2181

テストトピックのリストが表示されれば、Kafka が正常に動作していることを意味します。

  1. Kafka へのメッセージを生成します。
kubectl exec -it kafka-0 -- /usr/bin/kafka-console-producer --topic test-topic --broker-list localhost:9092

この時点で、コマンド ライン インターフェイスに入り、メッセージを入力して Enter キーを押すと、メッセージが Kafka に送信されます。

  1. 消費者ニュース:
kubectl exec -it kafka-0 -- /usr/bin/kafka-console-consumer --topic test-topic --from-beginning --bootstrap-server localhost:9092

これにより、コマンド ライン インターフェイスが表示され、受信したメッセージが表示されます。

上記のテスト コマンドの kafka-0 は、Kafka クラスター内の任意の Pod 名に置き換えて、テストを実行できます。

おすすめ

転載: blog.csdn.net/feng1790291543/article/details/130868573