Zum Hauptinhalt springen
Version: 3.0.0-alpha (Diátaxis)

API-Referenz Kafka

Diese Referenz beschreibt die Konfiguration und Funktionsweise der Kafka-Cluster auf Hikube, einschließlich der Verwaltung von Topics, der Konfiguration der Kafka-Broker und der Koordination über ZooKeeper.


Grundstruktur

Kafka-Ressource

Beispiel einer YAML-Konfiguration

apiVersion: apps.cozystack.io/v1alpha1
kind: Kafka
metadata:
name: kafka
spec:
external: false
kafka:
replicas: 3
resourcesPreset: small
size: 10Gi
topics: []
zookeeper:
replicas: 3
resourcesPreset: small
size: 5Gi

Parameter

Allgemeine Parameter

ParameterTypBeschreibungStandardErforderlich
externalboolAktiviert den externen Zugang zum Kafka-Cluster (Exposition außerhalb des Kubernetes-Clusters)falseNein

YAML-Beispiel

kafka.yaml
external: true

Kafka-Parameter

ParameterTypBeschreibungStandardErforderlich
kafkaobjectKonfiguration des Kafka-Clusters{}Ja
kafka.replicasintAnzahl der Kafka-Replikate (Broker)3Ja
kafka.resourcesobjectExplizite CPU- und Speicherkonfiguration pro Broker. Wenn leer, wird kafka.resourcesPreset verwendet.{}Nein
kafka.resources.cpuquantityVerfügbare CPU pro BrokernullNein
kafka.resources.memoryquantityVerfügbarer RAM pro BrokernullNein
kafka.resourcesPresetstringStandard-Ressourcen-Preset (nano, micro, small, medium, large, xlarge, 2xlarge)"small"Ja
kafka.sizequantityGröße des persistenten Volumes für Kafka-Daten10GiJa
kafka.storageClassstringStorageClass für die Speicherung der Kafka-Daten""Nein

YAML-Beispiel

kafka.yaml
kafka:
replicas: 3
resources:
cpu: 2000m
memory: 2Gi
resourcesPreset: medium
size: 20Gi
storageClass: replicated

ZooKeeper-Parameter

ParameterTypBeschreibungStandardErforderlich
zookeeperobjectKonfiguration des von Kafka verwendeten ZooKeeper-Clusters{}Ja
zookeeper.replicasintAnzahl der ZooKeeper-Replikate3Ja
zookeeper.resourcesobjectExplizite CPU- und Speicherkonfiguration pro Replikat. Wenn leer, wird zookeeper.resourcesPreset verwendet.{}Nein
zookeeper.resources.cpuquantityVerfügbare CPU pro ZooKeeper-ReplikatnullNein
zookeeper.resources.memoryquantityVerfügbarer RAM pro ZooKeeper-ReplikatnullNein
zookeeper.resourcesPresetstringStandard-Ressourcen-Preset (nano, micro, small, medium, large, xlarge, 2xlarge)"small"Ja
zookeeper.sizequantityGröße des persistenten Volumes für ZooKeeper5GiJa
zookeeper.storageClassstringStorageClass für die Speicherung der ZooKeeper-Daten""Nein

YAML-Beispiel

kafka.yaml
zookeeper:
replicas: 3
resourcesPreset: small
size: 5Gi
storageClass: replicated

Topic-Parameter

ParameterTypBeschreibungStandardErforderlich
topics[]objectListe der automatisch zu erstellenden Topics[]Nein
topics[i].namestringName des Topics""Ja
topics[i].partitionsintAnzahl der Partitionen des Topics0Ja
topics[i].replicasintAnzahl der Replikate des Topics0Ja
topics[i].configobjectErweiterte Topic-Konfiguration (Bereinigung, Aufbewahrung usw.){}Nein

YAML-Beispiel

kafka.yaml
topics:
- name: results
partitions: 1
replicas: 3
config:
min.insync.replicas: 2
- name: orders
partitions: 1
replicas: 3
config:
cleanup.policy: compact
segment.ms: 3600000
max.compaction.lag.ms: 5400000
min.insync.replicas: 2

resources und resourcesPreset

Das Feld resources ermöglicht die explizite Definition der CPU- und Speicherkonfiguration jedes Brokers oder ZooKeeper-Knotens. Wenn dieses Feld leer gelassen wird, wird der Wert des Parameters resourcesPreset verwendet.

YAML-Beispiel

kafka.yaml
resources:
cpu: 4000m
memory: 4Gi

⚠️ Achtung: Wenn resources definiert ist, wird der Wert von resourcesPreset ignoriert.

Preset-NameCPUSpeicher
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi

Vollständige Beispiele

Produktionscluster

kafka-production.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: Kafka
metadata:
name: production
spec:
external: false
kafka:
replicas: 3
resources:
cpu: 4000m
memory: 8Gi
size: 100Gi
storageClass: replicated
zookeeper:
replicas: 3
resourcesPreset: small
size: 10Gi
storageClass: replicated
topics:
- name: events
partitions: 6
replicas: 3
config:
retention.ms: "604800000"
cleanup.policy: "delete"
min.insync.replicas: "2"
- name: commands
partitions: 3
replicas: 3
config:
cleanup.policy: "compact"
min.insync.replicas: "2"

Entwicklungscluster

kafka-development.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: Kafka
metadata:
name: development
spec:
external: false
kafka:
replicas: 1
resourcesPreset: nano
size: 5Gi
zookeeper:
replicas: 1
resourcesPreset: nano
size: 2Gi
topics:
- name: test-topic
partitions: 1
replicas: 1

Best Practices
  • min.insync.replicas: 2: Konfigurieren Sie diesen Parameter für Ihre Produktions-Topics, um sicherzustellen, dass mindestens 2 Replikate jeden Schreibvorgang bestätigen
  • Replizierter Speicher: Verwenden Sie storageClass: replicated, um die Daten vor dem Verlust eines physischen Knotens zu schützen
  • Speicherdimensionierung: Planen Sie ausreichend Speicherplatz für die Nachrichtenaufbewahrung (retention.ms) und die Kompaktierung ein
  • ZooKeeper: mindestens 3 Replikate in der Produktion, um Quorum und Fehlertoleranz zu gewährleisten
Achtung
  • Löschungen sind unwiderruflich: Das Löschen einer Kafka-Ressource führt zum endgültigen Verlust aller Nachrichten und Topics
  • Topic-Replikate vs. Broker: Die Anzahl der Replikate eines Topics darf die Anzahl der verfügbaren Broker nicht überschreiten
  • Reduzierung der Broker-Anzahl: Die Reduzierung der Broker-Anzahl auf einem bestehenden Cluster kann zu Datenverlust führen, wenn die Partitionen nicht zuvor umverteilt werden