k8s-安装[kibana|fluentd]组件/k8s-pod日志展示

root
233
文章
0
评论
2021年8月30日22:54:50 评论 2948字阅读9分49秒

k8s-安装[kibana|fluentd]组件/k8s-pod日志展示

k8s集群:

k8s的控制节点

  • ip:192.168.1.180/181/182
  • 主机名:master01/02/03
  • 配置:6vCPU/6Gi内存

 

k8s的工作节点:

  • ip:192.168.1.183
  • 主机名:node01
  • 配置:6vCPU/8Gi内存

安装kibana可视化UI界面

#下载安装镜像

[root@node01 ~]# docker pull kibana:7.14.0

#更新资源清单文件

[root@master01 kibana]#  kubectl apply -f kibana.yaml
service/kibana created
deployment.apps/kibana created

kibana.yaml文件如下:

[root@master01 kibana]# cat kibana.yaml 
apiVersion: v1
kind: Service
metadata:
  name: kibana
  namespace: kube-logging
  labels:
    app: kibana
spec:
  ports:
  - port: 5601
  selector:
    app: kibana
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kibana
  namespace: kube-logging
  labels:
    app: kibana
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kibana
  template:
    metadata:
      labels:
        app: kibana
    spec:
      containers:
      - name: kibana
        image: kibana:7.14.0
        imagePullPolicy: IfNotPresent
        resources:
          limits:
            cpu: 1000m
          requests:
            cpu: 100m
        env:
          - name: ELASTICSEARCH_URL
            value: http://elasticsearch.kube-logging.svc.cluster.local:9200
        ports:
        - containerPort: 5601

上面我们定义了两个资源对象,一个 Service 和 Deployment,为了测试方便,我们将 Service 设置为了 NodePort 类型,Kibana Pod 中配置都比较简单,唯一需要注意的是我们使用 ELASTICSEARCH_URL 这个环境变量来设置Elasticsearch 集群的端点和端口,直接使用 Kubernetes DNS 即可,此端点对应服务名称为 elasticsearch,由于是一个 headless service,所以该域将解析为3个 Elasticsearch Pod 的 IP 地址列表。

spec:
  ports:
  - port: 5601
    nodePort: 30011
    targetPort: 5601
    protocol: TCP
  selector:
    app: kibana
  type: NodePort

显示如下,看到kibana开头的pod,说明kibana也已经部署成功了

[root@master01 kibana]# kubectl get pod -n kube-logging 
NAME                      READY   STATUS        RESTARTS   AGE
es-cluster-0              1/1     Running       0          26s
es-cluster-1              1/1     Running       0          15s
es-cluster-2              1/1     Running       0          9s
kibana-69dffcb7c5-6jjvw   1/1     Running       0          97s
[root@master01 kibana]# kubectl get svc -n kube-logging
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)             AGE
elasticsearch   ClusterIP   None           <none>        9200/TCP,9300/TCP   22h
kibana          NodePort    10.1.120.129   <none>        5601:30011/TCP      112m

在浏览器中打开http://<任意节点IP>:30011即可,如果看到如下欢迎界面证明 Kibana 已经成功部署到了Kubernetes集群之中。

安装fluentd组件

我们使用daemonset控制器部署fluentd组件,这样可以保证集群中的每个节点都可以运行同样fluentd的pod副本,这样就可以收集k8s集群中每个节点的日志,在k8s集群中,容器应用程序的输入输出日志会重定向到node节点里的json文件中,fluentd可以tail和过滤以及把日志转换成指定的格式发送到elasticsearch集群中。除了容器日志,fluentd也可以采集kubelet、kube-proxy、docker的日志

#node和master节点

[root@master01 fluentd]# docker load -i fluentd.yaml
[root@master02 fluentd]# docker load -i fluentd.yaml
[root@node01 fluentd]# docker load -i fluentd.yaml

#更新资源清单文件

[root@master01 fluentd]# kubectl apply -f fluentd.yaml 
serviceaccount/fluentd created
clusterrole.rbac.authorization.k8s.io/fluentd created
clusterrolebinding.rbac.authorization.k8s.io/fluentd created
daemonset.apps/fluentd created

#查看fluentd是否部署成功

[root@master01 fluentd]# kubectl get pod -n kube-logging 
NAME                      READY   STATUS    RESTARTS   AGE
es-cluster-0              1/1     Running   1          47m
es-cluster-1              1/1     Running   1          47m
es-cluster-2              1/1     Running   1          47m
fluentd-hfkw4             1/1     Running   0          16s
fluentd-kxz4k             1/1     Running   0          16s
fluentd-m6cf6             1/1     Running   0          16s
kibana-69dffcb7c5-6jjvw   1/1     Running   1          48m

Fluentd 启动成功后,我们可以前往 Kibana 的 Dashboard 页面中

kibana配置展示k8s容器日志

点击左侧的Discover

在这里可以配置我们需要的 Elasticsearch 索引,前面 Fluentd 配置文件中我们采集的日志使用的是 logstash 格式,这里只需要在文本框中输入logstash-*即可匹配到 Elasticsearch 集群中的所有日志数据

点击Next step

选择@timestamp,创建索引

创建好以后,再次点击左侧的discover,可看到如下:

Kibana查询语言KQL官方地址:

https://www.elastic.co/guide/en/kibana/7.2/kuery-query.html

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2021年8月30日22:54:50
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: