쿠버네티스 Kubernetes 레플리카셋 (ReplicaSet)
In ( a : b ) => ( a : b )
NotIn ( a : b ) =>( a : !b )
Exists ( a : b ) => ( a : all )
DoseNotExist ( a : b ) => ( !a : all )
# 레플리카셋과 레플리케이션 컨트롤러 비교
셀렉터만 다르다
레플리케이션 컨트롤러 : 일치성기준 레이블 셀렉터 지원
레플리카셋 : 일치성 및 집합성 기준 레이블 셀렉터 지원
# 일치성 기준 레이블 셀렉터
키(key)와 값(value) 모두 일치
# 집합성 기준 레이블 셀렉터
키=값 모두 일치하더나 키(key)만 일치하는것도 지원
# YAML 파일 작성
# 레플리카셋은 apps/v1 API버전 사용
vagrant@k-control:~$ cat ldh-rs.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: ldh-rs
spec:
replicas: 3
selector:
matchLabels:
app: dh-rs
template:
metadata:
labels:
app: dh-rs
spec:
containers:
- image: ghcr.io/c1t1d0s7/go-myweb
name: ldh
ports:
- containerPort: 8080
protocol: TCP
# 레플리카셋 생성
vagrant@k-control:~$ kubectl create -f ldh-rs.yml
# 레플리카셋 확인
vagrant@k-control:~$ kubectl get replicasets.apps
NAME DESIRED CURRENT READY AGE
ldh-rs 3 3 3 21s
# 파드 목록
vagrant@k-control:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
ldh-rs-nzqmd 1/1 Running 0 31s
ldh-rs-qb8zj 1/1 Running 0 31s
ldh-rs-vpsfw 1/1 Running 0 31s
-> matchLabels(일치성 기준) 레이블 셀렉터는 레플리케이션 컨트롤러와 똑같이 동작
# matchExpressions를 사용해 레플리카셋 생성
# 야믈파일 작성
vagrant@k-control:~$ cat ldh-rs-exp.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: ldh-rs-exp
spec:
replicas: 3
selector:
matchExpressions:
- key: app
operator: In
values:
- dh-exp
- key: env
operator: Exists
template:
metadata:
labels:
app: dh-exp
env: dev
spec:
containers:
- image: ghcr.io/c1t1d0s7/go-myweb
name: ldh
ports:
- containerPort: 8080
protocol: TCP
#레플리카셋 생성
vagrant@k-control:~$ kubectl create -f ldh-rs-exp.yml
# 레플리카셋 확인
vagrant@k-control:~$ kubectl get replicasets.apps -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
ldh-rs-exp 3 3 3 20s ldh ghcr.io/c1t1d0s7/go-myweb app in (dh-exp),env
# 파드의 목록
vagrant@k-control:~$ kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
ldh-rs-exp-pbl26 1/1 Running 0 2m23s app=dh-exp,env=dev
ldh-rs-exp-r5jpm 1/1 Running 0 2m23s app=dh-exp,env=dev
ldh-rs-exp-zklnv 1/1 Running 0 2m23s app=dh-exp,env=dev
# 레플리카셋 삭제
vagrant@k-control:~$ kubectl delete replicasets.apps ldh-rs-exp
In
NotIn
Exist
DoseNotExist