레플리케이션 컨트롤러
: pod가 항상 실행되도록 하는 쿠버네티스 리소스
- 실행중인 pod의 수를 모니터링하고, 실제 원하는 갯수와 실행수가 일치하는지를 확인한다.
- 라벨셀렉터와 매치되는 pod를 찾음 -> 매치되는 수와 원하는 수를 비교 -> 많거나 적으면, 생성 삭제 한다.
- 3가지 필수요소
1) 레플리케이션컨트롤러의 범위에 있는 pod를 결정하는 label Selector
2) 실행해야 하는 pod의 원하는 수를 지정하는 복제본 수
3) 새로운 pod 복제본을 만들때 사용되는 pod Template
- 레플리케이션 컨트롤러 목록 정보 얻기
$kubectl get rc
- 레플리케이션 컨트롤러 상세 정보 확인
$kubectl describe rc [rc명]
- 레플리케이션 컨트롤러의 yaml 정의 열기
$kubectl edit rc [rc명]
- 레플리케이션 컨트롤러 스케일업(pod수 증가)
$kubectl scale rc [rc명] --replicas=10
- 레플리케이션 컨트롤러 삭제
1) 레플리케이션 컨트롤러와 pod를 모두 삭제
$kubectl delete rc [rc명]
2) 레플리케이션 컨트롤러만 삭제하고 pod는 계속 실행
$kubectl delete rc [rc명] --cascade=false
레플리카셋
: 차세대 레플리케이션 컨트롤러
- 일반적으로 레플리카셋을 직접 만들지는 않음 / deployment 할때 생성됨
- 레플리케이션컨트롤러와 똑같이 동작
그러나, 더 풍부한 표현식 pod selector 를 갖음
ex) env=p , env=k 이 조건에 대해서
레플리케이션 컨트롤러는 포드를 위 2개 조건을 동시에 일치시킬 수 없다.
그러나, 단일 레플리카셋 은 2개의 pod 세트와 일치시킬수 있으며, 단일 포드로 취급할 수 있다.
ex ) env=* ( 값과 상관없이 키 에 대한 일치)
- 레플리카셋 조회
$kubectl get rs
- matchExpression 셀렉터
spec:
replicas: 3
selector:
matchExpressions:
- key: app
operator: In
values:
- k
4가지 연산자
1) In : 라벨의 값이 지정된 값 중 하나와 일치해야 한다.
2) NotIn : 라벨의 값이 지정된 값과 일치해서는 안된다.
3) Exists : pod에는 지정된 key 가 있는 라벨이 포함되어야 한다. (값은 중요하지 않음)
4) DoesNotExist : pod에는 지정된 key가 있는 라벨을 포함하면 안된다.
- 레플리카셋 삭제
$kubectl delete rs [rs명]
레플리카셋 삭제하면 해당 pod도 삭제됨
데몬셋
- 각 노드에서 pod를 실행해야 하는 경우가 있음
ex) 로그 수집기, 리소스 모니터 , kube-proxy
- 데몬셋은 각 노드에서 단일 pod 복제본만 실행하지만, 레플리카셋은 클러스터 전체에서 무작위로 분산시킨다.
- 데몬셋에 의해 만들어진 pod는 이미 대상 node가 지정되어 있고, 쿠버네티스 스케쥴러는 건너뛴다.
- 노드가 다운되더라도, 데몬셋은 어느 곳에서도 pod를 생성하지 않는다.
- 스케쥴을 불가능하게 만드는 속성은 스케쥴러에서만 유효하고, 데몬셋에서 만드는 pod는 스케쥴러와는 무관하다.
- 데몬셋 조회
$kubectl get ds
- 노드에 라벨 적용하기
$kubectl label node [노드명] aaa=bbb
잡(job)
레플리케이션컨트롤러, 레플리카셋 , 데몬셋은 작업의 완료를 고려하지 않고, 계속적으로 타스크를 실행한다.
완료 가능한 타스크에서는 프로세스가 종료된 후 다시 시작하면 안된다. 이를 할 수 있게 해주는게 잡
- job에서 관리하는 pod는 성공적으로 끝날때까지 재스케쥴 된다.
- job 조회
$kubectl get jobs
- job의 타스크가 완료되면 pod 는 더이상 running 하지 않고, Completed 상태로 된다.
pod가 완료될때 삭제되지 않는 이유는 로그를 검사할 수 있기 위해서다
(로그 확인 : kubectl logs [pod명] )
- job은 2개 이상의 pod인스턴스를 만들고, 병렬 또는 순차적으로 실행하도록 구성할 수 있다.
이는 job spec의 completions 와 parallelism 속성으로 수행
spec:
completions: 5
parallelism: 2
template:
metadata:
labels:
app: batch-job
순차적으로 처리를 위해서 completions에 설정
-job이 실행되는 동안에도 scaling 이 가능하다.
- 쿠버네티스의 cron 처리는, CronJob
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: 배치잡명
spec:
schedule: "0,10,20,30,40,50,60 * * * *"
jobTemplate:
spec:
template:
metadata:
labels:
app: ㅇㅇㅇㅇ
spec:
restartPolicy: OnFailure
containers:
- name: main
image: 이미지명
'DevOps' 카테고리의 다른 글
쿠버네티스 명령어 #4 (0) | 2018.12.31 |
---|---|
Docker 명령어 (0) | 2018.12.28 |
쿠버네티스 명령어 #2 (0) | 2018.12.27 |
kubernetes 명령어#1 (0) | 2018.12.27 |
미니큐브 설치 맥 (0) | 2018.12.23 |