背景描述
底层Centos7.4
k8s版本1.6
prometheus版本:2.3.1
grafana版本:4.0
问题描述
在应用部署时发现,kafka-export这个pod一直在重启,通过kubectl descreble pod -n nsname podname 发现报错
因为kafka集群还没有部署所以这种错误暂时忽略,当kafka集群部署完成后,kafka-export这个容器还是一直在重启这就很奇怪了,于是我开始尝试用docker来运行这个容器
docker run -dit --name kafka-export -p 9308:9308 imageID
查看日志docker logs -f --tail 100 容器ID
发现报错:没有kafka可以连接
初步排查
百度了一下原来没有指定kafka的地址而本地也没有kafka的服务所以监听不到于是用以下命令成功运行:
docker run -dit --name kafka-export -p 9308:9308 imageID --kafka.server=192.168.x.x:9097
思考
既然docker运行没有问题那么k8s运行也可以
那么只需要在创建的deployment指定kafka地址应该亦可以访问
deployment创建
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: kafka-export
name: kafka-export
spec:
replicas: 1
selector:
matchLabels:
app: kafka-export
template:
metadata:
labels:
app: kafka-export
spec:
containers:
- image: 镜像地址
imagePullPolicy: IfNotPresent
name: kafka-export
arg: ["--kafka.server=kafka地址"]
ports:
- name: http
containerPort: 9308
SVC创建
apiVersion: v1
kind: Service
metadata:
name: kafka-export
spec:
replicas: 1
selector:
matchLabels:
app: kafka-export
template:
metadata:
labels:
app: kafka-export
spec:
ClusterIP: None
ports:
- name: http
Port: 9308
protocol: TCP
targetPort: http
type: ClusterIP
最后果然和预想的一样成功,且prometheus也获取到了kafka的数据,nice!