Controller란?
kubectl create deployment webui --image=nginx --replicas=3
kubectl create -f rc-nginx.yaml
kubectl get replicationcontrollers
kubectl get rc
kubectl describe rc-rcnginx
파드 삭제 시 replicationController가 하는 일은?
kubectl get pods
kubectl delete pod rc-nginx-XXX
API에서 etcd에 자료를 얻어와 schduler를 통해서 노드를 선정하고, controller를 통해서 배포함
daemonset
deployment - replicaset
stateful sets
cronjob - job :
replication controller : 가장 기본
최근
에 생성된 pod를 삭제함1) rc 실습을 위한 nginx.yaml 파일 구동 (spec에 replicas / selector / template- label 까지 확인)
kubectl create -f rc-nginx.yaml
2) replicas 3개 동작 중 상태 확인
3) nginx curl로 확인
4) rc 확인
kubectl get rc(replicationcontrollers)
name / desired(요청) / current(현재 pod) / ready(작동중) / age(실행시간)
5) describe로 상태확인 이상없이 동작 중
6) rc 삭제
kubectl delete rc로 실시함.
pod 만 삭제할 경우 다시 rc가 동작해서 replicas 3을 유지시킴.
kubectl run redis --image=redis --labels=app=webui --dry-run -o yaml > redis.yaml
dry-run : 실행확인
7) rc의 라벨 보장 정책
redis이름의 pod에 label이 rc에 등록된 내용과 동일하면 자동으로 terminating 시킨다.
8) rc 수정
kubectl edit rc rc-nginx
spec의 replicas를 변경시 반영됨.(scale out이 가능)
8-1) 더빠른 rc 수정
kubectl scale rc rc-nginx --replicas=2
9) rc의 작동 우선순위
kubectl edit rc rc-nginx에서 nginx 버전을 1.14 -> 1.15로 변경해도 작동중인 pod에는 변화가 없다.
다만, 작동중인 pod가 죽고 새로운 pod가 생성될때 1.15로 반영되어 등장한다.
따라서 롤링업데이트는 되지 않는다.
현재 작동중인 pod는 아래와 같이 nginx 1.14 버전이다.
만약 이 1.14 pod를 지우게 된다면 rc에 의해서 1.15의 새로운 pod가 생성될 것이다.
kubectl describe pod rc-nginx-flwfl를 보면 nginx:1.15로 실행되는 것을 볼 수 있다.
** 추가문제
1. 다음 조건으로 replicationController를 사용하는 rc-lab.yaml 파일을 생성하고 동작합니다.