K8s 部署 Kafka + Java Web 应用
部署 Kafka
如果机器内存不大,可适当将 Zookeeper 内存调小。
部署 Java Web 应用
该应用实现的功能,访问 http://localhost:30080/send/{要发送的消息} ,会向 K8s 里的 Kafka 发送一条消息,然后进行消费并获取返回值。
项目打包
Maven 中将项目打成可执行 jar 包:
在项目的 target 文件夹下可以找到生成的 jar 包:
创建 Dockerfile 文件
创建如下的文件,用于镜像构建,KafkaDemo.dockerfile:
# 基础镜像,如果本地仓库没有,会从远程仓库拉取
FROM markupglasgow/11-jdk-alpine-mvn
# 容器中创建目录
RUN mkdir -p /usr/local/kafka
# 编译后的 jar 包 copy 到容器中创建的目录内
COPY KafkaDemo-0.0.1-SNAPSHOT.jar /usr/local/kafka/KafkaDemo.jar
# 指定容器启动时要执行的命令
ENTRYPOINT ["java","-jar","/usr/local/kafka/KafkaDemo.jar"]
构建镜像
docker build -f KafkaDemo.dockerfile -t kafka:0.0.1 .
可以使用 docker images
命令查看刚刚构建的镜像,由于我们只在本地使用,不用将镜像推送到 Docker Hub 或私有镜像仓库内。
部署应用
创建命名空间:kubectl create namespace kafka-demo
应用服务:kubectl apply -f kafka-demo-svc.yaml -n kafka-demo
应用部署:kubectl apply -f kafka-demo-deployment.yaml -n kafka-demo