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

Topics erstellen und verwalten

Diese Anleitung erklärt, wie Sie Kafka-Topics auf Hikube deklarativ über Kubernetes-Manifeste erstellen, konfigurieren und verwalten. Sie lernen, wie Sie Partitionen, Replikate sowie Aufbewahrungs- und Bereinigungsrichtlinien definieren.

Voraussetzungen

  • kubectl konfiguriert mit Ihrer Hikube-Kubeconfig
  • Ein auf Hikube bereitgestellter Kafka-Cluster (oder ein Manifest zur Bereitstellung)

Schritte

1. Ein Topic zum Manifest hinzufügen

Die Topics werden im Abschnitt topics des Kafka-Manifests deklariert. Jedes Topic hat einen Namen, eine Anzahl von Partitionen und eine Anzahl von Replikaten.

kafka-topics.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: Kafka
metadata:
name: my-kafka
spec:
kafka:
replicas: 3
resourcesPreset: small
size: 10Gi
zookeeper:
replicas: 3
resourcesPreset: small
size: 5Gi
topics:
- name: events
partitions: 6
replicas: 3
- name: orders
partitions: 3
replicas: 3

Topic-Parameter:

ParameterTypBeschreibung
topics[i].namestringName des Topics
topics[i].partitionsintAnzahl der Partitionen (Parallelität des Konsums)
topics[i].replicasintAnzahl der Replikate (Datenhaltbarkeit)
topics[i].configobjectErweiterte Topic-Konfiguration
Warnung

Die Anzahl der Replikate eines Topics darf die Anzahl der verfügbaren Broker nicht überschreiten. Beispielsweise ist bei 3 Brokern das Maximum replicas: 3.

2. Aufbewahrung und Bereinigungsrichtlinie konfigurieren

Jedes Topic kann über das Feld config angepasst werden. Die beiden wichtigsten Bereinigungsrichtlinien sind:

  • delete: Nachrichten werden nach Ablauf der Aufbewahrungsfrist gelöscht (retention.ms)
  • compact: Nur der letzte Wert jedes Schlüssels wird beibehalten (ideal für Referenztabellen, Zustände)
kafka-topics-config.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: Kafka
metadata:
name: my-kafka
spec:
kafka:
replicas: 3
resourcesPreset: small
size: 20Gi
zookeeper:
replicas: 3
resourcesPreset: small
size: 5Gi
topics:
- name: events
partitions: 6
replicas: 3
config:
cleanup.policy: "delete"
retention.ms: "604800000"
min.insync.replicas: "2"
- name: orders
partitions: 3
replicas: 3
config:
cleanup.policy: "compact"
segment.ms: "3600000"
max.compaction.lag.ms: "5400000"
min.insync.replicas: "2"

Gängige Konfigurationsoptionen:

ParameterBeschreibungBeispiel
cleanup.policyBereinigungsrichtlinie: delete oder compact"delete"
retention.msAufbewahrungsdauer der Nachrichten in Millisekunden"604800000" (7 Tage)
min.insync.replicasMindestanzahl synchronisierter Replikate zur Bestätigung eines Schreibvorgangs"2"
segment.msDauer vor Rotation eines Log-Segments (in ms)"3600000" (1 Stunde)
max.compaction.lag.msMaximale Verzögerung vor der Kompaktierung einer Nachricht (in ms)"5400000" (1h30)
Tipp

Konfigurieren Sie für Produktions-Topics immer min.insync.replicas: "2" mit 3 Replikaten. Dies stellt sicher, dass mindestens 2 Broker jeden Schreibvorgang bestätigen und schützt vor Datenverlust bei Ausfall eines Brokers.

3. Änderungen anwenden

kubectl apply -f kafka-topics-config.yaml

Der Kafka-Operator erstellt oder aktualisiert automatisch die im Manifest deklarierten Topics.

4. Topics überprüfen

Überprüfen Sie, ob die Kafka-Ressource aktualisiert wurde:

kubectl get kafka my-kafka -o yaml | grep -A 10 "topics:"

Für eine eingehendere Überprüfung können Sie einen Debug-Pod mit dem Kafka-CLI starten:

kubectl run kafka-debug --rm -it --image=bitnami/kafka:latest --restart=Never -- \
kafka-topics.sh --bootstrap-server my-kafka-kafka-bootstrap:9092 --list

Erwartetes Ergebnis:

events
orders

Um die Details eines Topics anzuzeigen:

kubectl run kafka-debug --rm -it --image=bitnami/kafka:latest --restart=Never -- \
kafka-topics.sh --bootstrap-server my-kafka-kafka-bootstrap:9092 --describe --topic events

Erwartetes Ergebnis:

Topic: events   TopicId: AbC123...   PartitionCount: 6   ReplicationFactor: 3
Topic: events Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
Topic: events Partition: 1 Leader: 2 Replicas: 2,0,1 Isr: 2,0,1
...

Überprüfung

Die Konfiguration ist erfolgreich, wenn:

  • Die Topics in der Liste erscheinen (--list)
  • Die Anzahl der Partitionen und der Replikationsfaktor mit dem Manifest übereinstimmen
  • Die ISR (In-Sync Replicas) die erwartete Anzahl von Brokern enthalten

Weiterführende Informationen