Как перенести текущие журналы из одного кластера K8s в ElasticSearch в другом кластере K8s? - PullRequest
0 голосов
/ 13 июня 2019

Как передать текущие журналы из одного кластера K8s в ElasticSearch в другом кластере K8s?

У меня есть сценарий, в котором у нас есть беглые демоны, работающие на нескольких кластерах K8s (C-1, C-2, C-3) и у нас работает ElasticSearch на другом кластере K8s (C-4).Мы хотели подтолкнуть все текущие журналы от C-1, C-2 и C-3 к упругому поиску на C-4.

Вот что я сделал:

  1. Создана запись входного хоста со службой ES в кластере C-4, которая выглядит как

    es-entrypoint.logging.svc.cluster.local

Вышеуказанный входной хост может быть доступен из любого кластераиспользуя главный IP-адрес кластера C4.

$curl -H "Host: es-entrypoint.logging.svc.cluster.local" http://10.11.1.44

{
  "name" : "elasticsearch-logging-p57wl",
  "cluster_name" : "kubernetes-logging",
  "cluster_uuid" : "ox8jE56mTg630zdKtThPHQ",
  "version" : {
    "number" : "6.3.2",
    "build_flavor" : "oss",
    "build_type" : "tar",
    "build_hash" : "053779d",
    "build_date" : "2018-07-20T05:20:23.451332Z",
    "build_snapshot" : false,
    "lucene_version" : "7.3.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
Затем я создал службу без селектора в кластерах C-1, C-2 и C-3.
---
apiVersion: v1
kind: Endpoints
metadata:
  name: es-entrypoint
  namespace: logging
subsets:
  - addresses:
    - ip: 10.11.1.44
    ports:
    - name: es-http
      port: 80
      protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: es-entrypoint
  namespace: logging
spec:
  ports:
  - name: es-http
    port: 80
    protocol: TCP
    targetPort: 80
  sessionAffinity: None
  type: ClusterIP

Теперь я могу получить доступ к URI входящего хоста из модуля в C-1, C-2 и C-3 кластеров с использованием curl http://es-entrypoint.logging.svc.cluster.local:80.Это хорошо работает с кибаной и всеми модулями, кроме flunetD.

Ошибка

2019-06-13 06:06:57 +0000 [warn]: [asticsearch] не удалосьочистить буфер.retry_time = 10 next_retry_seconds = 2019-06-13 06:07:31 +0000 chunk = "58b2ddd4f511bc47e5bf7705f177cb2b" error_class = Fluent :: Plugin :: ElasticsearchOutput :: ConnectionFailure error = "Не удается связаться с кластером Elasticsearch \ {{host>es-entrypoint.logging.svc.cluster.local \ ",: port => 80,: схема => \" http \ "})!"

Пожалуйста, найдите свободный yml:

https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.2/cluster/addons/fluentd-elasticsearch/fluentd-es-ds.yaml

Любая идея ??

...