【云原生】【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。****

相关推荐
伊织code1 小时前
MoonBit 月兔 - 云和边缘计算 AI云原生编程语言及开发平台
人工智能·云原生·边缘计算
钱彬 (Qian Bin)4 小时前
解决docker load加载tar镜像报json no such file or directory的错误
运维·docker·容器·错误·tar·docker load
追风筝的小青年5 小时前
ubuntu24中部署k8s 1.30.x-底层用docker
docker·容器·kubernetes
哈里谢顿6 小时前
Kubernetes中的Deployment、StatefulSet、DaemonSet详细解释
kubernetes
木雷坞8 小时前
docker国内镜像源列表
运维·docker·容器
David爱编程8 小时前
网络策略NetworkPolicy与RBAC授权机制: Kubernetes安全体系的双重防线
云原生·容器·kubernetes
gptplus15 小时前
AI + 云原生:正在引爆下一代应用的技术革命
人工智能·云原生
天上掉下来个程小白18 小时前
Docker-07.Docker基础-数据卷挂载
运维·docker·微服务·容器
迷失蒲公英18 小时前
Docker容器中文PDF生成解决方案
docker·容器·pdf
9命怪猫18 小时前
K8S服务发现原理及开发框架的配合
云原生·容器·kubernetes·服务发现