k8s部署一个zookeeper和3个kafka集群
时间: 2023-12-19 20:06:01 浏览: 209
zookeeper、kafka集群部署
首先,你需要一个 Kubernetes 集群,如果没有的话,可以使用 Minikube 或者其他 Kubernetes 集群搭建方案来搭建一个本地的 Kubernetes 集群。
接下来,你需要创建一个 ZooKeeper 的 Deployment 和 Service:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: zookeeper
spec:
replicas: 1
selector:
matchLabels:
app: zookeeper
template:
metadata:
labels:
app: zookeeper
spec:
containers:
- name: zookeeper
image: zookeeper:3.6.2
ports:
- containerPort: 2181
- containerPort: 2888
- containerPort: 3888
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: zookeeper
spec:
selector:
app: zookeeper
ports:
- name: client
port: 2181
protocol: TCP
- name: follower
port: 2888
protocol: TCP
- name: leader
port: 3888
protocol: TCP
```
这个 YAML 文件定义了一个名为 zookeeper 的 Deployment 和一个名为 zookeeper 的 Service。Deployment 使用了 zookeeper:3.6.2 镜像,它会启动一个单节点的 ZooKeeper 实例。Service 会将端口 2181、2888 和 3888 暴露出来,以便于 Kafka 集群连接 ZooKeeper。
然后,你需要创建三个 Kafka 的 Deployment 和 Service,每个 Kafka 集群都需要一个 Deployment 和一个 Service:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: kafka-cluster-1
spec:
replicas: 3
selector:
matchLabels:
app: kafka-cluster-1
template:
metadata:
labels:
app: kafka-cluster-1
spec:
containers:
- name: kafka
image: wurstmeister/kafka:2.13-2.7.0
env:
- name: KAFKA_BROKER_ID
valueFrom:
fieldRef:
fieldPath: metadata.uid
- name: KAFKA_ADVERTISED_HOST_NAME
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: KAFKA_ZOOKEEPER_CONNECT
value: zookeeper:2181
- name: KAFKA_LOG_DIRS
value: /kafka/kafka-cluster-1
ports:
- containerPort: 9092
volumeMounts:
- name: data
mountPath: /kafka
volumes:
- name: data
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: kafka-cluster-1
spec:
selector:
app: kafka-cluster-1
ports:
- name: kafka
port: 9092
protocol: TCP
```
你需要将上面的 YAML 文件中的相应字段替换成你自己的配置。这个 YAML 文件定义了一个名为 kafka-cluster-1 的 Deployment 和一个名为 kafka-cluster-1 的 Service。Deployment 使用了 wurstmeister/kafka:2.13-2.7.0 镜像,它会启动三个 Kafka 节点。每个节点会注册到 ZooKeeper 上,Kafka 集群会使用 ZooKeeper 来管理节点、分区和副本。Service 会将端口 9092 暴露出来,以便于外部应用程序连接 Kafka 集群。
同样的方法,你可以创建另外两个 Kafka 集群的 Deployment 和 Service。完成后,你就可以使用 Kafka 集群了。
阅读全文