
레플리케이션 컨트롤러에 조건부 셀렉터 추가
- 조건부 셀렉터 :: 정교하게 탐색할 수 있도록 조건부로 그룹화
제공 연산자 Exists / DoesNotExist / In / NotIn
[root@master ~/kube/07/rs]# kubectl api-resources | grep replicasets
replicasets rs apps/v1 true ReplicaSet
[root@master ~/kube/07/rs]# vi nginx-rs.yaml
[root@master ~/kube/07/rs]# cat nginx-rs.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-rs
spec:
replicas: 3
selector:
matchLabels:
app: webui
template:
metadata:
name: nginx-pod
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
[root@master ~/kube/07/rs]# kubectl apply -f nginx-rs.yaml
replicaset.apps/nginx-rs created
[root@master ~/kube/07/rs]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-rs-dkb59 1/1 Running 0 4s
nginx-rs-nxdxg 1/1 Running 0 4s
nginx-rs-tgkjg 1/1 Running 0 4s
[root@master ~/kube/07/rs]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-rs 3 3 3 8s
[root@master ~/kube/07/rs]# kubectl describe rs nginx-rs
Name: nginx-rs
Namespace: default
Selector: app=webui
Labels: <none>
Annotations: <none>
Replicas: 3 current / 3 desired
Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
Labels: app=webui
Containers:
nginx-container:
Image: nginx:1.14
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 27s replicaset-controller Created pod: nginx-rs-nxdxg
Normal SuccessfulCreate 27s replicaset-controller Created pod: nginx-rs-dkb59
Normal SuccessfulCreate 27s replicaset-controller Created pod: nginx-rs-tgkjg
설정한 replicas 수를 유지 테스트
[root@master ~/kube/07/rs]# kubectl scale rs nginx-rs --replicas=4
replicaset.apps/nginx-rs scaled
[root@master ~/kube/07/rs]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-rs-dkb59 1/1 Running 0 2m24s
nginx-rs-k7bmb 1/1 Running 0 3s
nginx-rs-nxdxg 1/1 Running 0 2m24s
nginx-rs-tgkjg 1/1 Running 0 2m24s
[root@master ~/kube/07/rs]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-rs-dkb59 1/1 Running 0 2m36s
nginx-rs-tgkjg 1/1 Running 0 2m36s
[root@master ~/kube/07/rs]# kubectl delete pod nginx-rs-dkb59
pod "nginx-rs-dkb59" deleted
[root@master ~/kube/07/rs]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-rs-tgkjg 1/1 Running 0 3m26s
nginx-rs-tmtfq 1/1 Running 0 4s
롤링 업데이트/롤백 테스트
※ ReplicaSet도 롤링 업데이트/롤백을 지원하지 않음
container 이미지 nginx:1.14 → nginx:1.15로 변경
[root@master ~/kube/07/rs]# kubectl edit rs nginx-rs
replicaset.apps/nginx-rs edited
[root@master ~/kube/07/rs]# kubectl describe pod nginx-rs | grep Image
Image: nginx:1.14
Image ID: docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
Image: nginx:1.14
Image ID: docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
ReplicationController와 마찬가지로 새로 구동될 때 변경사항 적용
[root@master ~/kube/07/rs]# kubectl delete pod nginx-rs-tgkjg
pod "nginx-rs-tgkjg" deleted
[root@master ~/kube/07/rs]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-rs-tmtfq 1/1 Running 0 2m2s
nginx-rs-vdn9p 1/1 Running 0 4s
[root@master ~/kube/07/rs]# kubectl describe pod nginx-rs | grep Image
Image: nginx:1.14
Image ID: docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
Image: nginx:1.15
Image ID: docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
[root@master ~/kube/07/rs]# kubectl delete pod --all
pod "nginx-rs-tmtfq" deleted
pod "nginx-rs-vdn9p" deleted
[root@master ~/kube/07/rs]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-rs-nt6np 0/1 ContainerCreating 0 3s
nginx-rs-w6jpg 1/1 Running 0 3s
[root@master ~/kube/07/rs]# kubectl describe pod nginx-rs | grep Image
Image: nginx:1.15
Image ID: docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
Image: nginx:1.15
Image ID: docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
[root@master ~/kube/07/rs]# kubectl set image replicasets/nginx-rs nginx-container=nginx:1.14
replicaset.apps/nginx-rs image updated
[root@master ~/kube/07/rs]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-rs-8b7l7 1/1 Running 0 12s
nginx-rs-wfv4h 1/1 Running 0 12s
[root@master ~/kube/07/rs]# kubectl describe pod nginx-rs | grep Image
Image: nginx:1.15
Image ID: docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
Image: nginx:1.15
Image ID: docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
[root@master ~/kube/07/rs]# kubectl delete pod nginx-rs-8b7l7
pod "nginx-rs-8b7l7" deleted
[root@master ~/kube/07/rs]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-rs-c6vld 1/1 Running 0 4s
nginx-rs-wfv4h 1/1 Running 0 43s
[root@master ~/kube/07/rs]# kubectl describe pod nginx-rs | grep Image
Image: nginx:1.14
Image ID: docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
Image: nginx:1.15
Image ID: docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
[root@master ~/kube/07/rs]# kubectl delete pod --all
pod "nginx-rs-c6vld" deleted
pod "nginx-rs-wfv4h" deleted
[root@master ~/kube/07/rs]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-rs-5sg44 1/1 Running 0 3s
nginx-rs-rfzkh 1/1 Running 0 3s
[root@master ~/kube/07/rs]# kubectl describe pod nginx-rs | grep Image
Image: nginx:1.14
Image ID: docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
Image: nginx:1.14
Image ID: docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
▶ ReplicaSet도 자동 업데이트 롤백 기능 없음