Helm 部署 ELK 7.3
ELK(ES、Kibana) On K8S.
情景
在 K8S 上部署有状态应用 ELK,便于理解 K8S StatefulSet,以及日常测试数据的上报(应用拨测的 Heartbeat、调用链追踪的 APM、性能指标 metabeat 等)。
前提条件
操作步骤
1. 部署 ES {#installES}
1.1 部署
默认参数即可
helm install --name elasticsearch elastic/elasticsearch
1
1.2 查看运行状态
查看 StatefulSet
# kubectl get statefulset elasticsearch-master -o wide
NAME READY AGE CONTAINERS IMAGES
elasticsearch-master 3/3 33d elasticsearch docker.elastic.co/elasticsearch/elasticsearch:7.3.0
1
2
3
2
3
查看 Pod,有 3 个节点,同时 Pod 命名带有序号,和 Deployment 的随机命名 Pod 不一样;
# kubectl get pod -l app=elasticsearch-master
NAME READY STATUS RESTARTS AGE
elasticsearch-master-0 2/2 Running 0 62m
elasticsearch-master-1 2/2 Running 0 66m
elasticsearch-master-2 2/2 Running 0 67m
1
2
3
4
5
2
3
4
5
Ready 列是 2,因为 Pod 中被 Inject 了 istio-proxy。
2. 部署 Kibana {#installKibana}
一行命令部署 Kibana
helm install --name kibana elastic/kibana
1
通过 kubectl get deploy 和 pod 了解部署状态;
小知识
Kibana 直接通过 K8S 内部 DNS 域名 访问 ES。
查看容器内的配置
# kubectl exec kibana-kibana-7cbc5db55c-6qct7 -c kibana -- cat /usr/share/kibana/config/kibana.yml
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
1
2
3
4
5
6
7
2
3
4
5
6
7
由于集群启用了 Istio 了,默认往 Pod 中注入了
istio-proxy
容器,所以需要使用-c
指定需要连接的容器。否则,会提示:Defaulting container name to kibana. Use 'kubectl describe pod/kibana-kibana-7cbc5db55c-6qct7 -n default' to see all of the containers in this pod.
3. 访问测试 {#test}
3.1 给 Kibana 添加 Ingress
通过 Ingress 添加访问入口
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: kibana
namespace: default
spec:
rules:
- host: <YourDomain> ## 访问 Kibana 的域名
http:
paths:
- backend:
serviceName: kibana-kibana
servicePort: 5601
path: /
status:
loadBalancer:
ingress:
- ip: <YourLoadBalancerIP> ## LB 的 IP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
3.2 访问测试
访问域名,即可打开 Kibana 7.3 版本;
查看集群的运行状态
也可以通过命令行查看
$ curl -s <YourESHost>/_cluster/health | jq .
{
"cluster_name": "elasticsearch",
"status": "yellow",
"timed_out": false,
"number_of_nodes": 3,
"number_of_data_nodes": 3,
"active_primary_shards": 19,
"active_shards": 35,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 3,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": 92.10526315789474
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
reference
- [1] elastic. helm-chartsopen in new window