im exécutant le travail cron dans kubernetes, les travaux se terminent avec succès et je journalise la sortie dans le fichier journal à l'intérieur (chemin: stockage/journaux) mais je ne peux pas accéder à ce fichier car le conteneur est terminé voici mon travail yaml.
apiVersion: v1
items:
- apiVersion: batch/v1beta1
kind: CronJob
metadata:
labels:
chart: cronjobs-0.1.0
name: cron-cronjob1
namespace: default
spec:
concurrencyPolicy: Forbid
failedJobsHistoryLimit: 1
jobTemplate:
spec:
template:
metadata:
labels:
app: cron
cron: cronjob1
spec:
containers:
- args:
- /usr/local/bin/php
- -c
- /var/www/html/artisan bulk:import
env:
- name: DB_CONNECTION
value: postgres
- name: DB_Host
value: postgres
- name: DB_PORT
value: "5432"
- name: DB_DATABASE
value: xxx
- name: DB_USERNAME
value: xxx
- name: DB_PASSWORD
value: xxxx
- name: APP_KEY
value: xxxxx
image: registry.xxxxx.com/xxxx:2ecb785-e927977
imagePullPolicy: IfNotPresent
name: cronjob1
ports:
- containerPort: 80
name: http
protocol: TCP
imagePullSecrets:
- name: xxxxx
restartPolicy: OnFailure
terminationGracePeriodSeconds: 30
schedule: '* * * * *'
successfulJobsHistoryLimit: 3
puis-je de toute façon afficher le contenu de mon fichier journal sur la commande kubectl log ou d'autres alternatives?
Je suppose que vous savez que le pod est conservé comme vous l'avez successfulJobsHistoryLimit: 3
. Vraisemblablement, votre point de vue est que votre journalisation est enregistrée dans un fichier et non stdout et que vous ne le voyez donc pas avec kubectl logs
. Si c'est le cas, vous pouvez également vous connecter à stdout ou mettre quelque chose dans le travail pour enregistrer le contenu du fichier à la fin, par exemple dans un crochet PreStop .
Cronjob
exécute le pod selon spec.schedule
. Une fois la tâche terminée, le statut du pod sera défini sur completed
, mais cronjob
le contrôleur ne supprimera pas le pod une fois terminé. Et le contenu du fichier journal est toujours là dans le système de fichiers conteneur du pod. Vous devez donc faire:
$ POD_NAME=kubectl get pods | grep "cron-cronjob1-"
$ kubectl logs -f -n default <pod_name>