Kubernetes

우리는 어떤 서비스든 원활하게 진행되기 위해서는 충분한 서버 자원이 있어야 한다는 것을 알고있다.
- 신규 게임의 서버 문제
- 수강신청
- 등
쿠버네티스는 위의 문제 발생시 다양한 방법으로 문제해결을 진행한다.
예제 시나리오.
한 회사에서 3개의 서비스를 오픈하고 있다고 하자.
- 이른 아침에는 A 서비스의 접속량이 높다.
- 3대의 서비스
- 정오가 되면 B 서비스만 접속량이 높다.
- 3대의 서비스
- 밤이 되면 C 서비스만 접속량이 높다.
- 3대의 서비스
세가지 서비스 모두 다른 시간대의 트래픽이 적더라도 특정 시간의 서비스 운영을 위해서
3대의 서비스가 필요하다. → 총 9대의 서비스 필요
쿠버네티스의 가상화 기술 사용시
AutoScaling
하루동안 A, B, C 서비스의 평균 트래픽을 계산해보면 4대분의 자원만 필요하다.
이때 쿠버네티스에서는 4대분의 자원만 준비해놓고 Auto Scaling ****기술을 활용해
새벽/정오/저녁이건 트래픽 양에 따라 알아서 서비스의 자원량을 변경해준다.
Auto Healing
그리고 기존 시스템의 경우 서버 장애 상황에 대비해서 한 대의 여분 서버가 필요한데 각 서비스별로 백업 서버를 줘서
운영 중인 서버가 죽었을 때 즉각적인 대응을 한다.
따라서, 쿠버네티스가 없는 시스템에서는 총 3대의 서버가 더 필요하다.
하지만, 쿠버네티스 사용시 장애가 난 서버 위에 있는 서비스들이 다른 서버로 자동으로 옮겨주는
Auto Healing 기능이 있기 때문에 한 서버에 장애가 생기더라도 여분의 서버 한대만 있으면 알아서
서비스를 유지시켜준다.
Deployment
그리고 이번엔 서비스에 버전 업데이트가 필요한 경우에 서비스에 중단이 허용될 때는,
모든 서버를 내렸다가 업데이트 작업 후에 다시 올릴 거고 무중단 서비스를 해야 되는 경우
한 서버씩 내렸다가 업데이트 작업 후에 서비스를 올리는 방식을 사용한다.
이때, 쿠버네티스는 deployment라는 오브젝트를 통해서 업데이트 방식에 대해 자동적으로 처리한다.
- RollingUpdate
- ReCreate
이외에도 쿠버네티스는 여러 기능들에 관해 운영 자동화를 지원한다. 또한, 계속 업데이트가 진행중이다.
즉, 쿠버네티스 사용시 운영 환경이 더욱 편리해지며 서비스 효율이 증가한다.
해당 서비스 효율로 인해서 서버가 적어지면 그만큼 유지 보수 비용이 적어지게 되기 때문에 큰 기업들이 관심을 갖게 되는 것이다.
- 운영의 규모가 커질수록 Kubernetes의 효과가 더욱 더 커진다는 거진다.
- 규모가 작은 운영 환경에서도 이 다양한 방식의 운영에 대해서 일일이 계산할 필요가 없기 때문에 큰 도움이 된다.
'Infra > Kubernetes' 카테고리의 다른 글
[Kubernetes] ConfigMap, Secret - Env, Mount (0) | 2024.09.02 |
---|---|
[Kubernetes] Volume - emptyDir, hostPath, PV/PVC (0) | 2024.08.28 |
[Kubernetes] Service - ClusterIP, NodePort, LoadBalancer (0) | 2024.08.27 |
[Kubernetes] Pod - Container, Label, NodeSchedule (0) | 2024.08.12 |
[Kubernetes] 쿠버네티스 소개 (0) | 2024.08.05 |