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

查看 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

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

由于集群启用了 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

3.2 访问测试

访问域名,即可打开 Kibana 7.3 版本;

-w1677

查看集群的运行状态

-w1678

也可以通过命令行查看

$ 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

reference