У меня есть модуль с двумя контейнерами, один создает файл, а другой удаляет его, я смог создать файл, но не удалить его. Я хочу, чтобы он удалял файлы каждые 2 часа, как я могу заставить его работать чисто? мы не хотим использовать работу cron...
apiVersion: v1
kind: Pod
metadata:
name: its
spec:
volumes:
- name: common
emptyDir: {}
containers:
- name: 1st
image: nginx
volumeMounts:
- name: common
mountPath: /usr/share/nginx/html
- name: 2nd
image: debian
volumeMounts:
- name: common
mountPath: /html
command: ["/bin/sh", "-c"]
args:
- while true; do
date >> /html/index.html;
sleep 7200;
done
Чтобы delete the files every 2 hours вы должны использовать CronJob kubernetes.io/docs/concepts/workloads/controllers/cron-jobs . Я не могу понять, почему вы не хотите его использовать.
В вашем вопросе и попытке, которую вы предприняли, много недостатков и неясностей. Например, вы хотели создать файл из контейнера1, но в контейнере1 нет такого же кода, вы хотели удалять файл каждые 2 часа, но нет кода для удаления файла, вы выполняете периодическую задачу в своем модуле чистым способом, но не любите использовать cronJob. Из-за этих неясностей я помечаю этот пост как ЗАКРЫТЬ.





Используя контейнер nginx с базой alpine, вам необходимо установить crond, вот пример: Включить crond в контейнере Alpine
Теперь вы можете запустить задачу cron в том же контейнере, в котором находятся файлы, поэтому вам нужен только 1 контейнер для модуля.
Кроме того, вот еще один пример того, как запустить crond в контейнере alpine docker:
https://devopsheaven.com/cron/docker/alpine/linux/2017/10/30/run-cron-docker-alpine.html
Это то, что работает для меня
apiVersion: v1
kind: Pod
metadata:
name: mc1
spec:
volumes:
- name: html
emptyDir: {}
containers:
- name: 1st
image: nginx
command: ["/bin/sh", "-c"]
args:
- while true; do
touch /usr/share/nginx/html/test.txt;
ls /usr/share/nginx/html/;
echo "file created cotnainer 1";
sleep infinity;
done
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
- name: 2nd
image: debian
volumeMounts:
- name: html
mountPath: /html
command: ["/bin/sh", "-c"]
args:
- while true; do
ls /html;
rm /html/test.txt;
echo "container 2 - file removed";
ls /html;
sleep 7200;
done
я создаю файл из container 1 и удаляю container 2 какую ошибку вы получаете?
Я хотел знать, как это работает ?? ? A/c to ques, оп хотел создать файл из container1, я не вижу ничего подобного. Во-вторых, вы создаете файл в container2 date >> /html/index.html; и сразу после этого вы удаляете файл rm /html/index.html и спите 2 часа ? ? ? вместо этого ОП хотел удалять файл каждые 2 часа.
извините, моя ошибка обновил ответ.
Я думаю, вам нужно выполнить код и добавить свой вывод здесь, но я все еще не думаю, что это сработает. ? ПРИМЕЧАНИЕ: вы можете тестировать с 10-минутным интервалом.
не могли бы вы проверить сейчас один раз, и файл для ссылки, я не думаю, что он будет применять как есть и создавать файл из образа на основе nginx.
не стесняйтесь ссылаться на эти журналы и вывод для ref: i.stack.imgur.com/9YN26.png через 10 минут оба контейнера будут иметь 10-минутное время ожидания.
Я не вижу, чтобы вы пытались его удалить. Вы только записываете дату в этот файл.