用KafkaJs向Strimzi发布消息的Pod不断崩溃



这是我基于KafkaJs的发布者客户端。我创建了一个容器映像,并向Strimzi broker提交了一个PodYAML。

const { Kafka } = require('kafkajs')
async function clients() {
const kafka = new Kafka({
clientId: 'my-app',
brokers: ['test-kafka-bootstrap.strimzi.svc.cluster.local:9092']
})
const producer = kafka.producer()
await producer.connect()
await producer.send({
topic: 'clients',
messages: [
{ value: 'Hello KafkaJS user!' },
],
})
await producer.disconnect()
}
clients()

我的Dockerfile

FROM node:14 as build_app
WORKDIR /
WORKDIR /app
COPY app .
COPY package.json .
COPY package-lock.json .
RUN npm i
CMD ["node", "index.js"]

我的podYAML。

apiVersion: v1
kind: Pod
metadata:
name: clients
spec:
containers:
- name: clients
image: ghcr.io/org/clients:v0.0.0
imagePullPolicy: Always

Pod不断崩溃,kubectl logs没有显示任何内容——它是空的。kubectl describe也没有透露任何信息。

我错过了什么?

日志什么都不显示,因为1(代码没有日志输出2(代码只发送一条记录,然后停止,所以容器干净地退出;它不是一个长期运行的服务。使用一个简单的docker run命令也会遇到同样的问题。

如果你想要一个长期运行的服务,你需要将你的代码包装在一个web服务(NextJS、Express、Hapi等(中,然后为k8s服务添加一个健康检查探针。

您可以在睡眠模式下启动pod,然后在那里进行调试,使用下面的yaml

apiVersion: v1
kind: Pod
metadata:
name: clients
spec:
containers:
- name: clients
image: ghcr.io/org/clients:v0.0.0
imagePullPolicy: Always
command: ["sleep" , "100000000"]

现在执行进入吊舱

kubectl exec -it <pod> -- bash

现在执行

node index.js

相关内容

  • 没有找到相关文章

最新更新