
k8s部署kafka集群
1.zookeeper-deployment
yaml
--- kind: Deployment apiVersion: apps/v1 metadata: name: zookeeper namespace: kafka annotations: {} spec: replicas: 1 selector: matchLabels: app: zookeeper template: metadata: creationTimestamp: null labels: app: zookeeper spec: containers: - name: zookeeper image: 'bitnami/zookeeper:3.6.2' env: - name: ALLOW_ANONYMOUS_LOGIN value: 'yes' - name: ZOO_SERVER_ID value: '1' - name: ZOO_SERVERS value: '0.0.0.0:2888:3888' volumeMounts: - name: zookeeper-data mountPath: /var/lib/zookeeper volumes: - name: zookeeper-data nfs: server: 192.168.122.61 path: /data/volumes/other resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File imagePullPolicy: IfNotPresent restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst securityContext: {} schedulerName: default-scheduler strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 25% maxSurge: 25% revisionHistoryLimit: 10 progressDeadlineSeconds: 600 --- kind: Service apiVersion: v1 metadata: name: zookeeper namespace: kafka labels: app: zookeeper spec: ports: - name: client protocol: TCP port: 2181 targetPort: 2181 - name: follower protocol: TCP port: 2888 targetPort: 2888 - name: leader protocol: TCP port: 3888 targetPort: 3888 selector: app: zookeeper type: ClusterIP sessionAffinity: Noneservice
apiVersion: v1 kind: Service metadata: name: zookeeper-1 namespace: rcmd labels: app: zookeeper spec: ports: - name: client port: 2181 protocol: TCP targetPort: 2181 - name: follower port: 2888 protocol: TCP targetPort: 2888 - name: leader port: 3888 protocol: TCP targetPort: 3888 selector: app: zookeeper
2.kafka-broker-deployment
yaml
kind: Deployment apiVersion: apps/v1 metadata: name: kafka-broker namespace: kafka spec: replicas: 1 selector: matchLabels: app: kafka id: "kafka-broker" template: metadata: labels: app: kafka id: "kafka-broker" spec: containers: - name: kafka image: "wurstmeister/kafka:2.12-2.5.0" imagePullPolicy: "IfNotPresent" env: - name: KAFKA_ADVERTISED_LISTENERS value: "INSIDE://kafka-broker:9092,OUTSIDE://kafka-broker.kafka.testing.mpengine:10000" - name: KAFKA_LISTENERS value: "INSIDE://:9092,OUTSIDE://:10000" - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP value: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT" - name: KAFKA_INTER_BROKER_LISTENER_NAME value: "INSIDE" - name: KAFKA_ZOOKEEPER_CONNECT value: zookeeper:2181 - name: KAFKA_BROKER_ID value: "0" - name: KAFKA_CREATE_TOPICS value: mp_post_slog:1:1 volumeMounts: - name: kafka-data mountPath: /var/lib/kafka volumes: - name: kafka-data nfs: server: 192.168.122.61 path: /data/volumes/otherservice
--- apiVersion: v1 kind: Service metadata: labels: name: kafka name: kafka-broker namespace: kafka spec: ports: - name: kafka-port port: 9092 protocol: TCP targetPort: 9092 - name: external-port port: 10000 protocol: TCP targetPort: 10000 selector: app: kafka id: kafka-broker type: ClusterIP
3.测试验证
1.验证zookeeper
$ zkCli.sh create /hello world $ zkCli.sh get /hello2.验证kafka
创建test topic # kafka-topics.sh --create --topic test --zookeeper zookeeper:2181 --partitions 2 --replication-factor 1 查看是否有test # kafka-topics.sh --list --zookeeper zookeeper:2181 查看kafka消费输出 kafka-console-consumer.sh --topic test --bootstrap-server kafka-broker:9092 输入kafka测试数据 kafka-console-producer.sh --topic test --broker-list kafka-broker:9092参考:
[最简单的方式搭建kafka] https://cloud.tencent.com/developer/article/1767841