Replicaset
- ReplicationController와 같은 역할을 하는 컨트롤러(Pod의 개수 보장)
- ReplicationController 보다 풍부한 selector
selector
matchLabels:
component: redis
matchExpressions:
- {key: tier, operator: In, values: [cache]}
- {key: enviroment, operator: NotIn, values: [dev]}
- matchExpressions 연산자
. In : key와 values를 지정하여 key, value가 일치하는 Pod만 연결
. NotIn : key는 일치하고 value는 일치하지 않는 Pod에 연결
. Exists : key에 맞는 label의 pod를 연결
. DoesNotExist : key와 다른 label의 pod를 연결
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: rs-nginx
spec:
replicas: 3
selector:
matchLabels:
app: webui
template:
metadata:
name: nginx-pod
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
위의 rs-nginx.yaml 실행 후 replicaset 확인
kubectl create -f rs-nginx.yaml
replicaset.apps/rs-nginx created
kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
rs-nginx-f95zx 1/1 Running 0 19s app=webui
rs-nginx-lzpkp 1/1 Running 0 19s app=webui
rs-nginx-nrk77 1/1 Running 0 19s app=webui
kubectl get replicasets
NAME DESIRED CURRENT READY AGE
rs-nginx 3 3 3 36s
kubectl get rs
NAME DESIRED CURRENT READY AGE
rs-nginx 3 3 3 39s
rs-nginx pod 삭제시 가장 최근에 생성된 pod가 생성되지만 replicaset 이 3으로 설정되어 있기 때문에 pod 다시 생성
kubectl delete pod rs-nginx-f95zx
pod "rs-nginx-f95zx" deleted
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
rs-nginx-lzpkp 1/1 Running 0 72s 10.44.0.1 node2.example.com <none> <none>
rs-nginx-mwdpr 1/1 Running 0 4s 10.36.0.2 node1.example.com <none> <none>
rs-nginx-nrk77 1/1 Running 0 72s 10.44.0.2 node2.example.com <none> <none>
replicas 설정을 3 → 2개로 수정
scale rs rs-nginx --replicas=2
replicaset.apps/rs-nginx scaled
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
rs-nginx-lzpkp 1/1 Running 0 101s 10.44.0.1 node2.example.com <none> <none>
rs-nginx-nrk77 1/1 Running 0 101s 10.44.0.2 node2.example.com <none> <none>
pod 는 유지하고 replicaset 만 삭제를 원할 경우 --cascade=false 옵션을 추가하여 실행
※ --cascade=false 옵션 : 연쇄 삭제 기능을 비활성화. (default=true)
# kubectl delete rs rs-nginx --cascade=false
warning: --cascade=false is deprecated (boolean value) and can be replaced with --cascade=orphan.
replicaset.apps "rs-nginx" deleted
kubectl get rs
No resources found in default namespace.
# kubectl get pods--show-labels
error: the server doesn't have a resource type "pods--show-labels"
# kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
rs-nginx-lzpkp 1/1 Running 0 3m32s app=webui
rs-nginx-nrk77 1/1 Running 0 3m32s app=webui
[참고]
- https://www.youtube.com/watch?v=78QmQdjovCc&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=18
'Kubernetes' 카테고리의 다른 글
[Kubernetes] DaemonSet + RollingUpdate (1) | 2022.12.12 |
---|---|
[Kubernetes] RollingUpdate를 위한 Deployment (0) | 2022.12.11 |
[Kubernetes] ReplicationController란? (0) | 2022.12.05 |
[Kubernetes] Pod 환경변수 설정과 실행 패턴 (0) | 2022.12.02 |
[Kubernetes] Pod에 Resource 할당하기 (0) | 2022.12.02 |