기능은 옵션을 통해 docker 뿐만아니라 crictl 명령어를 이용하여 image pruning 을 진행할 수 있으며,
Control Plane 도 정리할지 안할지 옵션을 통해 선택할 수 있다.
사용방법은 아래와 같다.
1. 아래는 기본적인 yaml 파일이며 command 배열과 mountPath, API_TOKEN, API_URL, KEY_NAME, defaultMode는 필수 옵션이다.
apiVersion: batch/v1
kind: CronJob
metadata:
name: image-prune
spec:
schedule: "0 0 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: image-prune
image: pangyeons/image-prune:latest
imagePullPolicy: IfNotPresent
command: # 아래 command 배열 수정 및 삭제 금지
- /bin/sh
- -c
- chmod +x image_prune.sh; /image_prune.sh
volumeMounts:
- mountPath: /etc/sshkey # 수정 및 삭제 금지
name: secret-sshkey
env:
- name: API_TOKEN # 수정 및 삭제 금지
valueFrom:
secretKeyRef:
key:
name:
- name: API_URL # 수정 및 삭제 금지
value: ""
- name: KEY_NAME # 수정 및 삭제 금지
value: ""
- name: CRI_TYPE
value: ""
- name: CONTROL_PLANE
value: ""
- name: OS_USER
value: ""
- name: PORT
value: "6443"
- name: LOG_FILE
value: ""
restartPolicy: OnFailure
volumes:
- name: secret-sshkey
secret:
defaultMode: 0600 # 수정 및 삭제 금지
secretName:
2. ssh key 생성 및 등록
ssh-keygen 을 통해 ssh key 생성
ssh-keygen -t rsa # ex) id_rsa, id_rsa.pub 생성
생성 후 나온 public key 모든 node에 등록
# id_rsa.pub 등록
vi ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDNbPyWARlsD1OmjgHcQAewXvmTbAJYAYMlRgjgUKu69uVyKB8ZS0n3KuLJy9JoTF4y/VOL5DTCU2TFb1A1eIhM4Ox5sPoNTWIG7h/crH
# Pods 전체 삭제
kubectl delete pods --all --all-namespaces
kubectl delete pods --all -A
# Namespace 별 삭제
kubectl delete pods --all -n test
2. pods 특정 이름으로 삭제
<namespace> 자리에 namespace 입력 - test
/application/ 자리에 삭제할 이름 입력 - /nginx/
kubectl get pods -n <namespace> --no-headers=true | awk '/application/{print $1}'| xargs kubectl delete -n <namespace> pod
#namesapce가 test이고 test namespace안에 nginx라는 이름이 들어가는 pods 전체 삭제
kubectl get pods -n test --no-headers=true | awk '/nginx/{print $1}'| xargs kubectl delete -n test pod