기능은 옵션을 통해 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:1.1
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"
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
#!/bin/sh
DIR=/k8s-bak/resouruces # 경로 입력
mkdir -p
for NS in $(kubectl get ns --no-headers | awk '{ print $1 }') # 모든 Namespace 조회
do
mkdir -p ${DIR}/${NS} # 각 Namespace 별 폴더 생성
for RESOURCE in $(kubectl api-resources --no-headers | awk '{ print $1 }') # 리소스 조회
do
kubectl get ${RESOURCE} -n ${NS} -o yaml > ${DIR}/${NS}/${RESOURCE}.yaml # YAML 백업
done
done
1. etcdctl leader 및 list 조회 명령어 입력시 Error: context deadline exceeded 발생할 경우 cacert, cert, key를 입력해준다.
# 아래 명령어 중 하나 사용
etcdctl member list --cacert="/etc/kubernetes/pki/etcd/ca.crt" --cert="/etc/kubernetes/pki/etcd/peer.crt" --key="/etc/kubernetes/pki/etcd/peer.key"
etcdctl endpoint status --cluster --cacert="/etc/kubernetes/pki/etcd/ca.crt" --cert="/etc/kubernetes/pki/etcd/peer.crt" --key="/etc/kubernetes/pki/etcd/peer.key"
or
etcdctl member list --cacert="/etc/kubernetes/pki/etcd/ca.crt" --cert="/etc/kubernetes/pki/etcd/server.crt" --key="/etc/kubernetes/pki/etcd/server.key"
etcdctl endpoint status --cluster --cacert="/etc/kubernetes/pki/etcd/ca.crt" --cert="/etc/kubernetes/pki/etcd/server.crt" --key="/etc/kubernetes/pki/etcd/server.key"
2. etcdctl 사용시 open /etc/kubernetes/pki/etcd/ca.crt: permission denied 발생할 경우