本文共 3012 字,大约阅读时间需要 10 分钟。
K8S系统的组件日志
K8S Cluster里面部署的应用程序日志方案一:Node上部署一个日志收集程序
1、DaemonSet方式部署日志收集程序 --这个在每个节点上会有一个pod监听2、对本节点(node上的)/var/log和 /var/lib/docker/containers/两个目录下的日志进行采集1)/var/log/containers
2)如下图:方案二:Pod中附加专用日志收集的容器--使用这个方案
每个运行应用程序的Pod中增加一个日志收集容器,使用emtyDir共享日志目录让日志收集程序读取到。方案三:应用程序直接推送日志
超出Kubernetes范围,需要在程序中实现的1、[root@docker ~]# mkdir logs
2、[root@docker ~]# cd logs/部署elk
1、官方地址:操作文档:2、部署在192.168.1.25上
1)安装jdk版本需要在Java 8发行版中安装Java版本1.80.131或稍后版本,不然运行失败下载:2) [root@docker ~]# cat /etc/yum.repos.d/elastic.repo
[logstash-6.x]name=Elastic repository for 6.x packagesbaseurl=gpgcheck=1gpgkey=enabled=1autorefresh=1type=rpm-md3)[root@docker ~]# yum install logstash kibana elasticsearch -y
4)修改如下:
[root@docker ~]# cat /etc/kibana/kibana.yml | grep -v '^#'| grep -v '^$'server.port: 5601server.host: "0.0.0.0"elasticsearch.url: ""5)systemctl start kibana
6)[root@docker ~]# cat /etc/elasticsearch/elasticsearch.yml | grep -v '^#'| grep -v '^$'
path.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchnetwork.host: 192.168.1.25http.port: 92007)需要解析到java
ln -sf /usr/local/jdk1.8.0_191/bin/java /usr/local/bin/java8)启动:systemctl start elasticsearch
9)访问:
10)
11)
12)
13)[root@docker local]# cat /etc/logstash/conf.d/k8s_syslog.conf
input { #filebeat客户端beats { port => 5044}}#筛选
filter {}
output {
#输出到eselasticsearch { hosts => [""]index => "k8s-syslog-%{+YYYY.MM.dd}"}#控制台输出,方便调试stdout { codec => rubydebug }}14)这一步是调试
[root@docker local]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/k8s_syslog.conf15)启动
systemctl start logstash3、到master01上部署filebeat
[root@docker logs]# vi k8s-logs.yaml 说明
fields_under_root:如果该选项设置为true,则新增fields成为顶级目录1)
2)
image: lizhenliang/filebeat:6.4.2 下载docker.hub上的要等很久
3)创建
kubectl apply -f k8s-logs.yaml4)查看5)再每个node上都安装一个pod,这就是DaemonSet的作用
4、访问:查看是否有索引
5、再新建索引
6、搭建nginx的环境让其产生日志
192.168.1.13[root@docker php-demo]# lsdeployment.yaml ingress.yaml mysql.yaml.bak namespace.yaml registry-pull-secret.yaml service.yaml[root@docker php-demo]# kubectl apply -f .1)删除deployment.yaml 因为要让registry-pull-secret.yaml授权访问后,再更新[root@docker php-demo]# kubectl delete -f deployment.yaml[root@docker php-demo]# kubectl apply -f deployment.yaml2)查看下pods,svc,ingress
3)必须要有ingress控制器,才能编辑ingress 规则
因为ingress-controller 相当于nginx ,ingress.yaml相当于nginx上的转发的规则若是有问题:重新apply
/root/demo/ingress/mandatory.yaml 这个文件就是生成ingress-controller4)查看ingress-控制器分配在了哪个node上,相当于nginx的服务器IP,这样就可以在hosts绑定域名
192.168.1.24 php.ctnrs.com
5 ) 访问下:
6)更新创建filebeat的pod
首先创建filebeat的配置文件,这个是存在Configmap下的再创建filebeat的pod
[root@docker logs]# vi nginx-deployment.yaml定义pod1:php-demo 若是已创建的话,再更新需要滚动更新(保障容器都在提供服务,一个个滚动替换)完成
定义pod2:filebeat挂载:emptyDir: {} 这个表示2个容器都是共享的,这样filebeat就可以读到nginx的日志文件了7)执行
8)验证
这里的是k8s的监控检查9)修改logstash的文件
分开写,比如nginx就输入到nginx里,k8s就输入到k8s里的日志10)重启logstash
systemctl restart logstash11)在kibana上添加索引
下面是部署java的日志
1、2、和php-demo的一致
3、再次查看kibana 有没有索引生成即可
转载于:https://blog.51cto.com/jacksoner/2339765