From b8a04576c428e1d7a6990068968716c1cd65068c Mon Sep 17 00:00:00 2001 From: admins Date: Wed, 10 Dec 2025 21:07:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=E3=80=8Ckafka=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kafka/kafka-broker.yaml | 110 ++++++++++++++++++++++++++++++++++++ kafka/kafka-controller.yaml | 69 ++++++++++++++++++++++ kafka/kafka-namespace.yaml | 5 ++ kafka/storage-class.yaml | 13 +++++ 4 files changed, 197 insertions(+) create mode 100644 kafka/kafka-broker.yaml create mode 100644 kafka/kafka-controller.yaml create mode 100644 kafka/kafka-namespace.yaml create mode 100644 kafka/storage-class.yaml diff --git a/kafka/kafka-broker.yaml b/kafka/kafka-broker.yaml new file mode 100644 index 0000000..dc7d4ac --- /dev/null +++ b/kafka/kafka-broker.yaml @@ -0,0 +1,110 @@ + +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: kafka-broker + namespace: kafka + labels: + app: kafka-broker +spec: + serviceName: kafka-broker-headless + replicas: 3 + selector: + matchLabels: + app: kafka-broker + template: + metadata: + labels: + app: kafka-broker + spec: + containers: + - name: kafka-broker + image: xxx.xuanyuan.run/apache/kafka:latest + ports: + - containerPort: 9092 + name: client + - containerPort: 19092 + name: internal + env: + - name: KAFKA_NODE_ID + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: KAFKA_PROCESS_ROLES + value: "broker" + - name: KAFKA_LISTENERS + value: "PLAINTEXT://:19092,PLAINTEXT_HOST://:9092" + - name: KAFKA_ADVERTISED_LISTENERS + value: "PLAINTEXT://$(MY_POD_NAME).kafka-broker-headless.kafka.svc.cluster.local:19092,PLAINTEXT_HOST://localhost:9092" + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: KAFKA_INTER_BROKER_LISTENER_NAME + value: "PLAINTEXT" + - name: KAFKA_CONTROLLER_LISTENER_NAMES + value: "CONTROLLER" + - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP + value: "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT" + - name: KAFKA_CONTROLLER_QUORUM_VOTERS + value: "1@kafka-controller-0.kafka-controller-headless.kafka.svc.cluster.local:9093,2@kafka-controller-1.kafka-controller-headless.kafka.svc.cluster.local:9093,3@kafka-controller-2.kafka-controller-headless.kafka.svc.cluster.local:9093" + - name: KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS + value: "0" + volumeMounts: + - name: kafka-data + mountPath: /tmp/kafka-logs + readinessProbe: + tcpSocket: + port: 9092 + initialDelaySeconds: 15 + periodSeconds: 10 + livenessProbe: + tcpSocket: + port: 9092 + initialDelaySeconds: 30 + periodSeconds: 10 + volumeClaimTemplates: + - metadata: + name: kafka-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "dynamic-storage-class" + resources: + requests: + storage: 10Gi + +--- +apiVersion: v1 +kind: Service +metadata: + name: kafka-broker-headless + namespace: kafka + labels: + app: kafka-broker +spec: + ports: + - port: 9092 + name: client + - port: 19092 + name: internal + clusterIP: None + selector: + app: kafka-broker + +--- +apiVersion: v1 +kind: Service +metadata: + name: kafka-broker-external + namespace: kafka + labels: + app: kafka-broker +spec: + type: NodePort + ports: + - port: 9092 + targetPort: 9092 + nodePort: 30092 + name: client + selector: + app: kafka-broker diff --git a/kafka/kafka-controller.yaml b/kafka/kafka-controller.yaml new file mode 100644 index 0000000..5405c39 --- /dev/null +++ b/kafka/kafka-controller.yaml @@ -0,0 +1,69 @@ + +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: kafka-controller + namespace: kafka + labels: + app: kafka-controller +spec: + serviceName: kafka-controller-headless + replicas: 3 + selector: + matchLabels: + app: kafka-controller + template: + metadata: + labels: + app: kafka-controller + spec: + containers: + - name: kafka-controller + image: xxx.xuanyuan.run/apache/kafka:latest + ports: + - containerPort: 9093 + name: controller + env: + - name: KAFKA_NODE_ID + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: KAFKA_PROCESS_ROLES + value: "controller" + - name: KAFKA_LISTENERS + value: "CONTROLLER://:9093" + - name: KAFKA_INTER_BROKER_LISTENER_NAME + value: "PLAINTEXT" + - name: KAFKA_CONTROLLER_LISTENER_NAMES + value: "CONTROLLER" + - name: KAFKA_CONTROLLER_QUORUM_VOTERS + value: "1@kafka-controller-0.kafka-controller-headless.kafka.svc.cluster.local:9093,2@kafka-controller-1.kafka-controller-headless.kafka.svc.cluster.local:9093,3@kafka-controller-2.kafka-controller-headless.kafka.svc.cluster.local:9093" + - name: KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS + value: "0" + readinessProbe: + tcpSocket: + port: 9093 + initialDelaySeconds: 15 + periodSeconds: 10 + livenessProbe: + tcpSocket: + port: 9093 + initialDelaySeconds: 30 + periodSeconds: 10 + volumeClaimTemplates: [] + +--- +apiVersion: v1 +kind: Service +metadata: + name: kafka-controller-headless + namespace: kafka + labels: + app: kafka-controller +spec: + ports: + - port: 9093 + name: controller + clusterIP: None + selector: + app: kafka-controller diff --git a/kafka/kafka-namespace.yaml b/kafka/kafka-namespace.yaml new file mode 100644 index 0000000..1de3e9a --- /dev/null +++ b/kafka/kafka-namespace.yaml @@ -0,0 +1,5 @@ + +apiVersion: v1 +kind: Namespace +metadata: + name: kafka diff --git a/kafka/storage-class.yaml b/kafka/storage-class.yaml new file mode 100644 index 0000000..1de07b4 --- /dev/null +++ b/kafka/storage-class.yaml @@ -0,0 +1,13 @@ + +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: dynamic-storage-class +provisioner: kubernetes.io/aws-ebs # 根据实际环境修改 +parameters: + type: gp2 +reclaimPolicy: Retain +allowVolumeExpansion: true +mountOptions: + - debug +volumeBindingMode: WaitForFirstConsumer