|
@@ -0,0 +1,111 @@
|
|
|
+apiVersion: v1
|
|
|
+kind: Service
|
|
|
+metadata:
|
|
|
+ name: kafka-svc
|
|
|
+ namespace: qa
|
|
|
+ labels:
|
|
|
+ app: kafka
|
|
|
+spec:
|
|
|
+ ports:
|
|
|
+ - port: 9093
|
|
|
+ name: server
|
|
|
+ clusterIP: None #创建无头服务,如果需要对外暴露端口可自行创建service
|
|
|
+ selector:
|
|
|
+ app: kafka
|
|
|
+---
|
|
|
+apiVersion: policy/v1beta1
|
|
|
+kind: PodDisruptionBudget
|
|
|
+metadata:
|
|
|
+ name: kafka-pdb
|
|
|
+ namespace: qa
|
|
|
+spec:
|
|
|
+ selector:
|
|
|
+ matchLabels:
|
|
|
+ app: kafka
|
|
|
+ minAvailable: 2
|
|
|
+---
|
|
|
+apiVersion: apps/v1
|
|
|
+kind: StatefulSet
|
|
|
+metadata:
|
|
|
+ name: kafka
|
|
|
+ namespace: qa
|
|
|
+spec:
|
|
|
+ selector:
|
|
|
+ matchLabels:
|
|
|
+ app: kafka
|
|
|
+ serviceName: kafka-svc
|
|
|
+ replicas: 3
|
|
|
+ template:
|
|
|
+ metadata:
|
|
|
+ labels:
|
|
|
+ app: kafka
|
|
|
+ spec:
|
|
|
+ affinity:
|
|
|
+ podAntiAffinity:
|
|
|
+ requiredDuringSchedulingIgnoredDuringExecution:
|
|
|
+ - labelSelector:
|
|
|
+ matchExpressions:
|
|
|
+ - key: "app"
|
|
|
+ operator: In
|
|
|
+ values:
|
|
|
+ - kafka
|
|
|
+ topologyKey: "kubernetes.io/hostname"
|
|
|
+ podAffinity:
|
|
|
+ preferredDuringSchedulingIgnoredDuringExecution:
|
|
|
+ - weight: 1
|
|
|
+ podAffinityTerm:
|
|
|
+ labelSelector:
|
|
|
+ matchExpressions:
|
|
|
+ - key: "app"
|
|
|
+ operator: In
|
|
|
+ values:
|
|
|
+ - zk
|
|
|
+ topologyKey: "kubernetes.io/hostname"
|
|
|
+ terminationGracePeriodSeconds: 300
|
|
|
+ containers:
|
|
|
+ - name: k8skafka
|
|
|
+ imagePullPolicy: Always
|
|
|
+ image: registry.cn-hangzhou.aliyuncs.com/ccgg/k8skafka:v1 #可自行去阿里云拉去对应镜像
|
|
|
+ resources:
|
|
|
+ requests:
|
|
|
+ memory: "1Gi"
|
|
|
+ cpu: "1000m"
|
|
|
+ limits:
|
|
|
+ memory: "1Gi"
|
|
|
+ cpu: "1000m"
|
|
|
+ ports:
|
|
|
+ - containerPort: 9093
|
|
|
+ name: server
|
|
|
+ command:
|
|
|
+ - sh
|
|
|
+ - -c
|
|
|
+ - "exec kafka-server-start.sh /opt/kafka/config/server.properties --override broker.id=${HOSTNAME##*-} \
|
|
|
+ --override listeners=PLAINTEXT://:9093 \
|
|
|
+ --override zookeeper.connect=zookeeper-1.zookeeper-hs.qa.svc.cluster.local:2181,zookeeper-2.zookeeper-hs.qa.svc.cluster.local:2181,zookeeper-3.zookeeper-hs.qa.svc.cluster.local:2181 \ #这里配置了与zookeeper进行连接,非常重要。格式为:pod名.zookeeper的service名.名称空间.svc.cluster.local:2181
|
|
|
+ --override log.dir=/var/lib/kafka "
|
|
|
+ env:
|
|
|
+ - name: KAFKA_HEAP_OPTS
|
|
|
+ value: "-Xmx512M -Xms512M"
|
|
|
+ - name: KAFKA_OPTS
|
|
|
+ value: "-Dlogging.level=INFO"
|
|
|
+ volumeMounts:
|
|
|
+ - name: kafka-data
|
|
|
+ mountPath: /var/lib/kafka
|
|
|
+ readinessProbe:
|
|
|
+ exec:
|
|
|
+ command:
|
|
|
+ - sh
|
|
|
+ - -c
|
|
|
+ - "/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server=localhost:9093"
|
|
|
+ securityContext:
|
|
|
+ runAsUser: 1000
|
|
|
+ fsGroup: 1000
|
|
|
+ volumeClaimTemplates:
|
|
|
+ - metadata:
|
|
|
+ name: kafka-data
|
|
|
+ spec:
|
|
|
+ accessModes: [ "ReadWriteMany" ]
|
|
|
+ storageClassName: rbd #需指定自己的动态存储类名
|
|
|
+ resources:
|
|
|
+ requests:
|
|
|
+ storage: 100Gi
|