Container v1 을 Containerv2로 업데이트 하기 위해서는 두가지 방법을 떠올릴것이다.
-
기존의 v1 을 다 삭제하고 새로운 v2 를 삭제 하는 방법 하지만 다운타임이 발생하게 된다.
-
v2를 미리 추가하고 v1 을 지우는 방법
#rollout 명령어
kubectl rollout status deployment/myapp-deployment
#rollout history
kubecyl rollout history deployment/mtapp-deployment
Rolling update
롤링업데이트를 사용하면 다운타임을 최소한으로 줄일수 있다.
기존 deployment_test.yml
apiVersion: apps/v1
kind: Deployment
metatdata:
name: myapp-deployment
labels:
app: myapp
type: front-end
spec:
template:
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx:1.7.1
replicas: 3
selector:
matchLabels:
type: front-end
기존 pod 구성을 보면 1.7.1 버전의 nginx 를 볼수있다.
KDS-2:yaml kimdaesung$ kubectl create -f deployment_test.yml --record
deployment.apps/nginx-deployment created
KDS-2:yaml kimdaesung$ kubectl describe deployments.apps nginx-deployment
Name: nginx-deployment
Namespace: default
CreationTimestamp: Tue, 31 Mar 2020 17:03:54 +0900
Labels: app=nginx
type=front-end
Annotations: deployment.kubernetes.io/revision: 1
kubernetes.io/change-cause: kubectl create --filename=deployment_test.yml --record=true
Selector: type=front-end
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
type=front-end
Containers:
nginx-container:
Image: nginx:1.7.1
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-deployment-695c98f8c (3/3 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 4m42s deployment-controller Scaled up replica set nginx-deployment-695c98f8c to 3
KDS-2:yaml kimdaesung$ kubectl get deployments.apps nginx-deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 16m
nginx 버전을 최신으로 업그레이드
image: nginx #:[버전] 을 적어주지 않으면 자동으로 최신버전을 가져오게 된다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
type: front-end
spec:
template:
metadata:
name: nginx-pod
labels:
app: nginx
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
replicas: 3
selector:
matchLabels:
type: front-end
수정된 yml 파일 적용 후 확인
KDS-2:yaml kimdaesung$ kubectl apply -f deployment_test.yml
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
deployment.apps/nginx-deployment configured
KDS-2:yaml kimdaesung$ kubectl rollout status deployment/nginx-deployment
deployment "nginx-deployment" successfully rolled out
KDS-2:yaml kimdaesung$ kubectl get pods
NAME READY STATUS RESTARTS AGE
1pod-2container 2/2 Running 16 9d
myapp-deployment-7c87d856d5-5hhpd 1/1 Running 2 2d19h
myapp-deployment-7c87d856d5-7f5mh 1/1 Running 2 2d19h
myapp-deployment-7c87d856d5-tbtb9 1/1 Running 2 2d19h
nginx-deployment-68dd9f6c6d-ddx4t 1/1 Running 0 48s
nginx-deployment-68dd9f6c6d-ntlq8 1/1 Running 0 46s
nginx-deployment-68dd9f6c6d-sz9qf 1/1 Running 0 45s
redis-pod 1/1 Running 8 9d
replication-1pod-2container-9ntqv 2/2 Running 12 6d11h
KDS-2:yaml kimdaesung$ kubectl describe deployments.apps nginx-deployment
Name: nginx-deployment
Namespace: default
CreationTimestamp: Tue, 31 Mar 2020 17:21:35 +0900
Labels: app=nginx
type=front-end
Annotations: deployment.kubernetes.io/revision: 2
kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app":"nginx","type":"front-end"},"name":"nginx-deploym...
kubernetes.io/change-cause: kubectl create --filename=deployment_test.yml --record=true
Selector: type=front-end
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
type=front-end
Containers:
nginx-container:
Image: nginx
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-deployment-68dd9f6c6d (3/3 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 18h deployment-controller Scaled up replica set nginx-deployment-fbb556bdb to 3
Normal ScalingReplicaSet 57s deployment-controller Scaled up replica set nginx-deployment-68dd9f6c6d to 1
Normal ScalingReplicaSet 55s deployment-controller Scaled down replica set nginx-deployment-fbb556bdb to 2
Normal ScalingReplicaSet 55s deployment-controller Scaled up replica set nginx-deployment-68dd9f6c6d to 2
Normal ScalingReplicaSet 54s deployment-controller Scaled down replica set nginx-deployment-fbb556bdb to 1
Normal ScalingReplicaSet 54s deployment-controller Scaled up replica set nginx-deployment-68dd9f6c6d to 3
Normal ScalingReplicaSet 53s deployment-controller Scaled down replica set nginx-deployment-fbb556bdb to 0
Events 쪽을 보면 pod의 로그를 볼수 있다.
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 18h deployment-controller Scaled up replica set nginx-deployment-fbb556bdb to 3
Normal ScalingReplicaSet 57s deployment-controller Scaled up replica set nginx-deployment-68dd9f6c6d to 1
Normal ScalingReplicaSet 55s deployment-controller Scaled down replica set nginx-deployment-fbb556bdb to 2
Normal ScalingReplicaSet 55s deployment-controller Scaled up replica set nginx-deployment-68dd9f6c6d to 2
Normal ScalingReplicaSet 54s deployment-controller Scaled down replica set nginx-deployment-fbb556bdb to 1
Normal ScalingReplicaSet 54s deployment-controller Scaled up replica set nginx-deployment-68dd9f6c6d to 3
Normal ScalingReplicaSet 53s deployment-controller Scaled down replica set nginx-deployment-fbb556bdb to 0
'Kubernetes' 카테고리의 다른 글
쿠버네티스 노드 추가하기 (0) | 2020.04.18 |
---|---|
쿠버네티스 설치하기 (0) | 2020.04.09 |
쿠버네티스 기초 Deployment (0) | 2020.03.29 |
쿠버네티스 기초 ReplicaSet (0) | 2020.03.27 |
쿠버네티스 기초 Replication Controller (0) | 2020.03.26 |