1. 왜? 이 방법을 찾게 되었는가.
- fedora core os를 사용하여 crontab 등록이 안된다.
- systemd에 데몬을 등록하는데 일정 시간에 작동되게 하고 싶다.
2.스크립트 만들기
2-1 daemon에 등록할 스크립트
- 각 worker node에 쌓이는 이미지를 지울 prune 명령어를 스크립트로 만듬
- crictl rmi --prune 은 사용하지 않는 이미지를 삭제하는 명령어
$ vi /root/image-remove.sh
#!/bin/bash
crictl rmi --prune
3. service 만들기
- 스크립트를 daemon으로 등록하기 위해 service를 만들어준다.
- 만들어주는 위치는 /etc/systemd/system/ 하위 이다.(반드시)
$ cd /etc/systemd/system/
$ vi image_remove.service
서비스 이름은 자유롭게 지어주면 되며 맨뒤에 xxx.service를 반드시 넣어준다.
[Unit]
Description=영어로 설명을 적어주시면됩니다.
[Service]
Type=oneshot
ExecStart=/root/image-remove.sh 스크립트 위치 적어준다.
[Install]
WantedBy=multi-user.target systemd enabled 하기 위해서
4. timer 만들기
- cron 처럼 system daemon을 타임 설정하여 실행 시킬수 있다.
- 만들어주는 위치는 /etc/systemd/system/ 하위 이다.(반드시)
- timer 설정해주고 싶은 service와 같은 이름으로 만들어야한다(반드시)
$ cd /etc/systemd/system/
$ vi image_remove.timer
서비스 이름과 반드시 같게 만들어줘야하며 xxx.timer 형식으로 만들어준다
[Unit]
Description=영어로 설명을 적어주세요
[Timer]
OnCalendar=*-*-* 10:00:00 년-월-일 시:분:초 형식으로 진행
AccuracySec=1s timer 실행 하는 시간이 맞는지 확인하는 주기이다 기본 1분이며 초단위로 확인은 1s로 해준다.
[Install]
WantedBy=timer.target
5. system daemon 등록
- 서비스를 실행시키는 것이 아니라 타이머를 실행시키는 작업이다.
타이머를 enabled 해주면 시간에 맞추어 service를 실행시켜준다.
systemctl enable image_remove.timer --now
systemctl status image_remove.timer
6. 마무리
- cron이 안되면 위 방법은 아주 나이스하다.
단 무작위 증가는 시스템에 영향을 줄수 있으니 리소스를 잘 분배한다.
- 거의 리소스에 영향을 주지는 않지만 .... 괜히 loop문 이나 실수 하면 부팅때 문제 줄수도 있으니까...