Kubernetes 部署单机版kafka(无持久化数据存储)

941 阅读1分钟

一、zookeeper部署

1. 创建zookeeper的statefulset(有状态服务)

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: zookeeper-test

spec:
  selector:
    matchLabels:
      app: zk
  serviceName: zookeeper  # 声明属于哪个Headless Service(无头服务商)
  template:
    metadata:
      labels:
        app: zk
    spec:
      containers:
        - name: zk
          image: zookeeper:latest
          ports:
            - containerPort: 2181
              name: zkclient

2. 创建zookeeper无头服务商(Service)

apiVersion: v1
kind: Service
metadata:
  name: zookeeper   # 与serviceName 同名
spec:
  clusterIP: None
  ports:
    - port: 2181
  selector:
    app: zk

二、kafka部署

1. 创建kafka的statefulset(有状态服务)

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: kafka
spec:
  selector:
    matchLabels:
      app: kafka
  serviceName: kafka-test
  template:
    metadata:
      labels:
        app: kafka
    spec:
      containers:
        - name: kafka
          image: bitnami/kafka:latest
          ports:
            - containerPort: 9092
              name: service
          env:
            - name: ALLOW_ANONYMOUS_LOGIN
              value: "yes"
            - name: KAFKA_CFG_ZOOKEEPER_CONNECT    #zookeeper连接地址,通过Headless Service 连接
              value: "zookeeper-test-0.zookeeper.default.svc.cluster.local:2181"
            - name: ALLOW_PLAINTEXT_LISTENER  # 必须填写,否则启动报错
              value: "yes"

2. 创建kafka无头服务商(Service)

apiVersion: v1
kind: Service
metadata:
  name: kafka-test
spec:
  clusterIP: None
  ports:
    - port: 9092
  selector:
    app: kafka

3. 创建kafka Service(在集群外可访问)

apiVersion: v1
kind: Service
metadata:
  name: kafka-client
spec:
  type: NodePort
  ports:
    - port: 9092
      targetPort: 9092
      nodePort: 30092
  selector:
    app: kafka