[레플리케이션컨트롤러 & 레플리카셋 차이]
- 레플리카셋은 레플리케이션컨트롤러와 똑같이 동작하지만 더 풍부한 표현식 포드 셀렉터를 갖음
- 단일 레플리케이션컨트롤러는
ㅁ 레플리케이션컨트롤러의 라벨. 셀렉터는 특정 라벨을 포함하는 포드가 일치하는지만 본다
ㅁ 포드를 라벨 env=production 및 라벨 env=devel과 동시에 일치 불가
ㅁ 라벨키가 있는 경우에만 포드와 일치
- 레플리카셋
ㅁ 레플리카셋의 셀렉터는 특정 라벨이 없거나 해당 값과 관계없이 특정 라벨 키를 포함하는 포드를 매치하는지 본다.
ㅁ 단일 레플리카셋은 두 포드의 세트와 일치 가능하며 단일 포드로 취급 가능
ㅁ 레플리카셋은 라벨키가 없어도 일치 가능 (라벨을 포함하는 모든 포드를 env=*로 생각할 수 있는)
[레플리카셋 정의]
kubi-replicaset.yaml
apiVersion: app/v1beta2
kind: replicaset
metadata:
name: kubia
spec:
replicas: 3
selector:
metachLabels:
app: kubia
template:
metadata:
labels:
app: kubia
spec:
containers:
- name: kubia
image: luksa/kubia
유일한 차이점은 셀렉터이다. selector 속성 바로 아래에 있어야 하는 라벨을 나열하는 대시 selector.matchLabels 아래에 지정
[레플리카셋 생성 및 검사]
레플리카셋을 나타내는 rs 줄임 명령을 사용
$ kubectl get rs
$ kubectl describe rs
Name: kubia
Namespace: default
Selector: app=kubia
Labels: app=kubia
Annotations: <none>
Replicas: 3 current / 3 desired
Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
Labels: app=kubia
Containers: ...
Volumes: <none>
Evnets: <none>
[풍부한 라벨 셀렉터 사용하기]
matchExpresson 속성을 사용하도록 selector를 다시 작성한다.
kubia-replicaset-matchexpressions.yaml
selector:
matchExpressions:
- key: app # 이 셀렉터는 포드에 "app" 키가 있는 라벨을 포함해야 한다.
operator: In
values:
- kubia # 라벨의 값은 "kubia" 여야 한다.
ㅁ In: 라벨의 값이 지정된 값 중 하나와 일치해야 한다.
ㅁ NotIn: 라벨의 값이 지정된 값과 일치해서는 안된다.
ㅁ Exists: 포드에는 지정된 키가 있는 라벨이 포함되어야 한다.(값은 중요하지 않음). 이 연산자를 사용할 때 값 필드를 지정하면 안됨
ㅁ DoesNotExist: 포드에는 지정된 키가 있는 라벨을 포함하면 안된다. values 속성을 지정하면 안된다. 여러 표현식을 지정하면 셀렉터가 포드와 일치하도록 모든 표현식이 true로 평가돼야 한다.
[레플라카셋 정리]
$ kubectl delete rs kubia
replicaset "kubia" deleted
레플리카셋을 삭제하면 모든 포드를 삭제해야 함.
'Kubenetes > Kubernetes Controller' 카테고리의 다른 글
StatefulSet (0) | 2021.02.13 |
---|---|
Deployment - 애플리케이션 업데이트 (0) | 2021.02.13 |
잡 리소스 및 스케줄링 (0) | 2021.02.11 |
레플리케이션 컨트롤러 (Replication Controller) (0) | 2021.02.11 |