【云原生】【k8s】Kubernetes+EFK构建日志分析安装部署

目录

EFK安装部署

一、环境准备(所有主机)

1、主机初始化配置

2、配置主机名并绑定hosts,不同主机名称不同

3、主机配置初始化

4、部署docker环境

二、部署kubernetes集群

1、组件介绍

2、配置阿里云yum源

[3、安装kubelet kubeadm kubectl](#3、安装kubelet kubeadm kubectl)

4、配置init-config.yaml

init-config.yaml配置

5、安装master节点

6、安装node节点

7、安装flannel

三、部署企业镜像仓库

1、部署Harbor仓库

访问测试:

2、重启harbor,导入EFK镜像

四、部署EFK业务环境

1、准备组件Yaml文件

2、部署Elasticsearch

3、部署kibana

4、部署Fluentd

5、验证容器日志收集,创建测试容器

[6、配置 Kibana](#6、配置 Kibana)


EFK安装部署

一、 环境准备 (所有主机)

|-----------------|------------|---------------------------------------------------------|
| IP地址 | 主机名 | 组件 |
| 192.168.100.131 | k8s-master | kubeadm、kubelet、kubectl、docker-ce |
| 192.168.100.132 | k8s-node01 | kubeadm、kubelet、kubectl、docker-ce、elasticsearch、fluentd |
| 192.168.100.133 | k8s-node02 | kubeadm、kubelet、kubectl、docker-ce、kibana、fluentd |
| 192.168.100.134 | harbor | docker-ce、docker-compose、harbor |

注意:所有主机配置推荐CPU:2C+ Memory:4G+、运行 Elasticsearch 的节点要有足够的内存(不低于 4GB)。若 Elasticsearch 容器退出,请检查宿主机中的/var/log/message 日志,观察是否因为系统 OOM 导致进程被杀掉。

项目拓扑

1 主机初始化配置

所有主机配置禁用防火墙和selinux

复制代码
[root@localhost ~]# setenforce 0

[root@localhost ~]# iptables -F

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl disable firewalld

[root@localhost ~]# systemctl stop NetworkManager

[root@localhost ~]# systemctl disable NetworkManager

[root@localhost ~]# sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config

2、 配置主机名并绑定hosts,不同主机名称不同

复制代码
[root@localhost ~]# hostname k8s-master

[root@localhost ~]# bash

[root@k8s-master ~]# cat << EOF >> /etc/hosts

192.168.100.131 k8s-master

192.168.100.132 k8s-node01

192.168.100.133 k8s-node02

EOF

root@localhost \~\]# hostname k8s-node01 \[root@k8s-node01 \~\]# cat /etc/hosts ![](https://file.jishuzhan.net/article/1691974506916089857/61ba883df3f74d8ebc5e03eb9acded2e.png) \[root@localhost \~\]# hostname k8s-node02 \[root@k8s-node02 \~\]#cat /etc/hosts ![](https://file.jishuzhan.net/article/1691974506916089857/f11c808293f540e7ab43e3aff144fa33.png) ### ****3、**** ****主机配置初始化**** \[root@k8s-master \~\]# yum -y install vim wget net-tools lrzsz ![](https://file.jishuzhan.net/article/1691974506916089857/9bf1768a1050446ca97132577fca2eb3.png) [root@k8s-master ~]# swapoff -a [root@k8s-master ~]# sed -i '/swap/s/^/#/' /etc/fstab [root@k8s-master ~]# cat << EOF >> /etc/sysctl.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF [root@k8s-master ~]# modprobe br_netfilter [root@k8s-master ~]# sysctl -p ![](https://file.jishuzhan.net/article/1691974506916089857/068a9ff79d5f4d7d8a2862e26e1692bd.png) ### ****4、**** ****部署docker环境**** ****1)**** ****三台主机上分别部署 Docker 环境,因为 Kubernetes 对容器的编排需要 Docker 的支持。**** > \[root@k8s-master \~\]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo > > \[root@k8s-master \~\]# yum install -y yum-utils device-mapper-persistent-data lvm2 ****2)**** ****使用 YUM 方式安装 Docker 时,推荐使用阿里的 YUM 源。**** > \[root@k8s-master \~\]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ****3)清除缓存**** > \[root@k8s-master \~\]# yum clean all \&\& yum makecache fast ****4)启动docker**** > \[root@k8s-master \~\]# yum -y install docker-ce > > \[root@k8s-master \~\]# systemctl start docker > > \[root@k8s-master \~\]# systemctl enable docker ![](https://file.jishuzhan.net/article/1691974506916089857/5333dafc07d444ea8e24594a774d5063.png) ****5)**** ****镜像加速器(所有主机配置)**** > \[root@k8s-master \~\]# cat \<\< END \> /etc/docker/daemon.json > > { "registry-mirrors":\[ "https://nyakyfun.mirror.aliyuncs.com"

}

END

6)重启docker

root@k8s-master \~\]# systemctl daemon-reload \[root@k8s-master \~\]# systemctl restart docker

二、 部署kubernetes集群

1、组件介绍

三个节点都需要安装下面三个组件

****kubeadm:****安装工具,使所有的组件都会以容器的方式运行

****kubectl:****客户端连接K8S API工具

kubelet:运行在node节点,用来启动容器的工具

2、配置阿里云yum源

使用 YUM 方式安装 Kubernetes时,推荐使用阿里的 YUM 源。

root@k8s-master \~\]# ls /etc/yum.repos.d/ \[root@k8s-master \~\]# cat \> /etc/yum.repos.d/kubernetes.repo

3、安装kubelet kubeadm kubectl

所有主机配置

root@k8s-master \~\]# yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0

root@k8s-master \~\]# systemctl enable kubelet ![](https://file.jishuzhan.net/article/1691974506916089857/c17138c15a4545eebe29a3f38ae4889f.png) \[root@k8s-master \~\]# kubectl version ![](https://file.jishuzhan.net/article/1691974506916089857/6f082ed5b67f434f8182061fa0151527.png) kubelet 刚安装完成后,通过 systemctl start kubelet 方式是无法启动的,需要加入节点或初始化为 master 后才可启动成功。 ### ****4、配置init-config.yaml**** Kubeadm 提供了很多配置项,Kubeadm 配置在 Kubernetes 集群中是存储在ConfigMap 中的,也可将这些配置写入配置文件,方便管理复杂的配置项。Kubeadm 配内容是通过 kubeadm config 命令写入配置文件的。 在master节点安装,master 定于为192.168.100.131,通过如下指令创建默认的init-config.yaml文件: > \[root@k8s-master \~\]# kubeadm config print init-defaults \> init-config.yaml ![](https://file.jishuzhan.net/article/1691974506916089857/1812dc8e736e49058dc54ba16b6bfccc.png) #### ****init-config.yaml配置**** \[root@k8s-master \~\]# cat init-config.yaml ![](https://file.jishuzhan.net/article/1691974506916089857/af60e82757944a6d83f999212f962625.png) ### ****5、安装master节点**** ****1)**** ****拉取所需镜像**** \[root@k8s-master \~\]# kubeadm config images list --config init-config.yaml ![](https://file.jishuzhan.net/article/1691974506916089857/7f1ddcf58ad2492b9aab0eb52fd2a9bb.png) \[root@k8s-master \~\]# kubeadm config images pull --config init-config.yaml ![](https://file.jishuzhan.net/article/1691974506916089857/fc6223991a0a4992b5231b6c7f41d2d2.png) ****2)**** ****安装matser节点**** \[root@k8s-master \~\]# kubeadm init --config=init-config.yaml //初始化安装K8S ![](https://file.jishuzhan.net/article/1691974506916089857/083ecd3d213c478eaf9a657dc6041733.png) ****3)**** ****根据提示操作**** kubectl 默认会在执行的用户家目录下面的.kube 目录下寻找config 文件。这里是将在初始化时\[kubeconfig\]步骤生成的admin.conf 拷贝到.kube/config > ****\[root@k8s-master \~\]# mkdir -p $HOME/.kube**** > > ****\[root@k8s-master \~\]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config**** > > ****\[root@k8s-master \~\]# chown $(id -u):$(id -g) $HOME/.kube/config**** ![](https://file.jishuzhan.net/article/1691974506916089857/9a30ac6c396d4d4ba34807f5be9dec83.png) Kubeadm 通过初始化安装是不包括网络插件的,也就是说初始化之后是不具备相关网络功能的,比如 k8s-master 节点上查看节点信息都是"Not Ready"状态、Pod 的 CoreDNS无法提供服务等。 ![](https://file.jishuzhan.net/article/1691974506916089857/fbc6026fff3a43f2867dda83648ed2f5.png) ![](https://file.jishuzhan.net/article/1691974506916089857/f0741b187401411eaec6172c4280996d.png) ### ****6、安装node节点**** ****1)**** ****根据master安装时的提示信息**** > \[root@k8s-node01 \~\]# kubeadm join 192.168.100.131:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:78bdd0f01660f4e84355b70aa8807cf1d0d6325b0b28502b29c241563e93b4ae ![](https://file.jishuzhan.net/article/1691974506916089857/491db2857ac04040b32f3b420494586b.png) > \[root@k8s-master \~\]# kubectl get nodes > > \[root@k8s-node02 \~\]# kubeadm join 192.168.100.131:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:78bdd0f01660f4e84355b70aa8807cf1d0d6325b0b28502b29c241563e93b4ae ![](https://file.jishuzhan.net/article/1691974506916089857/58d5a519ec4b40e7837857bcc5a0d8b1.png) ****Master操作:**** ****\[root@k8s-master \~\]# kubectl get nodes**** ![](https://file.jishuzhan.net/article/1691974506916089857/dffde67bc4554370bec98f7ffac77fff.png) 前面已经提到,在初始化 k8s-master 时并没有网络相关配置,所以无法跟 node 节点通信,因此状态都是"NotReady"。但是通过 kubeadm join 加入的 node 节点已经在k8s-master 上可以看到。 ### ****7、安装flannel**** Master 节点NotReady 的原因就是因为没有使用任何的网络插件,此时Node 和Master的连接还不正常。目前最流行的Kubernetes 网络插件有Flannel、Calico、Canal、Weave 这里选择使用flannel。 ****所有主机:**** > ****master上传kube-flannel.yml,所有主机上传flannel_v0.12.0-amd64.tar,cni-plugins-linux-amd64-v0.8.6.tgz**** > > \[root@k8s-master \~\]# docker load \< flannel_v0.12.0-amd64.tar ![](https://file.jishuzhan.net/article/1691974506916089857/0c5af8229bdf4f18948bc37bc307dfe2.png) ****上传插件:**** ****\[root@k8s-master \~\]# tar xf cni-plugins-linux-amd64-v0.8.6.tgz**** ****\[root@k8s-master \~\]# cp flannel /opt/cni/bin/**** ![](https://file.jishuzhan.net/article/1691974506916089857/93a2b86edcfb4d45aed97dedfc05836a.png) ****master上传kube-flannel.yml**** ****master主机配置:**** \[root@k8s-master \~\]# kubectl apply -f kube-flannel.yml ![](https://file.jishuzhan.net/article/1691974506916089857/4c1bb6b2ed85498d97a0c90165018ea8.png) \[root@k8s-master \~\]# kubectl get nodes \[root@k8s-master \~\]# kubectl get pods -n kube-system ![](https://file.jishuzhan.net/article/1691974506916089857/4f3cdd3a39ad4c0fab67d59bec848ae7.png) ****已经是ready状态**** ## ****三、**** ****部署企业镜像仓库**** ### ****1、部署Harbor仓库**** ****1)**** ****所有主机配置禁用防火墙和selinux**** [root@localhost ~]# setenforce 0 [root@localhost ~]# iptables -F [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld [root@localhost ~]# systemctl stop NetworkManager [root@localhost ~]# systemctl disable NetworkManager [root@localhost ~]# sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config ![](https://file.jishuzhan.net/article/1691974506916089857/48dd50b58b824a53aae4506802f04a0e.png) ****2)**** ****配置主机名**** > \[root@localhost \~\]# hostname harbor > > \[root@localhost \~\]# bash > > \[root@harbor \~\]# ****3)**** ****部署docker环境**** Harbor 仓库需要 Docker 容器支持,所以 Docker 环境是必不可少的。 > \[root@k8s-master \~\]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo > > \[root@k8s-master \~\]# yum install -y yum-utils device-mapper-persistent-data lvm2 ****使用 YUM 方式安装 Docker 时,推荐使用阿里的 YUM 源。**** > \[root@k8s-master \~\]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ****清除缓存**** > \[root@k8s-master \~\]# yum clean all \&\& yum makecache fast ****启动docker**** > \[root@k8s-master \~\]# yum -y install docker-ce > > \[root@k8s-master \~\]# systemctl start docker > > \[root@k8s-master \~\]# systemctl enable docker ****镜像加速器(所有主机配置)**** > \[root@k8s-master \~\]# cat \<\< END \> /etc/docker/daemon.json > > { "registry-mirrors":\[ "https://nyakyfun.mirror.aliyuncs.com"

}

END

重启docker

root@k8s-master \~\]# systemctl daemon-reload \[root@k8s-master \~\]# systemctl restart docker

部署docker-compose

root@harbor \~\]# mv docker-compose /usr/local/bin/ \[root@harbor \~\]# chmod +x /usr/local/bin/docker-compose

部署harbor

Harbor 私有仓库程序,采用 docker-compose 方式部署,不同的功能和应用处于不同的容器,这样带来了很好的兼容性,可在众多支持 Docker 的系统上运行 Harbor。

root@harbor \~\]# tar xf harbor-offline-installer-v1.10.6.tgz -C /usr/local/

Harbor 的配置文件是/usr/local/harbor/harbor.yml 文件,默认的 hostname 要修改为Harbor 虚拟机节点的 IP 地址。

[root@harbor ~]# vim /usr/local/harbor/harbor.yml

5 hostname: 192.168.200.114

13 #https: //https 相关配置都注释掉,包括 https、port、certificate 和 private_key

14 # https port for harbor, default is 443

15 #port: 443

16 # The path of cert and key files for nginx

17 #certificate: /your/certificate/path

18 #private_key: /your/private/key/path

启动harbor

root@harbor \~\]# cd /usr/local/harbor/ \[root@harbor harbor\]# sh install.sh

root@harbor harbor\]# docker-compose ps ![](https://file.jishuzhan.net/article/1691974506916089857/cc74874b2cc1488f834cbd794d6f815a.png) #### 访问测试: Harbor 启动完成后,浏览器访问 http://192.168.100.134,打开 Harbor Web 页面 ![](https://file.jishuzhan.net/article/1691974506916089857/41419a853b2c4eb4910965bd6f746dd8.png) ![](https://file.jishuzhan.net/article/1691974506916089857/84ece5c422e141298247c0dbd8f62622.png) ****修改所有主机docker启动脚本**** \[root@harbor \~\]# vim /usr/lib/systemd/system/docker.service ![](https://file.jishuzhan.net/article/1691974506916089857/95f4af896ac643de89f03bcb6512ea58.png) > \[root@harbor \~\]# scp /usr/lib/systemd/system/docker.service 192.168.100.131:/usr/lib/systemd/system/ > > \[root@harbor \~\]# scp /usr/lib/systemd/system/docker.service 192.168.100.132:/usr/lib/systemd/system/ > > \[root@harbor \~\]# scp /usr/lib/systemd/system/docker.service 192.168.100.133:/usr/lib/systemd/system/ ****所有主机重启docker服务**** \[root@harbor \~\]# systemctl daemon-reload \[root@harbor \~\]# systemctl restart docker ![](https://file.jishuzhan.net/article/1691974506916089857/538711c7a6774f64abe25a3935eb90c0.png) ### ****2、**** ****重启harbor,**** ****导入EFK镜像**** \[root@harbor \~\]# sh install.sh ![](https://file.jishuzhan.net/article/1691974506916089857/9c6e344f3bdd459bb4dabee879886230.png) \[root@harbor \~\]# docker login -u admin -p Harbor12345 http://192.168.100.134 ![](https://file.jishuzhan.net/article/1691974506916089857/b0156e94f1f64b6685db16309e0c0f70.png) \[root@harbor \~\]# cd efk \[root@harbor \~\]# ls ![](https://file.jishuzhan.net/article/1691974506916089857/c0071effee8147c996d102ff34109cfc.png) \[root@harbor \~\]# docker load \< elasticsearch-7.4.2.tar ![](https://file.jishuzhan.net/article/1691974506916089857/718eca07cf6b43d397adbaf4a513189b.png) \[root@harbor \~\]# docker load \< fluentd-es.tar ![](https://file.jishuzhan.net/article/1691974506916089857/84d0cbbf89f64ef0847db0a3bce9e038.png) \[root@harbor \~\]# docker load \< kibana-7.4.2.tar ![](https://file.jishuzhan.net/article/1691974506916089857/61b4210994ec435e983754878ac6f962.png) \[root@harbor \~\]# docker load \< alpine-3.6.tar ![](https://file.jishuzhan.net/article/1691974506916089857/eacbb368efa0402baaba8879c07c4e81.png) > \[root@harbor \~\]# docker tag b1179d 192.168.100.134/efk/elasticsearch:7.4.2 > > \[root@harbor \~\]# docker tag 636f3d 192.168.100.134/efk/fluentd-es-root:v2.5.2 > > \[root@harbor \~\]# docker tag 43773d 192.168.100.134/efk/alpine:3.6 > > \[root@harbor \~\]# docker tag 230d3d 192.168.100.134/efk/kibana:7.4.2 ![](https://file.jishuzhan.net/article/1691974506916089857/61e54059e739484d959e83532a9b0d11.png) > \[root@harbor \~\]# docker push 192.168.100.134/efk/elasticsearch:7.4.2 > > \[root@harbor \~\]# docker push 192.168.100.134/efk/fluentd-es-root:v2.5.2 > > \[root@harbor \~\]# docker push 192.168.100.134/efk/kibana:7.4.2 > > \[root@harbor \~\]# docker push 192.168.100.134/efk/alpine:3.6 ![](https://file.jishuzhan.net/article/1691974506916089857/5f56f3a6d37e44748a72f9ced8a4620e.png) ![](https://file.jishuzhan.net/article/1691974506916089857/36771dd27bf4494d95e587b73579b427.png) ## ****四、**** ****部署EFK业务环境**** ### ****1、准备组件Yaml文件**** ****Yaml文件中涉及到镜像地址和 nodeSelector 选择器地址需要注意修改。**** > \[root@k8s-master \~\]# mkdir efk #上传对应的yaml文件 > > \[root@k8s-master \~\]# cd efk/ > > \[root@k8s-master efk\]# grep "image:" elasticsearch.yaml > > image: 192.168.100.134/efk/elasticsearch:7.4.2 > > image: 192.168.100.134/efk/alpine:3.6 > > image: 192.168.100.134/efk/alpine:3.6 ![](https://file.jishuzhan.net/article/1691974506916089857/d4386678003c4c9a9f5212adf0fa13c4.png) NodeSelector 节点选择器的修改,实际作用是决定将 Elasticsearch 服务部署到哪个节点。当前配置文件内是调度到 k8s-node01 节点,请根据实际负载情况进行调整。节点名称可以通过 kubectl get nodes 获取,在选择节点时务必确保节点有足够的资源。 \[root@k8s-master efk\]# grep -A1 "nodeSelector" elasticsearch.yaml > nodeSelector: > > kubernetes.io/hostname: k8s-node01 ![](https://file.jishuzhan.net/article/1691974506916089857/d8ab58cb5b054493a48a1a22fda60fb3.png) ****对kibana.yaml文件镜像地址和调度节点进行修改,将 Kibana 部署到 k8s-node02 节点。**** \[root@k8s-master efk\]# grep "image:" kibana.yaml > image: 192.168.100.134/efk/kibana:7.4.2 \[root@k8s-master efk\]# grep -A1 "nodeSelector" kibana.yaml > nodeSelector: > > kubernetes.io/hostname: k8s-node02 ![](https://file.jishuzhan.net/article/1691974506916089857/0c96c80385db4e84aa5d4b4084c5b8cc.png) ****修改 fluentd.yaml的镜像地址**** \[root@k8s-master efk\]# grep "image:" fluentd.yaml > image: 192.168.100.134/efk/fluentd-es-root:v2.5.2 ****修改 test-pod.yaml的镜像地址**** \[root@k8s-master efk\]# grep "image:" test-pod.yaml > image: 192.168.100.134/efk/alpine:3.6 ![](https://file.jishuzhan.net/article/1691974506916089857/fe5b95dcfcc24d51b12d7ab5013baa46.png) ### ****2、部署Elasticsearch**** ****1)**** ****创建命名空间**** 创建名为 logging 的命名空间,用于存放 EFK 相关的服务。在 k8s-master节点的/opt/efk 目录下。 > ****\[root@k8s-master efk\]# kubectl create -f namespace.yaml**** > > ****\[root@k8s-master efk\]# kubectl get namespaces \| grep logging**** ![](https://file.jishuzhan.net/article/1691974506916089857/7723fad11bdb474693cea41f4ff461fd.png) ****2)**** ****创建 es 数据存储目录**** Elasticsearch 服务通常可以简写为 es。到 k8s-node01 节点创建数据目录/esdata。 > ****\[root@k8s-node01 \~\]# mkdir /esdata**** ![](https://file.jishuzhan.net/article/1691974506916089857/4f1ca85731594c898d44dfb3234237e2.png) ****3)**** ****部署 es 容器**** 进入 k8s-master节点的/efk 目录,部署 es 容器,执行如下操作。 > ****\[root@k8s-master \~\]# cd efk/**** > > ****\[root@k8s-master efk\]# kubectl create -f elasticsearch.yaml**** 等待片刻,即可查看到 es 的 Pod,已经部署到 k8s-node01 节点,状态变为 running。 > ****\[root@k8s-master efk\]# kubectl -n logging get pods -o wide**** > > ****\[root@k8s-master efk\]# kubectl -n logging get svc**** ![](https://file.jishuzhan.net/article/1691974506916089857/e14a8a6215c04d119b518dd1b6fa6775.png) ****通过 curl 命令访问服务,验证 es 是否部署成功。**** \[root@k8s-master efk\]# curl 10.98.29.202:9200 ![](https://file.jishuzhan.net/article/1691974506916089857/f2e2b863362c447ab27d5749184b1343.png) ### ****3、部署kibana**** 进入 k8s-master 的/opt/efk 目录,执行如下命令。 > ****\[root@k8s-master efk\]# kubectl create -f kibana.yaml**** > > ****service/kibana created**** ****查看 Pod 的状态。**** > ****\[root@k8s-master efk\]# kubectl -n logging get pods**** 查看对应的 Service,得到 NodePort 值为 31732,此端口为随机端口,不同环境会不一致,请以实际结果为准。 > ****\[root@k8s-master efk\]# kubectl -n logging get svc \|grep**** ![](https://file.jishuzhan.net/article/1691974506916089857/0aeaf77f3b9a47ff9a9b191338458a63.png) 通过访问 192.168.100.131:31591 进入到 kibana 的访问界面,观察是否可以正常打开,其中 31591 端口需要替换成实际的端口号。若能正常访问,说明 Kibana 连接 es 已经正常。 ![](https://file.jishuzhan.net/article/1691974506916089857/b71280c693074f4784065e1385b45dd7.png) ### ****4、部署Fluentd**** ****1)**** ****给集群节点打标签**** 为了自由控制需要采集集群中节点上业务容器的服务日志。因此,需要给 k8s-node01和 k8s-node02 节点打上 fluentd=true 的标签 label。 > ****\[root@k8s-master efk\]# kubectl label node k8s-node01 fluentd=true**** > > ****\[root@k8s-master efk\]# kubectl label node k8s-node02 fluentd=true**** ![](https://file.jishuzhan.net/article/1691974506916089857/c1c02740e1624df9b4617467520143b4.png) k8s-node01 和 k8s-node02 已经打上了 fluentd=true 的 label,那么 Fluentd 服务就会启动到这两个节点,也就意味着运行在这两个节点的 Pod 日志会被收集起来。 ****2)**** ****启动 Fluentd 服务**** 在 k8s-master节点的/opt/efk 目录,启动 Fluentd 服务 > ****\[root@k8s-master efk\]# kubectl create -f fluentd-es-config-main.yaml**** > > ****\[root@k8s-master efk\]# kubectl create -f fluentd-configmap.yaml**** > > ****\[root@k8s-master efk\]# kubectl create -f fluentd.yaml**** ![](https://file.jishuzhan.net/article/1691974506916089857/17217e3344b14561822b4a56871e6fa3.png) ****3)**** ****查看 Pod**** ****信息**** ****是否已经在 k8s-node01 和 k8s-node02 节点启动成功。**** > \[root@k8s-master efk\]# kubectl -n logging get pods ![](https://file.jishuzhan.net/article/1691974506916089857/d54e9ab26e094583b0c239969b59dc8a.png) ### ****5、验证容器日志收集**** ****,**** ****创建测试容器**** 进入 k8s-master的/opt/efk 目录,执行如下命令。 > ****\[root@k8s-master efk\]# kubectl create -f test-pod.yaml**** > > ****\[root@k8s-master efk\]# kubectl get pods**** ![](https://file.jishuzhan.net/article/1691974506916089857/fd48619dd0494467b9116b8b04b45645.png) ### ****6、配置 Kibana**** ![](https://file.jishuzhan.net/article/1691974506916089857/9058a63161f4403eb152ea806d60298f.png) ![](https://file.jishuzhan.net/article/1691974506916089857/ecda4315ab064ccd8df9156d8cf77fbd.png) 索引创建完成后,可以发现已经生成了多个索引域,稍等片刻再次点击左上角的 discover 图标,进入日志检索页面。 ![](https://file.jishuzhan.net/article/1691974506916089857/82d6f0ed52424b7080664b291a7753b1.png) 然后通过索引键去过滤,比如根据Kubernetes.host、Kubernetes.container_name、 kubernetes.container_image_id等去做过滤。 ![](https://file.jishuzhan.net/article/1691974506916089857/bb3903f6e064496e83cbebb4fc04cb42.png) 通过其他元数据也可以过滤日志数据,比如单击任何日志条目以查看其他元数据,****如容器名称、Kubernetes 节点、命名空间等。**** ![](https://file.jishuzhan.net/article/1691974506916089857/27320203888d441c9e06f4308b36a78e.png) ****到这里,在 Kubernetes 集群上已经成功部署了 EFK。****

相关推荐
开挖掘机上班1 小时前
基于Alpine构建MySQL镜像
mysql·docker·容器
todoitbo2 小时前
docker搭建freeswitch实现点对点视频,多人视频
docker·容器·音视频·freeswitch·视频聊天
William一直在路上3 小时前
回顾一下Docker的基本操作
docker·容器·eureka
阿里云云原生4 小时前
Nacos 开源 MCP Router,加速 MCP 私有化部署
云原生
赵成ccc4 小时前
如何进行 Docker 数据目录迁移
docker·容器·eureka
康闯4 小时前
Docker 部署emberstack/sftp 镜像
java·docker·容器
William一直在路上6 小时前
kube-proxy 中 IPVS 与 iptables
云原生
陈小唬8 小时前
Docker 拉取镜像并离线迁移至云桌面指南(以Redis为例)
redis·docker·容器
探索云原生8 小时前
K8s 自定义调度器 Part1:通过 Scheduler Extender 实现自定义调度逻辑
docker·云原生·容器·kubernetes·go