Co je Apache Kafka?
Kafka je systém pro zasílání zpráv, který shromažďuje a zpracovává rozsáhlé množství dat v reálném čase, což z něj činí zásadní integrační komponentu pro aplikace běžící v clusteru Kubernetes. Efektivitu aplikací nasazených v clusteru lze dále zvýšit platformou pro streamování událostí, jako je Apache Kafka .
Tento podrobný návod vám ukáže, jak nakonfigurovat server Kafka v clusteru Kubernetes.

Jak Apache Kafka funguje?
Apache Kafka je založen na modelu publikování a odběru:
- Producenti vytvářet zprávy a publikovat je do témat .
- Kafka kategorizuje zprávy do témat a ukládá je tak, aby byly neměnné.
- Spotřebitelé se přihlásí k odběru konkrétního tématu a absorbovat zprávy poskytnuté producenty.
Producenti a spotřebitelé v tomto kontextu představují aplikace, které vytvářejí zprávy řízené událostmi, a aplikace, které tyto zprávy spotřebovávají. Zprávy jsou uloženy u Kafka brokerů a jsou seřazeny podle uživatelsky definovaných témat .

Zookeeper je nepostradatelnou součástí konfigurace Kafka. Koordinuje producenty Kafky, makléře, spotřebitele a členství v klastrech.
Nasadit Zookeeper
Kafka nemůže fungovat bez Zookeeper. Služba Kafka se restartuje, dokud není zjištěno funkční nasazení Zookeeper.
Nasaďte Zookeeper předem vytvořením souboru YAML zookeeper.yml . Tento soubor spustí službu a nasazení, které naplánují moduly Zookeeper na clusteru Kubernetes.
Pomocí preferovaného textového editoru přidejte do zookeeper.yml následující pole :
apiVersion: v1
kind: Service
metadata:
name: zk-s
labels:
app: zk-1
spec:
ports:
- name: client
port: 2181
protocol: TCP
- name: follower
port: 2888
protocol: TCP
- name: leader
port: 3888
protocol: TCP
selector:
app: zk-1
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: zk-deployment-1
spec:
template:
metadata:
labels:
app: zk-1
spec:
containers:
- name: zk1
image: bitnami/zookeeper
ports:
- containerPort: 2181
env:
- name: ZOOKEEPER_ID
value: "1"
- name: ZOOKEEPER_SERVER_1
value: zk1
Spuštěním následujícího příkazu na clusteru Kubernetes vytvořte definiční soubor:
kubectl create -f zookeeper.yml
Vytvořit službu Kafka
Nyní potřebujeme vytvořit definiční soubor služby Kafka. Tento soubor spravuje nasazení Kafka Broker pomocí vyrovnávání zátěže nových modulů Kafka. Základní kafka-service.yml soubor obsahuje následující prvky:
apiVersion: v1
kind: Service
metadata:
labels:
app: kafkaApp
name: kafka
spec:
ports:
-
port: 9092
targetPort: 9092
protocol: TCP
-
port: 2181
targetPort: 2181
selector:
app: kafkaApp
type: LoadBalancer
Po uložení souboru vytvořte službu zadáním následujícího příkazu:
kubectl create -f kafka-service.yml
Definujte řadič replikace Kafka
Vytvořte další .yml soubor, který bude sloužit jako řadič replikace pro Kafka. Soubor řadiče replikace, v našem příkladu kafka-repcon.yml, obsahuje následující pole:
---
apiVersion: v1
kind: ReplicationController
metadata:
labels:
app: kafkaApp
name: kafka-repcon
spec:
replicas: 1
selector:
app: kafkaApp
template:
metadata:
labels:
app: kafkaApp
spec:
containers:
-
command:
- zookeeper-server-start.sh
- /config/zookeeper.properties
image: "wurstmeister/kafka"
name: zk1
ports:
-
containerPort: 2181
Uložte soubor definice řadiče replikace a vytvořte jej pomocí následujícího příkazu:
kubectl create -f kafka-repcon.yml
Spusťte server Kafka
Vlastnosti konfigurace pro server Kafka jsou definovány v config/server.properties soubor. Protože jsme již nakonfigurovali server Zookeeper, spusťte server Kafka pomocí:
kafka-server-start.sh config/server.properties
Jak vytvořit téma Kafka
Kafka má nástroj příkazového řádku s názvem kafka-topics.sh . Tento nástroj použijte k vytváření témat na serveru. Otevřete nové okno terminálu a zadejte:
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic Topic-Name
Vytvořili jsme téma s názvem Název tématu s jedním oddílem a jednou replikou instance.
Jak začít s producentem Kafka
Soubor config/server.properties soubor obsahuje ID portu brokera. Broker v příkladu naslouchá na portu 9092. Naslouchací port je možné zadat přímo pomocí příkazového řádku:
kafka-console-producer.sh --topic kafka-on-kubernetes --broker-list localhost:9092 --topic Topic-Name
Nyní použijte terminál k přidání několika řádků zpráv.
Jak začít se zákazníkem Kafka
Stejně jako u vlastností Producer jsou výchozí nastavení spotřebitele specifikována v config/consumer.properties soubor. Otevřete nové okno terminálu a zadejte příkaz pro příjem zpráv:
kafka-console-consumer.sh --topic Topic-Name --from-beginning --zookeeper localhost:2181
--from-beginning
příkaz vypisuje zprávy chronologicky. Nyní můžete zadávat zprávy z terminálu výrobce a vidět je, jak se zobrazují v terminálu spotřebitele.
Jak škálovat Kafkův cluster
Použijte příkazový terminál a přímo spravujte Kafka Cluster pomocí kubectl . Zadejte následující příkaz a rychle škálujte svůj Kafka cluster zvýšením počtu modulů z jednoho (1) na šest (6):
kubectl scale rc kafka-rc --replicas=6