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?
4 Réponses :
Pouvez-vous accéder au service elasticsearch à partir du pod Kibana. Supprimez le service elasticsearch unique tout autour. Ce n'est pas obligatoire.
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
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
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.
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.
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