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 updateStrategy: type: RollingUpdate podManagementPolicy: OrderedReady template: metadata: name: kafka labels: app: kafka spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: "app" operator: In values: - kafka topologyKey: "kubernetes.io/hostname" initContainers: - name: init image: hub.evbj.easou.com/dev/busybox command: [ "chmod","777","-R","/data" ] imagePullPolicy: Always volumeMounts: - name: data mountPath: /data containers: - name: kafka image: "docker.io/bitnami/kafka:2.4.1-debian-10-r58" imagePullPolicy: Always resources: limits: cpu: 500m memory: 512Mi requests: cpu: 250m memory: 256Mi env: - name: KAFKA_POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: KAFKA_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: KAFKA_CFG_ZOOKEEPER_CONNECT value: "zk-cs.qa.svc.cluster.local:2181" - name: KAFKA_PORT_NUMBER value: "9093" - name: KAFKA_CFG_LISTENERS value: "PLAINTEXT://:$(KAFKA_PORT_NUMBER)" - name: KAFKA_CFG_ADVERTISED_LISTENERS value: 'PLAINTEXT://$(KAFKA_POD_NAME).kafka-svc:$(KAFKA_PORT_NUMBER)' - name: ALLOW_PLAINTEXT_LISTENER value: "yes" - name: KAFKA_HEAP_OPTS value: "-Xmx512m -Xms512m" - name: KAFKA_CFG_LOGS_DIRS value: /data/kafka/data - name: JMX_PORT value: "9988" ports: - name: kafka containerPort: 9093 livenessProbe: tcpSocket: port: kafka initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 2 readinessProbe: tcpSocket: port: kafka initialDelaySeconds: 5 periodSeconds: 10 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 6 volumeMounts: - name: data mountPath: /data/kafka volumeClaimTemplates: - metadata: name: data spec: storageClassName: rbd accessModes: - "ReadWriteOnce" resources: requests: storage: 100Gi