web-dev-qa-db-fra.com

Comment queue toutes les journaux dans un cluster Kubettes

J'ai essayé cette commande:

kubectl logs --tail

J'ai eu cette erreur/sortie d'aide:

Error: flag needs an argument: --tail


Aliases:
logs, log

Examples:
  # Return snapshot logs from pod nginx with only one container
  kubectl logs nginx

  # Return snapshot logs for the pods defined by label app=nginx
  kubectl logs -lapp=nginx

  # Return snapshot of previous terminated Ruby container logs from pod web-1
  kubectl logs -p -c Ruby web-1

  # Begin streaming the logs of the Ruby container in pod web-1
  kubectl logs -f -c Ruby web-1

  # Display only the most recent 20 lines of output in pod nginx
  kubectl logs --tail=20 nginx

  # Show all logs from pod nginx written in the last hour
  kubectl logs --since=1h nginx

  # Return snapshot logs from first container of a job named hello
  kubectl logs job/hello

  # Return snapshot logs from container nginx-1 of a deployment named nginx
  kubectl logs deployment/nginx -c nginx-1

ummm je veux juste voir tous les journaux, n'est-ce pas une chose commune de vouloir faire? Comment puis-je queue toutes les journaux pour un cluster?

7
Alexander Mills

La seule chose que vous puissiez faire est d'obtenir des journaux de plusieurs pods à l'aide de sélecteurs d'étiquettes comme celui-ci:

kubectl logs -f -l app=nginx -l app=php 

Pour obtenir tous les journaux de l'ensemble du cluster, vous devez configurer la collection de journaux centralisée comme Elasticsearch, Fluentd et Kibana. Le moyen le plus simple de le faire est l'installation à l'aide de cartes Helm comme décrites ici: https://linux-admin.tech/kubernettes/logging/2018/10/24/elk-stact-installation.html

2
Vasili Angapov

J'ai guère déjà vu quelqu'un qui tire tous les journaux de clusters entiers, car vous avez généralement besoin de bûches pour rechercher manuellement certains problèmes ou suivez (-f) une routine ou collecter des informations d'audit ou diffuser tous les journaux à un évier de journal pour les avoir préparé à la surveillance (par exemple, Prometheus).

Cependant, s'il y a un besoin d'aller chercher tous les journaux, en utilisant le --tail L'option n'est pas ce que vous cherchez (tail indique uniquement le dernier nombre de lignes d'une source de journal donnée et évite de renversé l'historique du journal complet d'une source de journal unique à votre terminal).

Pour Kubettes, vous pouvez écrire un script simple dans une langue de votre choix (bash, python, quoi que ce soit) à kubectl get all --show-all --all-namespaces et itérer sur les gousses à courir kubectl -n <namespace> logs <pod>; Mais soyez conscient qu'il pourrait y avoir plusieurs conteneurs dans une gousse avec des journaux individuels chacun, et se connecte également aux nœuds de cluster eux-mêmes, les modifications de l'état des déploiements, des méta-Informations supplémentaires qui changent, le provisionnement en volume et des tas plus.

C'est probablement la raison pour laquelle il est assez rare de tirer tous les journaux de tout un cluster et donc il n'y a donc pas de manière facile (raccourci) de le faire.

1
jbndlr

Je recommanderais d'utiliser un joli script Bash nommé Kubetail .

Vous pouvez simplement télécharger le fichier Script Bash et l'ajouter dans votre projet et exécuter par exemple:

$ ./some-tools-directory/kubetail.sh --selector app=user --since 10m

Pour voir tous les pods avec l'étiquette app=user.

Notez la belle affichage de couleurs par pod:

enter image description here


(*) Cours ./tools/kubetail.sh -h Pour voir de bonnes options d'exécution.

kubetail.sh <search term> [-h] [-c] [-n] [-t] [-l] [-d] [-p] [-s] [-b] [-k] [-v] [-r] [-i] -- tail multiple Kubernetes pod logs at the same time

where:
    -h, --help              Show this help text
    -c, --container         The name of the container to tail in the pod (if multiple containers are defined in the pod).
                            Defaults to all containers in the pod. Can be used multiple times.
    -t, --context           The k8s context. ex. int1-context. Relies on ~/.kube/config for the contexts.
    -l, --selector          Label selector. If used the pod name is ignored.
    -n, --namespace         The Kubernetes namespace where the pods are located (defaults to "default")
    -f, --follow            Specify if the logs should be streamed. (true|false) Defaults to true.
    -d, --dry-run           Print the names of the matched pods and containers, then exit.
    -p, --previous          Return logs for the previous instances of the pods, if available. (true|false) Defaults to false.
    -s, --since             Only return logs newer than a relative duration like 5s, 2m, or 3h. Defaults to 10s.
    -b, --line-buffered     This flags indicates to use line-buffered. Defaults to false.
    -e, --regex             The type of name matching to use (regex|substring)
    -j, --jq                If your output is json - use this jq-selector to parse it.
                            example: --jq ".logger + \" \" + .message"
    -k, --colored-output    Use colored output (pod|line|false).
                            pod = only color pod name, line = color entire line, false = don't use any colors.
                            Defaults to line.
    -z, --skip-colors       Comma-separated list of colors to not use in output
                            If you have green foreground on black, this will skip dark grey and some greens -z 2,8,10
                            Defaults to: 7,8
        --timestamps        Show timestamps for each log line
        --tail              Lines of recent log file to display. Defaults to -1, showing all log lines.
    -v, --version           Prints the kubetail version
    -r, --cluster           The name of the kubeconfig cluster to use.
    -i, --show-color-index  Show the color index before the pod name prefix that is shown before each log line.
                                                Normally only the pod name is added as a prefix before each line, for example "[app-5b7ff6cbcd-bjv8n]",
                                                but if "show-color-index" is true then color index is added as well: "[1:app-5b7ff6cbcd-bjv8n]".
                            This is useful if you have color blindness or if you want to know which colors to exclude (see "--skip-colors").
                                Defaults to false.

examples:
    kubetail.sh my-pod-v1
    kubetail.sh my-pod-v1 -c my-container
    kubetail.sh my-pod-v1 -t int1-context -c my-container
    kubetail.sh '(service|consumer|thing)' -e regex
    kubetail.sh -l service=my-service
    kubetail.sh --selector service=my-service --since 10m
    kubetail.sh --tail 1
0
RtmY

Pour vos données d'applications, vous souhaitez probablement simplement queue toutes les gousses dans le cluster.

Mais si vous voulez des journaux pour le plan de commande d'un cluster - vous pouvez utiliser: https://aws.amazon.com/ AWS-AWS/Whats-NEW/2019/04/Amazon-EKS-MAINTH-LIFIER-KUBERNESTES-CONTROL-Logs-to-Amazon - /

0
Alexander Mills