🔁 [클러스터 전체 배포 필요한 파드]
✅ 1. DaemonSet
- 기능: 클러스터의 모든 (또는 일부) 노드에 파드를 1개씩 배포
- 사용 예시:
- 로그 수집기 (예: Fluentd, Logstash)
- 노드 모니터링 에이전트 (예: Prometheus Node Exporter)
- 네트워크 플러그인 (예: Calico, Cilium)
- 특징:
- 새 노드가 클러스터에 추가되면 자동 파드 배포
- 노드당 하나의 파드만 실행되도록 보장
kubectl api-resources
NAME SHORTNAMES APIVERSION NAMESPACED KIND
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: myds
spec:
selector:
matchLabels:
app: webui
template:
metadata:
name: mypod
labels:
app: webui
spec:
containers:
- name: mycon
image: nginx:1.14
[JOB controller]
linux에서 at /
**일회성 작업(배치 작업)**을 처리
배치 처리 컨트롤러
작업이 완료되면 종료되는 파드를 만드는 용도
비정상 종료 파드 재실행 후 정상 종료 실행
단기적인 작업을 수행하고 종료되는 파드를 관리
파드가 성공할 때까지 재생성 후 재시도함 (기본값: 6회)
예: DB 마이그레이션, 정기 백업, 데이터 처리 등
apiVersion: batch/v1
kind: Job
metadata:
name: myjob
spec:
template:
spec:
containers:
- name: mycon
image: ubuntu
command: ["bash"]
args:
- "-c"
- "echo 'Hello my JOB';sleep 60;ls -l /tmp;echo 'By My JOB'"
restartPolicy: Never
[Cronjob Controller]
일정 주기로 Job을 자동 생성
cron 스케줄 형식 (* * * * *) 사용
백업, 로그 정리, 메일 전송 같은 주기적 작업에 적합
apiVersion: batch/v1
kind: CronJob
metadata:
name: mycron
spec:
schedule: "* * * * *"
startingDeadlineSeconds: 5
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
containers:
- name: mycon
image: busybox
args:
- /bin/sh
- -c
- echo 'Hello From CronJob';sleep 10;ls -l /tmp;echo 'Bye CronJob'
restartPolicy: Never
✅ 참고로 같이 자주 쓰는 설정
항목 설명
starting Deadline Seconds | 잡이 실행되지 못할 경우 지연 허용 시간 |
concurrency Policy | 동시에 여러 Job 실행 허용 여부 (Allow, Forbid, Replace) |
successful Jobs History Limit | 성공한 Job 몇 개 유지할지 |
failed Jobs History Limit | 실패한 Job 몇 개 유지할지 |
active Deadline Seconds | 실패한 Job 몇 개 유지할지 |
성공/실패 Job의 개수 초과 시 자동삭제
kubectl get all
kubectl describe pod -A
kubectl delete pod --all
kubectl ***replace*** -f
구조(Selector, Volume 등) 바꾸려면 → replace
kubectl patch
kubectl delete -f deployment.yaml
✅ kubectl replace로 변경 가능한 것과 불가능한 것
🔄 replace로 변경 가능한 항목
- containers → 이미지, 포트 등
- volumes → configMap, secret, PVC 등
- replicas → 파드 개수
- labels (템플릿 안에서)
- annotations
⛔ 변경 불가능한 항목 (immutable)
- metadata.name
- spec.selector ❌
- spec.template.metadata.labels (선택자와 안 맞으면 오류 발생)
- PVC의 spec.volumeName, storageClassName, accessModes 등
'IT 엔지니어 > CLOUD' 카테고리의 다른 글
K8S - STATEFULSET (0) | 2025.05.29 |
---|---|
k8S - REPLICASET (0) | 2025.05.28 |
K8S Controller (0) | 2025.05.26 |
초기화/인프라 컨테이너 (0) | 2025.05.25 |
K8S - Load Balance (0) | 2025.05.24 |