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
# 查看是否正常显示

浙公网安备 33010602011771号