Yuxian: CSDN コンテンツ パートナー、CSDN の新人メンター、51CTO (トップ セレブ + 専門ブロガー)、github オープン ソース愛好家 (ゴーゼロ ソース コードの二次開発、ゲーム バックエンド アーキテクチャ https://github.com/Peakchen)
Kubernetes (k8s) はコンテナ操作を自動化するためのオープンソース プラットフォームであり、Kafka は分散ストリーム データ処理プラットフォームです。Kafka を k8s にデプロイすると、Kafka のデプロイメントの管理と保守が容易になります。以下は、k8s Kafka の簡単なデプロイメントです。
- k8s クラスターをインストールする
Kafka をデプロイする前に、k8s クラスターを準備する必要があります。Minikube などのツールを使用して、テスト用に k8s クラスターをローカルに構築できます。実稼働環境にデプロイする必要がある場合は、AWS EKS、Google GKE などのクラウド サービス プロバイダーが提供する k8s サービスを使用できます。
- Kafka イメージをダウンロードする
公式 Web サイトから Kafka イメージをダウンロードするか、Docker Hub の Kafka イメージを使用できます。ダウンロードが完了したら、イメージを k8s クラスターの Docker ウェアハウスにアップロードする必要があります。
- Kafka トピックを作成する
k8s が提供するコマンド ライン ツール kubectl を使用して Kafka トピックを作成します。コマンド kubectl create -f <topic.yaml> でトピックを作成できます。
- 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 を公開し、データ ボリュームをマウントします。
- 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 を公開するサービスを定義します。
- 部署 Kafka
コマンド kubectl apply -f <kafka-deploy.yaml> を使用して Kafka をデプロイします。
- カフカをテストする
Kafka が提供するコマンド ライン ツールを使用して Kafka のデプロイメントをテストした後、Kafka が提供するコマンド ライン ツールを使用して、Kafka が適切に動作しているかどうかをテストできます。
- 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
- Kafka トピックのリストを表示します。
kubectl exec -it kafka-0 -- /usr/bin/kafka-topics --list --zookeeper zk-cs:2181
テストトピックのリストが表示されれば、Kafka が正常に動作していることを意味します。
- Kafka へのメッセージを生成します。
kubectl exec -it kafka-0 -- /usr/bin/kafka-console-producer --topic test-topic --broker-list localhost:9092
この時点で、コマンド ライン インターフェイスに入り、メッセージを入力して Enter キーを押すと、メッセージが Kafka に送信されます。
- 消費者ニュース:
kubectl exec -it kafka-0 -- /usr/bin/kafka-console-consumer --topic test-topic --from-beginning --bootstrap-server localhost:9092
これにより、コマンド ライン インターフェイスが表示され、受信したメッセージが表示されます。
上記のテスト コマンドの kafka-0 は、Kafka クラスター内の任意の Pod 名に置き換えて、テストを実行できます。