在K8S中的Pod里面同时部署两个独立的容器,一个是跑jar包的一个是Filebeat采集

1、制作JDK镜像

1.1 Dockerfile编写

下载JDK,这里使用的版本是jdk1.8.0_221

FROM centos:latest  
RUN mkdir -p /usr/jdk8  
ADD jdk-8u221-linux-x64.tar.gz /usr/jdk8  
ENV JAVA_HOME /usr/jdk8/jdk1.8.0_221  
ENV CLASSPATH ./:$JAVA_HOME/lib:$JAVA_HOME/jre/lib  
ENV PATH $JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH 

1.2 构建镜像

将所需的文件放在Dockerfile同目录下,然后执行构建命令:

docker build -t jdk8:v1.0.0

 1.3 查看镜像

docker images|grep jdk8  

 2、制作filebeat镜像

2.1 Dockerfile编写

下载filebeat(https://www.elastic.co/cn/beats/filebeat),这里用的是7.6.2注意ES要和filebeat版本一致。

FROM jdk8:v1.0.1  #上面制作的JDK镜像
WORKDIR /usr/local  
ADD filebeat-7.6.2-linux-x86_64.tar.gz /usr/local  
RUN cd /usr/local/filebeat-7.6.2-linux-x86_64  
RUN mv /usr/local/filebeat-7.6.2-linux-x86_64/filebeat.yml /root/  
COPY filebeat.yml /usr/local/filebeat-7.6.2-linux-x86_64/  #复制filebeat的配置文件到镜像中
COPY ofm-dcloud-server.jar /usr/local/  #微服务
ADD restart.sh /usr/local/restart.sh    #微服务启动脚本
ADD run.sh /usr/local/run.sh             #filebeat启动脚本
ADD runall.sh /usr/local/runall.sh     #启动微服务和filebeat的脚本
RUN chmod 755 /usr/local/*.sh          
CMD sh /usr/local/runall.sh  
2.2 相关脚本和filebeat配置文件

filebeat启动脚本

run.sh

#! /bin/bash  

/usr/local/filebeat-7.6.2-linux-x86_64/filebeat -e -c /usr/local/filebeat-7.6.2-linux-x86_64/filebeat.yml  

jar包启动脚本

runjar.sh

# !/bin/bash 
nohup java -jar xxxx.jar > out.log 2>&1 &    

此脚本用于启动 filebeat启动脚本和jar包启动脚本

runall.sh

#! /bin/bash  
sh /usr/local/restart.sh  
sh /usr/local/run.sh

filebeat配置文件

filebeat.inputs:  
- type: log  
  enabled: true  
  paths:  
  - /usr/local/logs/*.log   #要收集日志的位置(容器中的路径)
output.elasticsearch:  
  hosts: ["ES的ip地址:9200"]   
  index: "filebeat-%{+yyyy.MM.dd}"  
setup.template.name: "filebeat"  
setup.template.pattern: "filebeat-*"  
setup.template.enabled: false  
setup.template.overwrite: true  
2.3 构建镜像

docker build --platform linux/amd64 -t jdk-filebeat:v1.0.0 .  

--platform linux/amd64 指定容器架构,以防出现容器架构和服务器架构不一致导致容器启动失败

查看镜像:

docker images|grep jdk-filebeat  

启动filebeat容器

docker run -d --name=filebeat jdk-filebeat:v1.0.0  

查看容器是否启动

docker ps|grep jdk-filebeat  

查看filebeat容器日志

需要等待三十秒再查看filebeat日志

docker logs -f filebeat   

2.4 查看ES

3、K8S部署filebeat

3.1 制作jar包镜像
FROM jdk8:v1.0.1
WORKDIR /usr/local
COPY ofm-dcloud-server.jar /usr/local/
ADD restart.sh /usr/local/restart.sh
RUN chmod 755 /usr/local/*.sh
CMD sh /usr/local/restart.sh
3.2 制作filebeat镜像
FROM jdk8:v1.0.1
WORKDIR /usr/local
ADD filebeat-7.6.2-linux-x86_64.tar.gz /usr/local
RUN cd /usr/local/filebeat-7.6.2-linux-x86_64
RUN mv /usr/local/filebeat-7.6.2-linux-x86_64/filebeat.yml /root/
COPY filebeat.yml /usr/local/filebeat-7.6.2-linux-x86_64/
ADD run.sh /usr/local/run.sh
RUN chmod 755 /usr/local/run.sh
CMD sh /usr/local/run.sh
3.3 编写yml文件
apiVersion: v1
kind: Pod
metadata:
  name: k8sjdk-filebeat
  namespace: default
  labels:
    environment: kf
spec:
  nodeName: host140
  containers:
  - name: k8sfilebeat
    image: filebeat:v2.0.5
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80
    volumeMounts:
    - name: logs-service
      mountPath: /home
  - name: k8sjdk
    image: k8sjdk:v1.0.2
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 8961
    volumeMounts:
    - name: logs-service
      mountPath: /usr/local/logs
  volumes:
  - name: logs-service
    emptyDir: {}   

这里使用的挂载方式是emptyDir,通过这种挂载方式使微服务的启动日志可以同步到filebeat容器中,从而收集到jar包日志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值