Deployment의 동작 확인 1
11569 단어 kubectlkubernetes
소개
지금까지 Pod, ReplicaSet의 동작을 확인해 왔으므로 이번에는 Deployment의 동작을 확인합니다.
Deployment는 ReplicaSet, Pod의 상위 개념으로 다음과 같은 관계가 있습니다.
Deployment 작성
yaml 파일 만들기 및 apply
다음 yaml 파일을 만들었습니다.
sampleDep.yamlapiVersion: apps/v1
kind: Deployment
metadata:
name: sample-pod4
spec:
replicas: 3
selector:
matchLabels:
app: nginx-dep
template:
metadata:
labels:
app: nginx-dep
spec:
containers:
- name: nginx
image: nginx:1.16
apply합니다.
$ kubectl apply -f sampleDep.yaml
deployment.apps/sample-pod4 created
확인
만든 Deployment를 확인합니다.
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
sample-pod4 3/3 3 3 30s
$ kubectl get rs
NAME DESIRED CURRENT READY AGE
sample-pod4-597898b879 3 3 3 40s
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
sample-pod4-597898b879-29zwd 1/1 Running 0 49s
sample-pod4-597898b879-phfrf 1/1 Running 0 49s
sample-pod4-597898b879-rwtd5 1/1 Running 0 49s
Deployment가 ReplicaSet을 만들고 ReplicaSet이 Pod를 만들고 있음을 알 수 있습니다.
· ReplicaSet 이름은 "[Deploymet 이름] + 임의 문자열"
・Pod명은, 「[ReplicaSet명]+임의의 문자열」
되어 있습니다.
kubectl describe 명령을 사용하여 자세한 내용을 확인합니다.
$ kubectl describe rs sample-pod4-597898b879
・・・
Annotations: deployment.kubernetes.io/desired-replicas: 3
deployment.kubernetes.io/max-replicas: 4
deployment.kubernetes.io/revision: 1
・・・
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 115s replicaset-controller Created pod: sample-pod4-597898b879-rwtd5
Normal SuccessfulCreate 115s replicaset-controller Created pod: sample-pod4-597898b879-phfrf
Normal SuccessfulCreate 115s replicaset-controller Created pod: sample-pod4-597898b879-29zwd
롤링 업데이트 및 버전 제어
Deployment의 특징인 롤링 업데이트 및 버전 관리 동작을 확인합니다.
롤링 업데이트
yaml 파일을 편집하여 nginx 버전을 1.16에서 '1.17'로 변경합니다.
수정한 yaml 파일을 적용합니다.
$ kubectl apply -f sampleDep.yaml
deployment.apps/sample-pod4 configured
업데이트 상태를 kubectl rollout 명령으로 확인합니다.
$ kubectl rollout status deployment sample-pod4
Waiting for deployment "sample-pod4" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "sample-pod4" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "sample-pod4" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "sample-pod4" rollout to finish: 1 old replicas are pending termination...
Waiting for deployment "sample-pod4" rollout to finish: 1 old replicas are pending termination...
deployment "sample-pod4" successfully rolled out
1.17의 복제본이 만들어졌으며 1.16의 복제본이 중지되었음을 알 수 있습니다.
업데이트 후 상태를 확인합니다.
$ kubectl get deployments sample-pod4
NAME READY UP-TO-DATE AVAILABLE AGE
sample-pod4 3/3 3 3 6m15s
$ kubectl get rs -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
sample-pod4-597898b879 0 0 0 6m48s nginx nginx:1.16 app=nginx-dep,pod-template-hash=597898b879
sample-pod4-65fb458568 3 3 3 59s nginx nginx:1.17 app=nginx-dep,pod-template-hash=65fb458568
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
sample-pod4-65fb458568-cnqvv 1/1 Running 0 71s
sample-pod4-65fb458568-rfhkj 1/1 Running 0 69s
sample-pod4-65fb458568-vqtj5 1/1 Running 0 73s
1.16의 ReplicaSet(sample-pod4-597898b879)의 복제본 수는 '0'이고 1.17의 ReplicaSet(sample-pod4-65fb458568)은 '3'이며 새 Pod가 배포되었음을 확인할 수 있습니다. .
버전 관리
kubectl describe 명령을 사용하여 각 ReplicaSet 버전을 확인합니다.
$ kubectl describe rs sample-pod4-65fb458568
Name: sample-pod4-65fb458568
・・・
Annotations: deployment.kubernetes.io/desired-replicas: 3
deployment.kubernetes.io/max-replicas: 4
deployment.kubernetes.io/revision: 2
・・・
Containers:
nginx:
Image: nginx:1.17
・・・
1.17 ReplicaSet의 Revision이 Annotation으로 설정되어 있고 "2"로 올라가는 것을 확인할 수 있습니다.
1.16 분도 확인해 둡니다.
$ kubectl describe rs sample-pod4-597898b879
Name: sample-pod4-597898b879
・・・
Annotations: deployment.kubernetes.io/desired-replicas: 3
deployment.kubernetes.io/max-replicas: 4
deployment.kubernetes.io/revision: 1
・・・
Containers:
nginx:
Image: nginx:1.16
・・・
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 10m replicaset-controller Created pod: sample-pod4-597898b879-rwtd5
Normal SuccessfulCreate 10m replicaset-controller Created pod: sample-pod4-597898b879-phfrf
Normal SuccessfulCreate 10m replicaset-controller Created pod: sample-pod4-597898b879-29zwd
Normal SuccessfulDelete 4m59s replicaset-controller Deleted pod: sample-pod4-597898b879-rwtd5
Normal SuccessfulDelete 4m57s replicaset-controller Deleted pod: sample-pod4-597898b879-phfrf
Normal SuccessfulDelete 4m55s replicaset-controller Deleted pod: sample-pod4-597898b879-29zwd
이쪽은 Revision은 「1」인 채입니다. 또한 Pod 생성/삭제 내역을 확인할 수 있습니다.
(덤) ReplicaSet의 롤링 업데이트
문득, ReplicaSet에서도 yaml 파일의 버전 바꾸면, 롤링 업데이트 할 수 있을까? ? 라고 생각해 보았습니다.
작성한 yaml 파일은 이쪽.
sampleRS.yamlapiVersion: apps/v1
kind: ReplicaSet
metadata:
name: sample-pod5
spec:
replicas: 3
selector:
matchLabels:
app: nginx-dep
template:
metadata:
labels:
app: nginx-dep
spec:
containers:
- name: nginx
image: nginx:1.16
apply합니다.
$ kubectl apply -f sampleRS.yaml
replicaset.apps/sample-pod5 created
확인합니다.
$ kubectl get rs -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
sample-pod5 3 3 3 18s nginx nginx:1.16 app=nginx-dep
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
sample-pod5-2t5tx 1/1 Running 0 4s
sample-pod5-6xd6b 1/1 Running 0 4s
sample-pod5-xhvk2 1/1 Running 0 4s
$ kubectl describe rs
Name: sample-pod5
・・・
Containers:
nginx:
Image: nginx:1.16
・・・
만약 컨테이너에 로그인하여 버전을 확인합니다.
$ kubectl exec -it sample-pod5-xhvk2 /bin/bash
root@sample-pod5-xhvk2:/# nginx -v
nginx version: nginx/1.16.1
root@sample-pod5-xhvk2:/# exit
exit
ReplicaSet에서 롤링 업데이트가 가능한지 확인
yaml 파일의 버전을 다시 작성하고 적용합니다.
$ kubectl apply -f sampleRS.yaml
replicaset.apps/sample-pod5 configured
확인합니다.
$ kubectl get rs -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
sample-pod5 3 3 3 4m11s nginx nginx:1.17 app=nginx-dep
이미지 버전은 올라가고 있습니다.
포드를 확인합니다.
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
sample-pod5-2t5tx 1/1 Running 0 4m15s
sample-pod5-6xd6b 1/1 Running 0 4m15s
sample-pod5-xhvk2 1/1 Running 0 4m15s
포드는 변하지 않습니다.
kubectl describe에서도 확인합니다.
$ kubectl describe rs
Name: sample-pod5
・・・
Containers:
nginx:
Image: nginx:1.17
・・・
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 4m30s replicaset-controller Created pod: sample-pod5-xhvk2
Normal SuccessfulCreate 4m30s replicaset-controller Created pod: sample-pod5-2t5tx
Normal SuccessfulCreate 4m30s replicaset-controller Created pod: sample-pod5-6xd6b
이쪽도 이미지의 버전은 바뀌고 있지만, Pod는 그대로군요.
로그인하여 확인합니다.
$ kubectl exec -it sample-pod5-xhvk2 /bin/bash
root@sample-pod5-xhvk2:/# nginx -v
nginx version: nginx/1.16.1
root@sample-pod5-xhvk2:/# exit
exit
역시 1.16 그대로입니다.
요약
Deployment/ReplicaSet/Pod의 기능을 아래에 정리합니다.
Deployment
ReplicaSet
포드
롤링 업데이트
✓
버전 관리
✓
자기 치유
✓
✓
스케일링
✓
✓
컨테이너 생성
✓
✓
✓
큰 것은 소를 겸하는 것은 아니지만, 기능적으로 Deployment는 모두 포함하고 있으므로, 만일 1Pod/1 컨테이너 밖에 사용하지 않는 경우에서도 Deployment를 사용하는 것이 추천되고 있습니다.
Deployment의 동작에 대해서는 좀 더 조사해보고 싶습니다.
Reference
이 문제에 관하여(Deployment의 동작 확인 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dingtianhongjie/items/46e44fefce097ba3e3cf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
yaml 파일 만들기 및 apply
다음 yaml 파일을 만들었습니다.
sampleDep.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample-pod4
spec:
replicas: 3
selector:
matchLabels:
app: nginx-dep
template:
metadata:
labels:
app: nginx-dep
spec:
containers:
- name: nginx
image: nginx:1.16
apply합니다.
$ kubectl apply -f sampleDep.yaml
deployment.apps/sample-pod4 created
확인
만든 Deployment를 확인합니다.
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
sample-pod4 3/3 3 3 30s
$ kubectl get rs
NAME DESIRED CURRENT READY AGE
sample-pod4-597898b879 3 3 3 40s
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
sample-pod4-597898b879-29zwd 1/1 Running 0 49s
sample-pod4-597898b879-phfrf 1/1 Running 0 49s
sample-pod4-597898b879-rwtd5 1/1 Running 0 49s
Deployment가 ReplicaSet을 만들고 ReplicaSet이 Pod를 만들고 있음을 알 수 있습니다.
· ReplicaSet 이름은 "[Deploymet 이름] + 임의 문자열"
・Pod명은, 「[ReplicaSet명]+임의의 문자열」
되어 있습니다.
kubectl describe 명령을 사용하여 자세한 내용을 확인합니다.
$ kubectl describe rs sample-pod4-597898b879
・・・
Annotations: deployment.kubernetes.io/desired-replicas: 3
deployment.kubernetes.io/max-replicas: 4
deployment.kubernetes.io/revision: 1
・・・
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 115s replicaset-controller Created pod: sample-pod4-597898b879-rwtd5
Normal SuccessfulCreate 115s replicaset-controller Created pod: sample-pod4-597898b879-phfrf
Normal SuccessfulCreate 115s replicaset-controller Created pod: sample-pod4-597898b879-29zwd
롤링 업데이트 및 버전 제어
Deployment의 특징인 롤링 업데이트 및 버전 관리 동작을 확인합니다.
롤링 업데이트
yaml 파일을 편집하여 nginx 버전을 1.16에서 '1.17'로 변경합니다.
수정한 yaml 파일을 적용합니다.
$ kubectl apply -f sampleDep.yaml
deployment.apps/sample-pod4 configured
업데이트 상태를 kubectl rollout 명령으로 확인합니다.
$ kubectl rollout status deployment sample-pod4
Waiting for deployment "sample-pod4" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "sample-pod4" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "sample-pod4" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "sample-pod4" rollout to finish: 1 old replicas are pending termination...
Waiting for deployment "sample-pod4" rollout to finish: 1 old replicas are pending termination...
deployment "sample-pod4" successfully rolled out
1.17의 복제본이 만들어졌으며 1.16의 복제본이 중지되었음을 알 수 있습니다.
업데이트 후 상태를 확인합니다.
$ kubectl get deployments sample-pod4
NAME READY UP-TO-DATE AVAILABLE AGE
sample-pod4 3/3 3 3 6m15s
$ kubectl get rs -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
sample-pod4-597898b879 0 0 0 6m48s nginx nginx:1.16 app=nginx-dep,pod-template-hash=597898b879
sample-pod4-65fb458568 3 3 3 59s nginx nginx:1.17 app=nginx-dep,pod-template-hash=65fb458568
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
sample-pod4-65fb458568-cnqvv 1/1 Running 0 71s
sample-pod4-65fb458568-rfhkj 1/1 Running 0 69s
sample-pod4-65fb458568-vqtj5 1/1 Running 0 73s
1.16의 ReplicaSet(sample-pod4-597898b879)의 복제본 수는 '0'이고 1.17의 ReplicaSet(sample-pod4-65fb458568)은 '3'이며 새 Pod가 배포되었음을 확인할 수 있습니다. .
버전 관리
kubectl describe 명령을 사용하여 각 ReplicaSet 버전을 확인합니다.
$ kubectl describe rs sample-pod4-65fb458568
Name: sample-pod4-65fb458568
・・・
Annotations: deployment.kubernetes.io/desired-replicas: 3
deployment.kubernetes.io/max-replicas: 4
deployment.kubernetes.io/revision: 2
・・・
Containers:
nginx:
Image: nginx:1.17
・・・
1.17 ReplicaSet의 Revision이 Annotation으로 설정되어 있고 "2"로 올라가는 것을 확인할 수 있습니다.
1.16 분도 확인해 둡니다.
$ kubectl describe rs sample-pod4-597898b879
Name: sample-pod4-597898b879
・・・
Annotations: deployment.kubernetes.io/desired-replicas: 3
deployment.kubernetes.io/max-replicas: 4
deployment.kubernetes.io/revision: 1
・・・
Containers:
nginx:
Image: nginx:1.16
・・・
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 10m replicaset-controller Created pod: sample-pod4-597898b879-rwtd5
Normal SuccessfulCreate 10m replicaset-controller Created pod: sample-pod4-597898b879-phfrf
Normal SuccessfulCreate 10m replicaset-controller Created pod: sample-pod4-597898b879-29zwd
Normal SuccessfulDelete 4m59s replicaset-controller Deleted pod: sample-pod4-597898b879-rwtd5
Normal SuccessfulDelete 4m57s replicaset-controller Deleted pod: sample-pod4-597898b879-phfrf
Normal SuccessfulDelete 4m55s replicaset-controller Deleted pod: sample-pod4-597898b879-29zwd
이쪽은 Revision은 「1」인 채입니다. 또한 Pod 생성/삭제 내역을 확인할 수 있습니다.
(덤) ReplicaSet의 롤링 업데이트
문득, ReplicaSet에서도 yaml 파일의 버전 바꾸면, 롤링 업데이트 할 수 있을까? ? 라고 생각해 보았습니다.
작성한 yaml 파일은 이쪽.
sampleRS.yamlapiVersion: apps/v1
kind: ReplicaSet
metadata:
name: sample-pod5
spec:
replicas: 3
selector:
matchLabels:
app: nginx-dep
template:
metadata:
labels:
app: nginx-dep
spec:
containers:
- name: nginx
image: nginx:1.16
apply합니다.
$ kubectl apply -f sampleRS.yaml
replicaset.apps/sample-pod5 created
확인합니다.
$ kubectl get rs -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
sample-pod5 3 3 3 18s nginx nginx:1.16 app=nginx-dep
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
sample-pod5-2t5tx 1/1 Running 0 4s
sample-pod5-6xd6b 1/1 Running 0 4s
sample-pod5-xhvk2 1/1 Running 0 4s
$ kubectl describe rs
Name: sample-pod5
・・・
Containers:
nginx:
Image: nginx:1.16
・・・
만약 컨테이너에 로그인하여 버전을 확인합니다.
$ kubectl exec -it sample-pod5-xhvk2 /bin/bash
root@sample-pod5-xhvk2:/# nginx -v
nginx version: nginx/1.16.1
root@sample-pod5-xhvk2:/# exit
exit
ReplicaSet에서 롤링 업데이트가 가능한지 확인
yaml 파일의 버전을 다시 작성하고 적용합니다.
$ kubectl apply -f sampleRS.yaml
replicaset.apps/sample-pod5 configured
확인합니다.
$ kubectl get rs -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
sample-pod5 3 3 3 4m11s nginx nginx:1.17 app=nginx-dep
이미지 버전은 올라가고 있습니다.
포드를 확인합니다.
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
sample-pod5-2t5tx 1/1 Running 0 4m15s
sample-pod5-6xd6b 1/1 Running 0 4m15s
sample-pod5-xhvk2 1/1 Running 0 4m15s
포드는 변하지 않습니다.
kubectl describe에서도 확인합니다.
$ kubectl describe rs
Name: sample-pod5
・・・
Containers:
nginx:
Image: nginx:1.17
・・・
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 4m30s replicaset-controller Created pod: sample-pod5-xhvk2
Normal SuccessfulCreate 4m30s replicaset-controller Created pod: sample-pod5-2t5tx
Normal SuccessfulCreate 4m30s replicaset-controller Created pod: sample-pod5-6xd6b
이쪽도 이미지의 버전은 바뀌고 있지만, Pod는 그대로군요.
로그인하여 확인합니다.
$ kubectl exec -it sample-pod5-xhvk2 /bin/bash
root@sample-pod5-xhvk2:/# nginx -v
nginx version: nginx/1.16.1
root@sample-pod5-xhvk2:/# exit
exit
역시 1.16 그대로입니다.
요약
Deployment/ReplicaSet/Pod의 기능을 아래에 정리합니다.
Deployment
ReplicaSet
포드
롤링 업데이트
✓
버전 관리
✓
자기 치유
✓
✓
스케일링
✓
✓
컨테이너 생성
✓
✓
✓
큰 것은 소를 겸하는 것은 아니지만, 기능적으로 Deployment는 모두 포함하고 있으므로, 만일 1Pod/1 컨테이너 밖에 사용하지 않는 경우에서도 Deployment를 사용하는 것이 추천되고 있습니다.
Deployment의 동작에 대해서는 좀 더 조사해보고 싶습니다.
Reference
이 문제에 관하여(Deployment의 동작 확인 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dingtianhongjie/items/46e44fefce097ba3e3cf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ kubectl apply -f sampleDep.yaml
deployment.apps/sample-pod4 configured
$ kubectl rollout status deployment sample-pod4
Waiting for deployment "sample-pod4" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "sample-pod4" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "sample-pod4" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "sample-pod4" rollout to finish: 1 old replicas are pending termination...
Waiting for deployment "sample-pod4" rollout to finish: 1 old replicas are pending termination...
deployment "sample-pod4" successfully rolled out
$ kubectl get deployments sample-pod4
NAME READY UP-TO-DATE AVAILABLE AGE
sample-pod4 3/3 3 3 6m15s
$ kubectl get rs -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
sample-pod4-597898b879 0 0 0 6m48s nginx nginx:1.16 app=nginx-dep,pod-template-hash=597898b879
sample-pod4-65fb458568 3 3 3 59s nginx nginx:1.17 app=nginx-dep,pod-template-hash=65fb458568
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
sample-pod4-65fb458568-cnqvv 1/1 Running 0 71s
sample-pod4-65fb458568-rfhkj 1/1 Running 0 69s
sample-pod4-65fb458568-vqtj5 1/1 Running 0 73s
$ kubectl describe rs sample-pod4-65fb458568
Name: sample-pod4-65fb458568
・・・
Annotations: deployment.kubernetes.io/desired-replicas: 3
deployment.kubernetes.io/max-replicas: 4
deployment.kubernetes.io/revision: 2
・・・
Containers:
nginx:
Image: nginx:1.17
・・・
$ kubectl describe rs sample-pod4-597898b879
Name: sample-pod4-597898b879
・・・
Annotations: deployment.kubernetes.io/desired-replicas: 3
deployment.kubernetes.io/max-replicas: 4
deployment.kubernetes.io/revision: 1
・・・
Containers:
nginx:
Image: nginx:1.16
・・・
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 10m replicaset-controller Created pod: sample-pod4-597898b879-rwtd5
Normal SuccessfulCreate 10m replicaset-controller Created pod: sample-pod4-597898b879-phfrf
Normal SuccessfulCreate 10m replicaset-controller Created pod: sample-pod4-597898b879-29zwd
Normal SuccessfulDelete 4m59s replicaset-controller Deleted pod: sample-pod4-597898b879-rwtd5
Normal SuccessfulDelete 4m57s replicaset-controller Deleted pod: sample-pod4-597898b879-phfrf
Normal SuccessfulDelete 4m55s replicaset-controller Deleted pod: sample-pod4-597898b879-29zwd
문득, ReplicaSet에서도 yaml 파일의 버전 바꾸면, 롤링 업데이트 할 수 있을까? ? 라고 생각해 보았습니다.
작성한 yaml 파일은 이쪽.
sampleRS.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: sample-pod5
spec:
replicas: 3
selector:
matchLabels:
app: nginx-dep
template:
metadata:
labels:
app: nginx-dep
spec:
containers:
- name: nginx
image: nginx:1.16
apply합니다.
$ kubectl apply -f sampleRS.yaml
replicaset.apps/sample-pod5 created
확인합니다.
$ kubectl get rs -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
sample-pod5 3 3 3 18s nginx nginx:1.16 app=nginx-dep
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
sample-pod5-2t5tx 1/1 Running 0 4s
sample-pod5-6xd6b 1/1 Running 0 4s
sample-pod5-xhvk2 1/1 Running 0 4s
$ kubectl describe rs
Name: sample-pod5
・・・
Containers:
nginx:
Image: nginx:1.16
・・・
만약 컨테이너에 로그인하여 버전을 확인합니다.
$ kubectl exec -it sample-pod5-xhvk2 /bin/bash
root@sample-pod5-xhvk2:/# nginx -v
nginx version: nginx/1.16.1
root@sample-pod5-xhvk2:/# exit
exit
ReplicaSet에서 롤링 업데이트가 가능한지 확인
yaml 파일의 버전을 다시 작성하고 적용합니다.
$ kubectl apply -f sampleRS.yaml
replicaset.apps/sample-pod5 configured
확인합니다.
$ kubectl get rs -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
sample-pod5 3 3 3 4m11s nginx nginx:1.17 app=nginx-dep
이미지 버전은 올라가고 있습니다.
포드를 확인합니다.
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
sample-pod5-2t5tx 1/1 Running 0 4m15s
sample-pod5-6xd6b 1/1 Running 0 4m15s
sample-pod5-xhvk2 1/1 Running 0 4m15s
포드는 변하지 않습니다.
kubectl describe에서도 확인합니다.
$ kubectl describe rs
Name: sample-pod5
・・・
Containers:
nginx:
Image: nginx:1.17
・・・
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 4m30s replicaset-controller Created pod: sample-pod5-xhvk2
Normal SuccessfulCreate 4m30s replicaset-controller Created pod: sample-pod5-2t5tx
Normal SuccessfulCreate 4m30s replicaset-controller Created pod: sample-pod5-6xd6b
이쪽도 이미지의 버전은 바뀌고 있지만, Pod는 그대로군요.
로그인하여 확인합니다.
$ kubectl exec -it sample-pod5-xhvk2 /bin/bash
root@sample-pod5-xhvk2:/# nginx -v
nginx version: nginx/1.16.1
root@sample-pod5-xhvk2:/# exit
exit
역시 1.16 그대로입니다.
요약
Deployment/ReplicaSet/Pod의 기능을 아래에 정리합니다.
Deployment
ReplicaSet
포드
롤링 업데이트
✓
버전 관리
✓
자기 치유
✓
✓
스케일링
✓
✓
컨테이너 생성
✓
✓
✓
큰 것은 소를 겸하는 것은 아니지만, 기능적으로 Deployment는 모두 포함하고 있으므로, 만일 1Pod/1 컨테이너 밖에 사용하지 않는 경우에서도 Deployment를 사용하는 것이 추천되고 있습니다.
Deployment의 동작에 대해서는 좀 더 조사해보고 싶습니다.
Reference
이 문제에 관하여(Deployment의 동작 확인 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dingtianhongjie/items/46e44fefce097ba3e3cf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Deployment의 동작 확인 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dingtianhongjie/items/46e44fefce097ba3e3cf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)