#部署 Service Headless,用于Kafka间相互通信 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 --- #部署 Service,用于外部访问 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 podManagementPolicy: "Parallel" replicas: 3 updateStrategy: type: "RollingUpdate" template: metadata: name: "kafka" labels: app: kafka spec: initContainers: - name: init image: hub.evbj.easou.com/dev/busybox command: [ "chmod","777","-R","/data" ] imagePullPolicy: Always volumeMounts: - name: volume mountPath: /data containers: - name: kafka image: "docker.io/bitnami/kafka:2.12-2.4.1" imagePullPolicy: Always resources: limits: cpu: 500m memory: 512Mi requests: cpu: 250m memory: 256Mi env: - name: MY_POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: KAFKA_CFG_ZOOKEEPER_CONNECT value: "zk-cs.[ENV].svc.cluster.local:2181" #Zookeeper Service 名称 - name: KAFKA_PORT_NUMBER value: "9093" - name: KAFKA_CFG_LISTENERS value: "PLAINTEXT://:$(KAFKA_PORT_NUMBER)" - name: KAFKA_CFG_ADVERTISED_LISTENERS value: 'PLAINTEXT://$(MY_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 #指定为上面创建的 storageclass accessModes: - "ReadWriteOnce" resources: requests: storage: 100Gi