单机的kafka还需要zookeeper吗
时间: 2023-09-03 08:07:41 浏览: 63
即便是单机版的 Kafka,在启动时仍然需要启动 ZooKeeper。ZooKeeper 是 Kafka 的一个重要组件,它用于协调 Kafka Broker 的分布式通信、选举等工作。Kafka 在启动时会向 ZooKeeper 注册自己的信息,并通过 ZooKeeper 实现 Broker 之间的协调与通信。因此,即使是单机版的 Kafka,也需要启动 ZooKeeper。
相关问题
单机k8s启动kafka和zookeeper
在单机 Kubernetes 中启动 Kafka 和 ZooKeeper 可以使用 Helm 包管理工具来部署它们。以下是简单的步骤:
1. 安装 Helm 工具。
2. 添加 Confluent 的 Charts 仓库。
```
helm repo add confluentinc https://confluentinc.github.io/cp-helm-charts/
```
3. 创建一个名为 `my-kafka` 的名称空间。
```
kubectl create ns my-kafka
```
4. 安装 ZooKeeper。
```
helm install zookeeper confluentinc/cp-zookeeper --namespace my-kafka
```
5. 安装 Kafka。
```
helm install kafka confluentinc/cp-kafka --namespace my-kafka --set cp-kafka-rest.enabled=false,cp-schema-registry.enabled=false
```
6. 使用 `kubectl get pods -n my-kafka` 命令检查是否已成功部署 Kafka 和 ZooKeeper。
```
NAME READY STATUS RESTARTS AGE
zookeeper-0 1/1 Running 0 2m
kafka-0 2/2 Running 0 1m
kafka-1 2/2 Running 0 1m
kafka-2 2/2 Running 0 1m
```
现在,你可以使用 Kafka 和 ZooKeeper 的服务名称来访问它们。例如,使用 `my-kafka-zookeeper:2181` 来访问 ZooKeeper,使用 `my-kafka-kafka-headless:9092` 来访问 Kafka。
单机k8s启动kafka和zookeeper的yaml
以下是在单机 Kubernetes 中启动 Kafka 和 ZooKeeper 的 YAML 配置文件示例:
ZooKeeper YAML 配置文件:
```yaml
apiVersion: v1
kind: Service
metadata:
name: zookeeper
labels:
app: zookeeper
spec:
ports:
- name: client
port: 2181
protocol: TCP
targetPort: 2181
selector:
app: zookeeper
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: zookeeper
spec:
serviceName: "zookeeper"
replicas: 1
selector:
matchLabels:
app: zookeeper
template:
metadata:
labels:
app: zookeeper
spec:
containers:
- name: zookeeper
image: confluentinc/cp-zookeeper:6.2.0
env:
- name: ZOOKEEPER_CLIENT_PORT
value: "2181"
- name: ZOOKEEPER_TICK_TIME
value: "2000"
ports:
- name: client
containerPort: 2181
- name: follower
containerPort: 2888
- name: leader
containerPort: 3888
volumeMounts:
- name: datadir
mountPath: /var/lib/zookeeper/data
- name: logdir
mountPath: /var/lib/zookeeper/log
volumes:
- name: datadir
emptyDir: {}
- name: logdir
emptyDir: {}
```
Kafka YAML 配置文件:
```yaml
apiVersion: v1
kind: Service
metadata:
name: kafka
labels:
app: kafka
spec:
ports:
- name: kafka
port: 9092
protocol: TCP
targetPort: 9092
selector:
app: kafka
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: kafka
spec:
serviceName: "kafka"
replicas: 3
selector:
matchLabels:
app: kafka
template:
metadata:
labels:
app: kafka
spec:
containers:
- name: kafka
image: confluentinc/cp-kafka:6.2.0
env:
- name: KAFKA_BROKER_ID
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: KAFKA_ZOOKEEPER_CONNECT
value: "zookeeper:2181"
- name: KAFKA_ADVERTISED_LISTENERS
value: "PLAINTEXT://$(hostname -f):9092"
- name: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
value: "3"
ports:
- name: kafka
containerPort: 9092
volumeMounts:
- name: datadir
mountPath: /var/lib/kafka/data
volumes:
- name: datadir
emptyDir: {}
```
你可以将以上两个 YAML 配置文件分别保存为 `zookeeper.yaml` 和 `kafka.yaml`,并使用 `kubectl apply -f zookeeper.yaml` 和 `kubectl apply -f kafka.yaml` 命令来创建它们。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)