k8s 测试使用的 kafka 非集群版

这里使用 nfs (172.16.16.150)
注意点: zookeeper 和 kafka 都是需要保存文件的,如果使用 deployment 类型来部署,需要使用 pv 和 pvc

部署 zookeeper

mkdir -p /data/yaml/kube-system/zookeeper
cd /data/yaml/kube-system/zookeeper

cat nfs.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: zookeeper-data
  namespace: kube-system
  labels:
    app: zookeeper-data
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany    
  persistentVolumeReclaimPolicy: Retain 
  storageClassName: nfs  
  nfs:
    path: /data/nfsdata/kube-system/zookeeper
    server: 172.16.16.150
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  namespace: kube-system
  name: zookeeper-data
spec:
  accessModes:
    - ReadWriteMany
  volumeMode: Filesystem
  resources:
    requests:
      storage: 10Gi
  storageClassName: nfs

kubectl apply -f nfs.yaml

cat svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: zookeeper
  namespace: kube-system
  labels:
    app: zookeeper
spec:
  ports:
  - port: 2181
    name: zookeeper-client
  selector:
    app: zookeeper
  clusterIP: None

kubectl apply -f svc.yaml

cat deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: zookeeper
  namespace: kube-system
  labels:
    app: zookeeper
spec:
  replicas: 1
  minReadySeconds: 100
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  selector:
    matchLabels:
      app: zookeeper
  template:
    metadata:
      labels:
        app: zookeeper
    spec:
      containers:
      - name: zookeeper
        image: bitnami/zookeeper:latest
        imagePullPolicy: IfNotPresent
        env:
          - name: ALLOW_ANONYMOUS_LOGIN
            value: 'yes'
        volumeMounts:
          - name: zookeeper-data
            mountPath: /bitnami/zookeeper
      volumes:
        - name: zookeeper-data
          persistentVolumeClaim:
            claimName: zookeeper-data

kubectl apply -f deployment.yaml

部署 kafka

mkdir -p /data/yaml/kube-system/kafka
cd /data/yaml/kube-system/kafka

cat nfs.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: kafka-data
  namespace: kube-system
  labels:
    app: kafka-data
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany    
  persistentVolumeReclaimPolicy: Retain 
  storageClassName: nfs  
  nfs:
    path: /data/nfsdata/kube-system/kafka
    server: 172.16.16.150
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  namespace: kube-system
  name: kafka-data
spec:
  accessModes:
    - ReadWriteMany
  volumeMode: Filesystem
  resources:
    requests:
      storage: 10Gi
  storageClassName: nfs

kubectl apply -f nfs.yaml

cat svc.yaml 
---
apiVersion: v1
kind: Service
metadata:
  name: kafka
  namespace: kube-system
  labels:
    app: kafka
spec:
  type: NodePort
  ports:
  - port: 9092
    targetPort: 9092
    nodePort: 30092
    name: kafka
  selector:
    app: kafka


kubectl apply -f svc.yaml

cat deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kafka
  namespace: kube-system
  labels:
    app: kafka
spec:
  replicas: 1
  minReadySeconds: 100
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  selector:
    matchLabels:
      app: kafka
  template:
    metadata:
      labels:
        app: kafka
    spec:
      containers:
      - name: kafka
        image: bitnami/kafka:latest
        imagePullPolicy: IfNotPresent
        env:
          - name: KAFKA_BROKER_ID
            value: '1'
          - name: KAFKA_CFG_LISTENERS
            value: 'PLAINTEXT://:9092'
          - name: KAFKA_CFG_ADVERTISED_LISTENERS
            value: 'PLAINTEXT://172.16.16.108:30092'
          - name: KAFKA_CFG_ZOOKEEPER_CONNECT
            value: 'zookeeper:2181'
          - name: ALLOW_PLAINTEXT_LISTENER
            value: 'yes'
        securityContext:
          runAsUser: 0
        volumeMounts:
          - name: kafka-data
            mountPath: /bitnami
      volumes:
        - name: kafka-data
          persistentVolumeClaim:
            claimName: kafka-data

kubectl apply -f deployment.yaml

测试

# 开启一个终端,进入 kafka 容器
kafka-console-producer.sh --broker-list localhost:9092 --topic topic_test
# 输入信息

# 开启另外一个终端,进入 kafka 容器
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic_test --from-beginning
# 查看是否正常显示
posted @ 2022-05-05 15:49  klvchen  阅读(116)  评论(0)    收藏  举报