0
votes

Kubernetes + ELK: connecter Kibana au service elasticsearch

J'ai Elasticsearch POD + SERVICE et Kibana POD + SERVICE. J'essaie de connecter mon Kibana POD au service Elasticsearch, mais j'obtiens des erreurs de connexion.

Voici mon yaml de Kibaba POD:

apiVersion: v1
kind: Service
metadata:
  name: elasticsearch-service
spec:
  ports:
  - port: 9200
    name: serving
    protocol: TCP
  - port: 9300
    name: node2node
    protocol: TCP
  selector:
    app: elasticsearch

J'obtiens les erreurs suivantes :

 FATAL  ValidationError: child "elasticsearch" fails because [child "hosts" fails because [single value of "hosts" fails because ["hosts" must be a valid uri with a scheme matching the http|https pattern]]]

D'après ce que je comprends, j'obtiens une erreur car elasticsearch.url ne commence pas par http / https. J'ai donc essayé d'exécuter args: ["-c", "bin / kibana --elasticsearch.url = 'http: // elasticsearch-service: 9200'"] , mais j'obtiens aussi des erreurs de connexion (Je pense que parce que le service n'est pas destiné à être pointé avec http / https).

C'est le yaml du service elasticsearch (qui fonctionne bien):

apiVersion: v1
kind: Pod
metadata:
  name: kibana
  labels:
    app: kibana
spec:
  ports:
  containers:
  - name: kibana
    image: kibana:6.6.1
    command: ["/bin/sh"]
    args: ["-c", "bin/kibana --elasticsearch.url='elasticsearch-service:9200'"]

Avec d'autres POD, je pourrais me connecter avec elasticsearch-service: 9200, mais Kibana démend http / https. Comment puis-je les faire se connecter?


1 commentaires

Pourriez-vous partager les erreurs que vous obtenez lorsque vous passez un URI complet à kibana? Elasticsearch utilise http sur le port 9200 donc cela devrait fonctionner. Essayez peut-être de supprimer les guillemets simples autour de l'URI


4 Réponses :


0
votes

Pouvez-vous accéder au service elasticsearch à partir du pod Kibana. Supprimez le service elasticsearch unique tout autour. Ce n'est pas obligatoire.


0 commentaires

0
votes

De la documentation officielle docs :

la version docker-compose est:

apiVersion: v1
kind: Pod
metadata:
  name: kibana
  labels:
    app: kibana
spec:
  ports:
  containers:
  - name: kibana
    image: docker.elastic.co/kibana/kibana:6.6.1
    env:
    - name: ELASTICSEARCH_HOSTS
      value: "http://elasticsearch-service:9200"

Vous venez de le convertir en service kubernetes soit manuellement, soit en utilisant l'outil kompose et de l'exécuter.

Ou vous pouvez essayer pour insérer la variable env dans votre fichier existant et supprimer l'option d'url elasticsearch de la commande ur.

http://elasticsearch:9200

OU Si vous nommez simplement votre service elasticsearch comme elasticsearch, il devrait fonctionner sans passer n'importe quoi parce que la valeur par défaut est:

ELASTICSEARCH_HOSTS: http://elasticsearch.example.org

exemple avec votre nom de service existant:

version: '2'
services:
  kibana:
    image: docker.elastic.co/kibana/kibana:6.6.1
    environment:
      SERVER_NAME: kibana.example.org
      ELASTICSEARCH_HOSTS: http://elasticsearch.example.org


3 commentaires

n'a pas fonctionné. Je reçois les erreurs suivantes: {"Type": "Journal", "@ Timeestamp": "2019-03-09T18: 24: 22Z", "Tags": ["" wearing "," élasticesear ch "," admin "]," pid ": 1," message ":" Pas de connexions vivantes "} {" Type ":" Journal "," @ horodatage ":" 2019-03-09T18: 24: 22Z "," Tags " : ["w arning", "elasticsicsear ch", "admin"], "pid": 1, "message": "Impossible de relancer la connexion: Elasticsearch: 9200 "}


Vous verrez ces msgs pendant un moment car elasticsearch peut ne pas être actif au démarrage de kibana, assurez-vous que la recherche élastique est déjà en cours d'exécution, c'est quelque chose qui nécessite un dépannage


Assurez-vous également que vous pouvez accéder correctement à l'url elasticsearch que vous utilisez dans la configuration de kibana. peut-être que vous devez l'exposer en tant que service kubernetes



-1
votes

N'utilisez pas le commutateur --elasticsearch.url , utilisez plutôt la variable d'environnement ELASTICSEARCH_URL.

apiVersion: v1
kind: Pod
metadata:
  name: kibana
  labels:
    app: kibana
spec:
  ports:
  containers:
  - name: kibana
    image: kibana:6.6.1
    command: ["/bin/sh"]
    args: ["-c", "bin/kibana"]
    env:
    - name: ELASTICSEARCH_URL
      value: "http://elasticsearch-service:9200"

Je vous suggère également de lire ma réponse dans un autre fil pour une explication plus détaillée du DNS de k8s.


0 commentaires

1
votes

J'ai réussi à résoudre ce problème en ajoutant:

env:
  - name: ELASTICSEARCH_URL
    value: "http://elasticsearch-service:9200"
  - name: ELASTICSEARCH_PORT
    value: "9200"
  - name: SERVER_BASEPATH
    value: /api/v1/namespaces/default/services/kibana-service:5601/proxy
  - name: SERVER_HOST
    value: "0.0.0.0"

Ce qui est vraiment résolu, c'est l'environnement SERVER_BASEPATH.


0 commentaires