厦门app网站建设,网站建设的er图,一个公司网站后台怎么做,泰安网站建设哪家强一、EFK
1.1 EFK介绍
EFK为elasticsearch、fluentd、kibana的简称#xff0c;本案例主要对kubernetes集群日志收集。
1.2 Fluentd介绍
fluentd是一款开源的日志收集工具#xff0c;其于2016年11月8日被云原生计算基金会录取#xff0c;并于2019年毕业。 Fluentd优势本案例主要对kubernetes集群日志收集。
1.2 Fluentd介绍
fluentd是一款开源的日志收集工具其于2016年11月8日被云原生计算基金会录取并于2019年毕业。 Fluentd优势
使用 JSON 进行统一日志记录 其尽可能地把数据结构化为JSON让下游数据处理容易。 可插拔架构 利用插件允许对其功能扩展 对计算机资源要求少 其使用c语言和ruby结合编写需要少量系统资源即可运行。 内置可靠性 支持基于内存和文件的缓冲防止节点间数据丢失支持强大故障转移并可设置为高可用性
二、EFK部署
2.1 获取EFK部署资源清单文件
把EFK部署资源清单文件复制到本地主机本次本地主机主要指k8s master节点
# git clone https://github.com/kubernetes/kubernetes.git进入目录并查看目录内容
# cd kubernetes/
# ls
api cluster docs LICENSE Makefile.generated_files plugin SUPPORT.md
build cmd go.mod LICENSES OWNERS README.md test
CHANGELOG code-of-conduct.md go.sum logo OWNERS_ALIASES SECURITY_CONTACTS third_party
CHANGELOG.md CONTRIBUTING.md hack Makefile pkg staging vendor查看分支
# git branch切换对应版本的分支
# git checkout -b v1.21.10进入目录并查看目录内容
# cd cluster/addons/fluentd-elasticsearch
# ls
create-logging-namespace.yaml es-statefulset.yaml fluentd-es-image OWNERS
es-image fluentd-es-configmap.yaml kibana-deployment.yaml podsecuritypolicies
es-service.yaml fluentd-es-ds.yaml kibana-service.yaml README.md
2.2 安装ES
2.2.1 创建命名空间
应用资源清单文件创建命名空间非必须可使用资源清单中默认的命名空间 kube-system
# kubectl create namespace logging2.2.2 部署ES
部署ES注意部署前的配置
# kubectl apply -f es-statefulset.yaml应用前请注释此文件中ClusterIP:None并修改type类型为:NodePort再执行
# kubectl apply -f es-service.yaml2.2.3 查看安装情况
查看ES部署的pod是否运行
# kubectl get pods -n logging
NAME READY STATUS RESTARTS AGE
elasticsearch-logging-0 1/1 Running 0 8m
elasticsearch-logging-1 1/1 Running 1 5m50s查看ES部署后的SVC验证其访问的方法
# kubectl get svc -n logging
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch-logging NodePort 10.107.97.124 none 9200:31885/TCP,9300:32214/TCP 68s2.2.4 验证集群是否健康
查看ES集群是否健康下面状态为健康。
# curl 10.107.97.124:9200/_cat/health?pretty
1640939218 08:26:58 kubernetes-logging green 2 2 6 3 0 0 0 0 - 100.0%2.3 部署fluentd
2.3.1 部署fluentd
部署前对fluentd configmap进行配置主要修改其连接ES的地址及对应的端口此两项根据使用环境的不同配置也不相同。
# vim fluentd-es-configmap.yaml456 output.conf: |-
457 match **
458 id elasticsearch
459 type elasticsearch
460 log_level info
461 type_name _doc
462 include_tag_key true
463 host elasticsearch-logging 修改此处为es主机地址
464 port 9200 使用NodePort时此处也需要修改对应映射端口
465 logstash_format true
466 buffer
应用资源清单文件
# kubectl apply -f fluentd-es-configmap.yaml修改资源清单文件
# vim fluentd-es-ds.yaml55 selector:56 matchLabels:57 k8s-app: fluentd-es58 version: v3.1.159 template:60 metadata:61 labels:62 k8s-app: fluentd-es63 version: v3.1.164 spec:65 #securityContext:66 # seccompProfile:67 # type: RuntimeDefault
应用资源清单文件
# kubectl apply -f fluentd-es-ds.yaml2.3.2 查看部署状态
查看已部署的组件pod运行情况
# kubectl get pods -n logging输出结果
NAME READY STATUS RESTARTS AGE
elasticsearch-logging-0 1/1 Running 0 20m
elasticsearch-logging-1 1/1 Running 1 18m
fluentd-es-v3.1.1-2chjb 1/1 Running 0 64s
fluentd-es-v3.1.1-5gpmd 1/1 Running 0 64s2.4 部署Kibana
2.4.1 部署Kibana
修改资源清单文件
# vim kibana-deployment.yaml18 spec:以下三行注释掉19 # securityContext: 20 # seccompProfile:21 # type: RuntimeDefault22 containers:23 - name: kibana-logging24 image: docker.elastic.co/kibana/kibana-oss:7.10.225 resources:26 # need more cpu upon initialization, therefore burstable class27 limits:28 cpu: 1000m29 requests:30 cpu: 100m31 env:32 - name: ELASTICSEARCH_HOSTS33 value: http://elasticsearch-logging.logging.svc.cluster.local.:920034 - name: SERVER_NAME35 value: kibana-logging以下两行注释掉36 #- name: SERVER_BASEPATH37 # value: /api/v1/namespaces/logging/services/kibana-logging/proxy
应用资源清单文件
# kubectl apply -f kibana-deployment.yaml修改kibana service资源清单文件以NodePort类型暴露服务供K8S集群外用户访问
# vim kibana-service.yamlspec:ports:- port: 5601protocol: TCPtargetPort: uiselector:k8s-app: kibana-loggingtype: NodePort 添加此行内容
应用资源清单文件
# kubectl apply -f kibana-service.yaml2.4.2 查看Kibana部署状态
查看已部署组件pod运行状态
# kubectl get pods -n logging
NAME READY STATUS RESTARTS AGE
elasticsearch-logging-0 1/1 Running 0 25m
elasticsearch-logging-1 1/1 Running 1 22m
fluentd-es-v3.1.1-2chjb 1/1 Running 0 5m45s
fluentd-es-v3.1.1-5gpmd 1/1 Running 0 5m45s
kibana-logging-c46f6b9c5-g9fsl 1/1 Running 0 11s获取kibana对外提供的主机地址及对应的端口
# kubectl get svc -n logging
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch-logging NodePort 10.107.97.124 none 9200:31885/TCP,9300:32214/TCP 15m
kibana-logging NodePort 10.99.171.38 none 5601:31739/TCP 7s
在K8S集群任意主机查看是否打开kibana对外的端口服务类型为NodePort# ss -anput | grep 31739
tcp LISTEN 0 4096 *:31739 *:* users:((kube-proxy,pid4569,fd23))通过浏览器访问kibana web界面。