Доступ к журналам в cron вакансиях kubernetes
Я запускаю задание cron в kubernetes, задания успешно завершаются, и я записываю выходные данные в файл журнала внутри (путь: хранилище / журналы), но я не могу получить доступ к этому файлу, потому что контейнер завершен, вот мое задание 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
В любом случае я могу получить отображение содержимого моего файла журнала при помощи команды kubectl log или других альтернатив?
2 ответа
Я думаю, вы знаете, что стручок хранится как у вас successfulJobsHistoryLimit: 3
, Предположительно, ваша точка зрения состоит в том, что ваша регистрация ведется в файл, а не в стандартный вывод, и поэтому вы не видите его с kubectl logs
, Если это так, возможно, вы также можете войти в stdout или поместить что-то в задание, чтобы в конце записать содержимое файла, например, в ловушку PreStop.
Cronjob
работает в соответствии с spec.schedule
, После выполнения задачи статус модуля будет установлен как completed
, но cronjob
контроллер не удаляет модуль после завершения. И содержимое файла журнала все еще там, в файловой системе контейнера контейнера. Так что вам нужно сделать:
- grep имя стручка
$ POD_NAME=kubectl get pods | grep "cron-cronjob1-"
$ kubectl logs -f -n default <pod_name>