命令记不住

登陆

k8s 部署 kafka 集群

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: None

service

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/other

service

---
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 /hello

2.验证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

推荐阅读