1、首先部署zookeeper
apiVersion: v1
kind: Service
metadata:labels:app: zookeeper-clusternamespace: kafka-risktechname: zookeeper-cluster
spec:selector:app: zookeeper-clusterports:- name: clientport: 2181targetPort: 2181- name: followerport: 2888targetPort: 2888- name: leaderport: 3888targetPort: 3888clusterIP: None
---
apiVersion: v1
kind: Service
metadata:namespace: kafka-risktechname: zookeeper-cs
spec:selector:app: zookeeper-clustertype: NodePortports:- name: clientport: 2181nodePort: 30152
---
apiVersion: apps/v1
kind: StatefulSet
metadata:namespace: kafka-risktechname: crs-zookeeper
spec:replicas: 3podManagementPolicy: ParallelserviceName: zookeeper-clusterselector:matchLabels:app: zookeeper-clustertemplate:metadata:labels:component: zookeeper-clusterapp: zookeeper-clusterspec:containers:- name: zookeeperimage: bitnami/zookeeper:latestimagePullPolicy: IfNotPresentsecurityContext:runAsUser: 0ports:- containerPort: 2181- containerPort: 2888- containerPort: 3888lifecycle:postStart:exec:command:- "sh"- "-c"- >echo $(( $(cat /etc/hosts | grep zookeeper | awk '{print($3)}' | awk '{split($0,array,"-")} END{print array[3]}') +1 )) > /bitnami/zookeeper/data/myidenv:- name: ALLOW_ANONYMOUS_LOGINvalue: "yes"- name: ZOO_SERVERSvalue: crs-zookeeper-0.zookeeper-cluster.kafka-risktech.svc.cluster.local:2888:3888,crs-zookeeper-1.zookeeper-cluster.ka
fka-risktech.svc.cluster.local:2888:3888,crs-zookeeper-2.zookeeper-cluster.kafka-risktech.svc.cluster.local:2888:3888volumeMounts:- name: zoodata-outermountPath: /bitnami/zookeepervolumeClaimTemplates:- metadata:name: zoodata-outerspec:storageClassName: longhornaccessModes:- "ReadWriteOnce"resources:requests:storage: 5Gi
2、部署kafka集群
apiVersion: v1
kind: Service
metadata:namespace: kafka-risktechname: kafka-headless
spec:selector:app: kafka-clusterports:- name: clientport: 9092targetPort: 9092clusterIP: None
---
apiVersion: v1
kind: Service
metadata:name: kafka-0namespace: kafka-risktechlabels:app: kafka-cluster
spec:ports:- port: 9092targetPort: 9092nodePort: 30127name: servertype: NodePortselector:statefulset.kubernetes.io/pod-name: crs-kafka-0---
apiVersion: v1
kind: Service
metadata:name: kafka-1namespace: kafka-risktechlabels:app: kafka-cluster
spec:ports:- port: 9092targetPort: 9092nodePort: 30128name: servertype: NodePortselector:statefulset.kubernetes.io/pod-name: crs-kafka-1---
apiVersion: v1
kind: Service
metadata:name: kafka-2namespace: kafka-risktechlabels:app: kafka-cluster
spec:ports:- port: 9092targetPort: 9092nodePort: 30129name: servertype: NodePortselector:statefulset.kubernetes.io/pod-name: crs-kafka-2
---
apiVersion: apps/v1
kind: StatefulSet
metadata:namespace: kafka-risktechname: crs-kafka
spec:replicas: 3podManagementPolicy: ParallelserviceName: kafka-clusterselector:matchLabels:app: kafka-clustertemplate:metadata:labels:app: kafka-clusterspec:hostname: kafkacontainers:- name: kafkacommand:- bash- -ec- |HOSTNAME=`hostname -s`if [[ $HOSTNAME =~ (.*)-([0-9]+)$ ]]; thenORD=${BASH_REMATCH[2]}PORT=$((ORD + 30127))export KAFKA_CFG_ADVERTISED_LISTENERS="PLAINTEXT://10.157.40.4:$PORT"elseecho "Failed to get index from hostname $HOST"exit 1fiexec /entrypoint.sh /run.shimage: bitnami/kafka:latestimagePullPolicy: IfNotPresentsecurityContext:runAsUser: 0ports:- containerPort: 9092env:- name: KAFKA_CFG_ZOOKEEPER_CONNECTvalue: crs-zookeeper-0.zookeeper-cluster.kafka-risktech.svc.cluster.local:2181,crs-zookeeper-1.zookeeper-cluster.kafka-ri
sktech.svc.cluster.local:2181,crs-zookeeper-2.zookeeper-cluster.kafka-risktech.svc.cluster.local:2181- name: ALLOW_PLAINTEXT_LISTENERvalue: "yes"volumeMounts:- name: kafkadata-outermountPath: /bitnami/kafkavolumeClaimTemplates:- metadata:name: kafkadata-outerspec:storageClassName: longhornaccessModes:- "ReadWriteOnce"resources:requests:storage: 10Gi