一、准备工作
1、添加 Google incubator 仓库
在国内这里的仓库添加可能会失败,可以使用浏览器打开微软的仓库,自己下载相应文件。
- 微软仓库:https://mirror.azure.cn/kubernetes/charts-incubator
# 添加仓库
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
2、在node节点导入镜像
[root@k8s-node01 efk]# docker load -i elasticsearch-oss.tar
[root@k8s-node01 efk]# docker load -i fluentd-elasticsearch.tar
[root@k8s-node01 efk]# docker load -i kibana.tar
3、常用命令记录
# 删除应用
helm delete --purge efk1
# 强制删除pod
kubectl delete pods efk1-elasticsearch-data-0 --grace-period=0 --force -n efk
二、部署 Elasticsearch
1、部署过程
# 切换目录
cd /root/install-k8s/efk
# 创建命名空间
kubectl create namespace efk
# 下载(上面的仓库添加失败,这里直接用浏览器下载)
helm fetch incubator/elasticsearch
# 解压
tar -zxvf elasticsearch-1.10.2.tgz
cd elasticsearch
vim values.yaml
value.yaml
initImage:
repository: "busybox"
tag: "latest"
pullPolicy: "IfNotPresent" # 修改
cluster:
name: "elasticsearch"
......
env:
......
MINIMUM_MASTER_NODES: "1"
client:
name: client
replicas: 1 #修改
serviceType: ClusterIP
......
master:
name: master
exposeHttp: false
replicas: 1 #修改
heapSize: "512m"
persistence:
enabled: false #修改
......
data:
name: data
exposeHttp: false
replicas: 1 #修改
heapSize: "1536m"
persistence:
enabled: false #修改
# 执行安装
helm install --name els1 --namespace=efk -f values.yaml .
# 查看 pod 是否运行成功。
[root@k8s-master01 elasticsearch_back]# kubectl get pod -n efk -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
efk1-elasticsearch-client-5fdf79897-gj9xh 1/1 Running 0 78s 10.244.1.25 k8s-node01 <none> <none>
efk1-elasticsearch-data-0 1/1 Running 0 78s 10.244.1.26 k8s-node01 <none> <none>
efk1-elasticsearch-master-0 1/1 Running 0 78s 10.244.2.22 k8s-node02 <none> <none>
# 查看svc
[root@k8s-master01 ~]# kubectl get svc -n efk
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
efk1-elasticsearch-client ClusterIP 10.110.170.130 <none> 9200/TCP 3m55s
efk1-elasticsearch-discovery ClusterIP None <none> 9300/TCP 3m55s
# 进入 cirros 容器
# kubectl run cirror-$RANDOM --rm -it --image=cirros -- /bin/sh
[root@k8s-master01 elasticsearch_back]# kubectl run cirror-$RANDOM --rm -it --image=cirros -- /bin/sh
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
If you don't see a command prompt, try pressing enter.
# 在 cirros 容器中,访问查看
# curl Elasticsearch:Port/_cat/nodes
[root@k8s-master01 ~]# curl 10.104.59.118:9200/_cat/nodes
10.244.1.31 19 97 2 0.06 0.09 0.06 i - efk1-elasticsearch-client-5fdf79897-gj9xh
10.244.1.30 6 97 2 0.06 0.09 0.06 di - efk1-elasticsearch-data-0
10.244.2.37 19 97 2 0.01 0.16 0.14 mi * efk1-elasticsearch-master-0
三、部署 Fluentd
# 下载。已添加微软的stable仓库,国内下载可以成功。
helm fetch stable/fluentd-elasticsearch
# 更改其中 Elasticsearch 访问地址
vim values.yaml
elasticsearch:
host: '10.110.170.130' #修改为efk1-elasticsearch-client的service地址
port: 9200
scheme: 'http'
ssl_version: TLSv1_2
buffer_chunk_limit: 2M
buffer_queue_limit: 8
logstash_prefix: 'logstash'
# 安装
helm install --name flu1 --namespace=efk -f values.yaml .
# 查看
[root@k8s-master01 fluentd-elasticsearch]# kubectl get pod -n efk -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
efk1-elasticsearch-client-5fdf79897-gj9xh 1/1 Running 0 10m 10.244.1.25 k8s-node01 <none> <none>
efk1-elasticsearch-data-0 1/1 Running 0 10m 10.244.1.26 k8s-node01 <none> <none>
efk1-elasticsearch-master-0 1/1 Running 0 10m 10.244.2.22 k8s-node02 <none> <none>
flu1-fluentd-elasticsearch-7bsbc 1/1 Running 0 20s 10.244.1.27 k8s-node01 <none> <none>
flu1-fluentd-elasticsearch-bcmpk 1/1 Running 0 20s 10.244.2.24 k8s-node02 <none> <none>
四、部署 kibana
# 下载
helm fetch stable/kibana --version 0.14.8
# 解压
tar -zxvf kibana-0.14.8.tgz
# 修改
vim value.yaml
files:
kibana.yml:
## Default Kibana configuration from kibana-docker.
server.name: kibana
server.host: "0"
elasticsearch.url: http://10.110.170.130:9200 #修改为efk1-elasticsearch-client的service地址
# 安装
helm install --name kib1 --namespace=efk -f values.yaml .
# 查看kibana的svc,并修改为NodePort。使用浏览器访问。
kubectl edit svc kib1-kibana -n efk