CKA:用helm3部署EFK
运行环境:
其中vms61是master,vms62和vms62位worker。
在所有节点上修改/var/lib/kubelet/config.yaml,在最后一行添加:
featureGates:
CSIMigration: false
否则查看pod状态时会报如下错误:
MountVolume.SetUp failed for volume "default-token-bd9jk" : failed to sync secret cache: timed out waiting for the condition
不过不改也没关系。
1.增加efk官方helm源
[root@vms61 ~]# helm repo add elastic https://helm.elastic.co
"elastic" has been added to your repositories
[root@vms61 ~]#
[root@vms61 ~]# helm repo list
NAME URL
azure http://mirror.azure.cn/kubernetes/charts/
ali https://apphub.aliyuncs.com
elastic https://helm.elastic.co
[root@vms61 ~]#
2.下载并安装elasticsearch
[root@vms61 ~]# mkdir efk ; cd efk
[root@vms61 efk]#
[root@vms61 efk] helm pull elastic/elasticsearch
用命令tar zxvf elasticsearch-7.9.1.tgz解压下载下来的elasticsearch-7.9.1.tgz,得到一个目录elasticsearch。
用vim 编辑elasticsearch/values.yaml,修改如下部分:
因为我们环境一台master,2台worker,所以replicas修改为2。
因为不准备使用持久性存储,所以这里把persistence下面的enabled值有true改为false。
这里用的指定了elasticsearch用的镜像,最好是提前在所有节点上提前下载下来,之后保存退出。
[root@vms61 efk]# helm install elastic elasticsearch
NAME: elastic
LAST DEPLOYED: Sat Sep 12 18:38:08 2020
NAMESPACE: ns6
STATUS: deployed
REVISION: 1
NOTES:
1. Watch all cluster members come up.
$ kubectl get pods --namespace=ns6 -l app=elasticsearch-master -w
2. Test cluster health using Helm test.
$ helm test elastic --cleanup
[root@vms61 efk]#
命令里的elastic是应用的名字可以随意写,elasticsearch是解压出来的文件夹。
这里大概1分钟左右,对应的pod会运行起来:
[root@vms61 efk]# kubectl get pods
NAME READY STATUS RESTARTS AGE
elasticsearch-master-0 1/1 Running 0 80s
elasticsearch-master-1 1/1 Running 0 79s
[root@vms61 efk]#
3.下载并安装filebeat
[root@vms61 efk] helm pull elastic/filebeat
用命令tar zxvf filebeat-7.9.1.tgz解压下载下来的 filebeat-7.9.1.tgz,得到一个目录filebeat。
用vim 编辑filebeat/values.yaml,查看如下部分:
建议提前把所需镜像在所有节点上下载下来,其他不需要编辑什么,保存退出。
开始安装filebeat:
[root@vms61 efk]# helm install fb filebeat
NAME: fb
LAST DEPLOYED: Sat Sep 12 18:47:20 2020
NAMESPACE: ns6
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Watch all containers come up.
$ kubectl get pods --namespace=ns6 -l app=fb-filebeat -w
[root@vms61 efk]#
命令里的fb是应用的名字可以随意写,filebeat是解压出来的文件夹。
大概20秒就好:
[root@vms61 efk]# kubectl get pods
NAME READY STATUS RESTARTS AGE
elasticsearch-master-0 1/1 Running 0 9m33s
elasticsearch-master-1 1/1 Running 0 9m32s
fb-filebeat-lgm76 1/1 Running 0 21s
fb-filebeat-trz5m 1/1 Running 0 21s
[root@vms61 efk]#
3.安装metricbeat
下载metricbeat:
[root@vms61 efk] helm pull elastic/metricbeat
用命令tar zxvf metricbeat-7.9.1.tgz解压下载下来的 metricbeat-7.9.1.tgz,得到一个目录metricbeat。
类似前面的方法把所有的镜像提前在所有节点下载下来,开始安装:
[root@vms61 efk]# helm install metric metricbeat
NAME: metric
LAST DEPLOYED: Sat Sep 12 18:53:55 2020
NAMESPACE: ns6
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Watch all containers come up.
$ kubectl get pods --namespace=ns6 -l app=metric-metricbeat -w
[root@vms61 efk]#
命令里的metric是应用的名字可以随意写,metricbeat是解压出来的文件夹。
这里大概40秒钟左右,对应的pod会运行起来:
[root@vms61 efk]# kubectl get pods
NAME READY STATUS RESTARTS AGE
...输出...
metric-kube-state-metrics-76c5b9fdbf-4jmnr 1/1 Running 0 46s
metric-metricbeat-bbbxx 1/1 Running 0 46s
metric-metricbeat-metrics-696b596c6f-lwp74 1/1 Running 0 46s
metric-metricbeat-z7x7v 1/1 Running 0 46s
[root@vms61 efk]#
4.下载安装kibana
[root@vms61 efk]# helm pull elastic/kibana
用命令tar zxvf kibana-7.9.1.tgzz解压下载下来的kibana-7.9.1.tgz,得到一个目录kibana。
类似前面的方法把所有的镜像提前在所有节点下载下来,并把服务类型改为NodePort:
保存退出之后,开始安装:
[root@vms61 efk]# helm install kb kibana
NAME: kb
LAST DEPLOYED: Sat Sep 12 18:58:36 2020
NAMESPACE: ns6
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@vms61 efk]#
命令里的kb是应用的名字可以随意写,kibana是解压出来的文件夹。
这里大概2分钟左右,对应的pod会运行起来:
[root@vms61 efk]# kubectl get pods
NAME READY STATUS RESTARTS AGE
...输出...
kb-kibana-d97c78c6-nqt5p 1/1 Running 0 2m1s
...输出...
[root@vms61 efk]#
注意两台worker的配置是:分别8G内存,4核CPU
5.访问kibana
通过kubectl get svc查看当前kibana对应的NodePort端口为30729,在浏览器里输入192.168.26.61:30729回车