apiVersion: v1 kind: Service metadata: name: kafka-headless namespace: [ENV] labels: app: kafka spec: type: ClusterIP clusterIP: None ports: - name: kafka port: 9093 targetPort: kafka selector: app: kafka --- apiVersion: v1 kind: Service metadata: name: kafka namespace: [ENV] labels: app: kafka spec: type: ClusterIP ports: - name: kafka port: 9093 targetPort: kafka selector: app: kafka --- apiVersion: apps/v1 kind: StatefulSet metadata: namespace: [ENV] name: kafka labels: app: kafka spec: selector: matchLabels: app: kafka serviceName: kafka-headless 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.[ENV].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-headless:$(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