apiVersion: v1 kind: Service metadata: name: kafka-svc namespace: pro 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: pro spec: selector: matchLabels: app: kafka minAvailable: 2 --- apiVersion: apps/v1 kind: StatefulSet metadata: name: kafka namespace: pro 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: hub.evbj.easou.com/qa/kubernetes-kafka:1.0-10.2.1 #可自行去阿里云拉去对应镜像 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=zk-cs.pro.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: volume mountPath: /data/kafka readinessProbe: tcpSocket: port: 9093 timeoutSeconds: 2 securityContext: runAsUser: 1000 fsGroup: 1000 volumeClaimTemplates: - metadata: name: volume spec: accessModes: [ "ReadWriteOnce" ] storageClassName: rbd resources: requests: storage: 100Gi