DevOps

[k8s] RollingUpdate

곱창국수 2024. 6. 7. 14:36

개념

kubernetes에서는 무중단 배포방식을 지원한다. 대표적인 무중단 배포방식으로는 Rolling Update라는 방식이 있다.

배포방식을 간략하게 설명하면, 새로운 Pod를 띄우고, 해당 Pod가 정상적으로 배포된 것이 확인되면, 기존 Pod가 하나 줄어드는 방식으로 점진적으로 업데이트된 Pod로 교체하여 무중단을 보장하며 배포하는 방식이다.

 


실습

 다음 yaml을 rolling update 방식으로 배포하자!

 

rollingupdate.yaml

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
  namespace: default
spec:
  replicas: 4
  selector:
    matchLabels:
      name: webapp
  strategy:
      rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        name: webapp
    spec:
      containers:
      - image: (원하는 이미지)
        name: simple-webapp
        ports:
        - containerPort: 8080
          protocol: TCP

 

kubectl apply -f rollingupdate.yaml

 

배포가 되었고, 새로운 이미지로 upgrade가 진행되는 경우 maxSurge 비율로 새로운 Pod가 추가되고, maxUnavailable 비율로 Pod가 제거된다.

 


 

이론적으로 어려운 내용은 아니지만, 무중단 배포는 현재 가장 많이 쓰이고, 흔하게 실무에서 사용되는 내용인 만큼 해당 배포 방식이나 이론에 대해서는 명확하게 알아야한다.