
云原生
利用kurise做日志采集使用promtail做sidecar采集日志
利用OpenKurise中的kruise做日志采集,原来我使用的是filebeat作为sidecar采集日志的,虽然采集没有什么问题,但是通过es进才看日志就比较繁琐了,这次实验p
[root@wulaoer ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@wulaoer ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE下载镜像,如果有自己的私有仓库可以下载自己的私有镜像直接在pull后面加自己的私有仓库地址即可:
[root@wulaoer ~]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx b8f262c62ec6: Pull complete e9218e8f93b1: Pull complete 7acba7289aa3: Pull complete Digest: sha256:aeded0f2a861747f43a01cf1018cf9efe2bdd02afd57d2b11fcc7fcadc16ccd1 Status: Downloaded newer image for nginx:latest [root@wulaoer ~]# docker pull tomcat Using default tag: latest latest: Pulling from library/tomcat 092586df9206: Pull complete ef599477fae0: Pull complete 4530c6472b5d: Pull complete d34d61487075: Pull complete 272f46008219: Pull complete 12ff6ccfe7a6: Pull complete f26b99e1adb1: Pull complete 21bec9c8ea28: Pull complete 13c2683e0a3b: Pull complete 9d4ac4f1904a: Pull complete Digest: sha256:57322bca4f6068ade10edef67c61ae5713790665c1e9e4628041726fc23fa71c Status: Downloaded newer image for tomcat:latest [root@wulaoer ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest 87ae08c1e3fb 2 days ago 511MB nginx latest f949e7d76d63 2 weeks ago 126MB下载有点慢,因为是国外的网站稍安勿躁。下面创建两个容器,一个nginx,一个tomcat。
[root@wulaoer ~]# docker run --name nginx-dev -it -p 80:80 -d nginx beafe325c0b84c11904ef8eb31e4e6bafdcdaa058843c824c8caf6d05cc1211e [root@wulaoer ~]# docker run --name tomcat-dev -it -p 8080:8080 -d tomcat b5d9141c364047410ed3d97d02f6a6648480f5f3bc676aeb3b0cc3aeca643838 [root@wulaoer ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b5d9141c3640 tomcat "catalina.sh run" 8 seconds ago Up 8 seconds 0.0.0.0:8080->8080/tcp tomcat-dev beafe325c0b8 nginx "nginx -g 'daemon of…" 39 seconds ago Up 38 seconds 0.0.0.0:80->80/tcp使用宿主机的80端口映射到容器的80端口,8080端口映射到tomcat的8080端口,这里创建的时候使用了一个参数-d,后台运行容器。我们配置一下,看一下我们访问的时候是否能够访问到我们配置的内容。
[root@wulaoer ~]# docker exec -it nginx-dev /bin/bash root@beafe325c0b8:/# cd /etc/nginx/conf.d/ root@beafe325c0b8:/etc/nginx/conf.d# ls default.conf我们可以查看一下default.conf文件,查看一下访问目录路径,然后在访问目录下修改index.html文件
root@beafe325c0b8:/etc/nginx/conf.d# cd /usr/share/nginx/html/ root@beafe325c0b8:/usr/share/nginx/html# ls 50x.html index.html root@beafe325c0b8:/usr/share/nginx/html# echo "this is nginx" > index.html root@beafe325c0b8:/usr/share/nginx/html# exit exit [root@wulaoer ~]# curl http://10.211.55.41 this is nginx修改成功,访问正常,下面修改tomcat的配置文件。
[root@wulaoer ~]# docker exec -it tomcat-dev /bin/bash root@b5d9141c3640:/usr/local/tomcat# cd webapps/ROOT/ root@b5d9141c3640:/usr/local/tomcat/webapps/ROOT# ls RELEASE-NOTES.txt bg-button.png bg-upper.png tomcat-power.gif tomcat.png WEB-INF bg-middle.png favicon.ico tomcat.css tomcat.svg asf-logo-wide.svg bg-nav.png index.jsp tomcat.gif root@b5d9141c3640:/usr/local/tomcat/webapps/ROOT# echo "This is tomcat" > index.jsp root@b5d9141c3640:/usr/local/tomcat/webapps/ROOT# exit exit [root@wulaoer ~]# curl http://10.211.55.41:8080 This is tomcat容器已经创建完成,应用正常不会自动退出或者重启。下面学一下反向代理,所以需要nginx反向指定到tomcat的url。
[root@wulaoer ~]# docker inspect tomcat-dev #容器的所有状态信息2.2 第二种查看方式
[root@wulaoer ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' tomcat-dev
172.17.0.3
2.3 第三种查看方式
[root@wulaoer ~]# docker exec -it tomcat-dev ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
66: eth0@if67: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
使用容器的IP地址进行反向代理,容器中默认没有安装vim,所以需要自己手动安装一下:
[root@wulaoer ~]# docker exec -it nginx-dev /bin/bash
root@beafe325c0b8:/# cd /etc/nginx/conf.d/
root@beafe325c0b8:/etc/nginx/conf.d# vi default.conf
bash: vi: command not found
root@beafe325c0b8:/etc/nginx/conf.d# apt-get update #需要先update才可以安装
root@beafe325c0b8:/etc/nginx/conf.d# apt-get install vim #安装vim
root@beafe325c0b8:/etc/nginx/conf.d# vim default.conf
.........
location / {
#root /usr/share/nginx/html;
#index index.html index.htm;
proxy_pass http://172.17.0.3:8080; #也可以替换成宿主机的,如果是集群可以替换成集群的slb
}
...........
root@beafe325c0b8:/etc/nginx/conf.d# /etc/init.d/nginx reload
[ ok ] Reloading nginx: nginx.
root@beafe325c0b8:/etc/nginx/conf.d# exit
exit
[root@wulaoer ~]# curl http://10.211.55.41
This is tomcat
我们这是一个nginx对应一个tomcat,如果有多个tomcat,这就需要使用到slb负载均衡,这时需要使用nginx反向代理宿主机的IP地址或者外网的slb地址以及端口。这时容器的网络模式就需要改变了,下面重新创建一个容器:
[root@wulaoer ~]# docker run --name nginx-host -it --net=host -d nginx /bin/bash 95650126763e4281c7d4cc98fb752dcbda76491d8091fa1f1dece167ced4351e [root@wulaoer ~]# docker run --name tomcat-host --net=host -d tomcat 4ec00d68b58247c8ecd0c6d401d4ec53757533fbe3514ab5ec1ca0c1ad8ec21c因为docker的host模式是和宿主机公用一个Network Namespace,所以docker容器是没有IP的,使用的端口也不存在映射,下面配置一下host模式的nginx+tomcat,在设置nginx反向代理时我们把使用的docker容器的IP换成宿主机的IP即可
[root@wulaoer ~]# date Fri Oct 18 16:51:15 CST 2019 [root@k8s-node3 ~]# docker exec -it nginx-dev /bin/bash root@072973cdf516:/# date Fri Oct 18 08:51:19 UTC 2019 root@072973cdf516:/#宿主机和容器时间不同步,我们需要把宿主机的时间文件copy到容器中看一下。
[root@wulaoer ~]# docker cp -L /usr/share/zoneinfo/Asia/Shanghai nginx-dev:/etc/localtime [root@wulaoer ~]# date Fri Oct 18 16:57:49 CST 2019 [root@wulaoer ~]# docker exec -it nginx-dev /bin/bash root@072973cdf516:/# date Fri Oct 18 16:57:53 CST 2019 root@072973cdf516:/#这里需要注意copy到容器中,容器中不能存在这个文件,不回覆盖,如果容器中存在文件,就会报错:
Error response from daemon: Could not find the file /usr/share/usr/share/zoneinfo/Asia in container nginx-dev
[root@wulaoer ~]# mkdir -p /opt/logs/nginx [root@wulaoer ~]# docker run --name=nginx-logs -v /opt/logs/nginx:/var/log/nginx -p 80:80 -d nginx cf1342b89393ac54d48f0c565dda7f6e7dc6d829f2c3ef2fe06e4c9fd1dd708d [root@wulaoer ~]# ls /opt/logs/nginx/ access.log error.log已经创建好容器,并且日志已经挂在本地,下面测试一下日志的同步性,先把时间同步,并清理本地的日志文件内容:
[root@wulaoer ~]# docker cp -L /usr/share/zoneinfo/Asia/Shanghai nginx-logs:/etc/localtime [root@wulaoer ~]# cd /opt/logs/nginx/ [root@wulaoer nginx]# ll total 4 -rw-r--r--. 1 root root 93 Oct 18 17:07 access.log -rw-r--r--. 1 root root 0 Oct 18 17:06 error.log [root@wulaoer nginx]# echo "" > access.log [root@wulaoer nginx]# ll total 4 -rw-r--r--. 1 root root 1 Oct 18 17:13 access.log -rw-r--r--. 1 root root 0 Oct 18 17:06 error.log [root@wulaoer nginx]#看一下容器中的内容是否还存在:
[root@wulaoer nginx]# docker exec -it nginx-logs /bin/bash root@cf1342b89393:/# cd /var/log/nginx/ root@cf1342b89393:/var/log/nginx# ls -l total 4 -rw-r--r--. 1 root root 1 Oct 18 17:13 access.log -rw-r--r--. 1 root root 0 Oct 18 17:06 error.log说明日志数据已经同步到宿主机上,下面我们循环执行看一下日志的产生:
[root@wulaoer nginx]# for ((i=1;i<=100;i++));do curl http://10.211.55.41; done容器日志都保存在宿主机上,可以设置自动分割,分类可以在宿主机上操作,不过建议每天做定时任务不需要很久才执行一次,可以先归类后压缩。
评论 0