클라우드/쿠버네티스(Kubernetes)

쿠버네티스 Kubernetes 레플리카셋 (ReplicaSet)

두뚜 2021. 7. 8. 17:59




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