web-dev-qa-db-fra.com

accéder aux journaux dans les tâches cron kubernetes

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?

6
Jack

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 .

5
Ryan Dawson

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:

  • grep le nom du pod $ POD_NAME=kubectl get pods | grep "cron-cronjob1-"
  • $ kubectl logs -f -n default <pod_name>
3
Shudipta Sharma