[쿠버네티스 기초다지기] 04장 - 업데이트, 단계적인 배포, 오토스케일링


04장 업데이트, 단계적인 배포, 오토스케일링

스케일업하기

  • scale 커맨드로 스케일 업
    • 복제 컨트롤러와 디플로이먼트 추상 요소 모두에 대해 동작
kubectl scale --replicas=3 rc/node-js-scale

테스트, 릴리스, 전환

  • A/B 테스트
    • sessionAffinity 사용하는 새로운 서비스 생성
    • sessionAffinity 를 ClientIP로 설정
      • sessionAffinity : ClientIP
    • 클라이언트를 동일한 백엔드 파드로 전달할 수 있게 함
    • 동일한 서비스 레이블 설정
    • 셀렉터를 기반으로 하여 서비스 풀에 추가됨
    • 새로운 버전이 예상대로 동작하는지 확인하기 위해 livenessProbe, readinessProbe 정의

애플리케이션 오토스케일링

수평 파드 오토스케일러

  • 애플리케이션을 스케일링하는 임계치를 자동으로 설정하는 방법을 제공
  • 현재 CPU에 대해서만 지원
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: node-js-scale
spec:
  minReplicas: 1
  maxReplicas: 3
  scaleTargetRef:
    apiVersion: v1
    kind: ReplicationController
    name: node-js-scale
  targetCPUUtilizationPercentage: 20
  • 커맨드 라인에서의 사용
kubectl autoscale rc/node-js-scale --min=1 --max=3 --cpu-percent=20
  • CPU사용이 20%가 넘으면 파드를 최대 3개로 스케일업
  • CPU 사용률 확인
kubectl get hpa

클러스터 스케일링

  • 환경 변수로 지정
  • GCE에서 클러스터 스케일업
    • Instance groups 에서 그룹 수정으로 인스턴스 개수 변경
    • 오토스케일링과 스케일다운 전환 시 스케줄링될 공간이 있는지 항상 확인해야 함