"kubectl logs" mi mostra lo stderr/stdout di un contenitore Kubernetes. Come posso ottenere lo stderr/stdout aggregato di un set di pod, preferibilmente quelli creati da un determinato controller di replica?Come posso ottenere i log da tutti i pod di un controller di replica di Kubernetes?
risposta
È possibile utilizzare le etichette
kubectl logs -l app=elasticsearch
Buona soluzione e molto probabilmente sufficiente per rispondere alla domanda originale ma non coda: "errore: solo uno di seguito (- f) o il selettore (-l) è permesso ". –
Inoltre, no '--all-namespace". –
Un'opzione è impostare la registrazione del cluster tramite Fluentd/ElasticSearch come descritto in https://kubernetes.io/docs/user-guide/logging/elasticsearch/. Una volta che i registri sono in ES, è facile applicare i filtri in Kibana per visualizzare i registri da determinati contenitori.
Ho creato un piccolo script di bash chiamato kubetail
che lo rende possibile. Per esempio alla coda tutti i registri per cialde chiamato "app1" Si può fare:
kubetail app1
È possibile trovare lo script here.
Io uso questo script semplice per ottenere un log dai baccelli di una distribuzione:
#!/usr/bin/env bash
DEPLOYMENT=$1
for p in $(kubectl get pods | grep ^${DEPLOYMENT}- | cut -f 1 -d ' '); do
echo ---------------------------
echo $p
echo ---------------------------
kubectl logs $p
done
Usage: log_deployment.sh "distribuzione-name".
Script mostrerà il registro di tutti i pod che iniziano con quel "nome di distribuzione".
Se i baccelli vengono chiamati per significato si potrebbe utilizzare semplici Plain Old Bash:
keyword=nodejs
command="cat <("
for line in $(kubectl get pods | \
grep $keyword | grep Running | awk '{print $1}'); do
command="$command (kubectl logs --tail=2 -f $line &) && "
done
command="$command echo)"
eval $command
Spiegazione: Loop attraverso l'esecuzione di baccelli con il nome contenente "nodejs". Coda il log per ognuno di essi in parallelo (la singola e commerciale viene eseguita in background) assicurando che se uno dei pod non dovesse riuscire, l'intero comando verrà chiuso (doppia e commerciale). Cat i flussi da ciascuno dei comandi di coda in un flusso unico. Eval è necessario per eseguire questo comando costruito dinamicamente.
- 1. Controller di replica VS Deployment in Kubernetes
- 2. Comando per eliminare tutti i pod in tutti gli spazi dei nomi di Kubernetes
- 3. Riavvia i pod durante gli aggiornamenti di configmap in Kubernetes?
- 4. Come si elencano in modo pulito tutti i contenitori in un pod kubernetes?
- 5. Come posso tacitare gli avvertimenti da tutti i pod ad eccezione dei pod locali?
- 6. Come posso ottenere tutti i messaggi da un broker ActiveMQ?
- 7. Come posso ottenere tutti i cookie di un CookieContainer?
- 8. Come ridurre i limiti della CPU delle risorse di sistema di kubernetes?
- 9. Symfony2: ottiene l'elenco di tutti i percorsi di un controller
- 10. Come ottenere tutti i nomi di tabelle da un database?
- 11. Configurazione di Kubernetes per collegare i contenitori
- 12. kubernetes API: aggiungere l'etichetta Pod
- 13. Ricerca di tutti i controller nell'applicazione
- 14. Nascondi tutti i controller di vista modale
- 15. Come ottenere l'ultimo SDK di GoogleMaps utilizzando i pod
- 16. Come passare l'id dell'istanza del pod kubernetes all'interno del pod all'avvio?
- 17. Come posso ottenere i byte di un GetObjectResponse da S3?
- 18. Come accedere alla API di Kubernetes da un contenitore di pod?
- 19. Ottenere tutti i subpacks da un pacchetto
- 20. Come ottenere tutti i commenti da Disqus?
- 21. Come rimuovere con garbo un nodo da Kubernetes?
- 22. Impossibile trovare i registri di Kubernetes kubelet
- 23. Come utilizzare i contenitori di finestra mobile locali con Kubernetes
- 24. Come posso ottenere tutti i metodi in un protocollo?
- 25. Come posso ottenere tutti i controlli da un modulo inclusi i controlli in qualsiasi contenitore?
- 26. Ottenere un elenco di tutti i tag tra due commit
- 27. Come posso scrivere un'estensione di protocollo per ottenere tutti i valori raw da un enum Swift
- 28. Posso ottenere i log di log dopo il riavvio del telefono?
- 29. Come modellare un cluster di failover PostgreSQL con Docker/Kubernetes?
- 30. Come ottenere tutti i dettagli di un contatto in Android
Vorrei anche sapere se è possibile. docker-compose ha questa caratteristica ed è molto utile. – hamx0r