일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- oauth2
- AWS
- 백준
- 스프링부트
- 소셜로그인
- 파이썬
- springsecurityoauth2client
- 리프레시토큰
- 트랜잭션
- 액세스토큰
- 티스토리챌린지
- 프로그래머스
- 스프링시큐리티
- 데이터베이스
- docker
- 도커
- 메시지
- springsecurity
- 국제화
- 토이프로젝트
- 오블완
- springdataredis
- githubactions
- JIRA
- 스프링
- yaml-resource-bundle
- Spring
- java
- 재갱신
- CI/CD
- Today
- Total
땃쥐네
[Kubernetes] 쿠버네티스란? 본문
이번 글에서는 쿠버네티스 기술이란 어떤 기술인지, 왜 도입됐는지, 무엇을 할 수 있는 지 이야기합니다.
도커 기술
도커 기술은 애플리케이션을 컨테이너 단위로 독립시켜 실행할 수 있도록 해준다.
우리 애플리케이션을 '이미지'라는 형태로 구성하고, 이 이미지를 기반으로 여러 대의 '컨테이너'들을 실행하는 형식으로 관리할 수 있게 한다.
도커 기술을 사용하면 우리는 동일한 애플리케이션을 여러 환경에 배포할 때 매번 환경을 새로 구성하지 않고, 그저 이미지를 기반으로 컨테이너 형태로 편리하게 애플리케이션을 실행시킬 수 있게 한다.
언제든 편할 때 컨테이너를 실행시키고, 죽이는 식으로 애플리케이션 서비스를 운영할 수 있게 된다.
이 기술은 여러 웹 서비스들의 운영 관리 관점에서 혁신이였고, 지금도 현업에서 주로 사용되어지고 있다.
도커 기술의 한계
하지만 서비스 규모가 점점 커지면서, 100대, 1000대 단위의 컨테이너들을 다루는 레벨에 가면 어느 정도 한계가 있다.
동일한 컨테이너를 1000개 배포하는 상황을 생각해보면 컨테이너 생성 명령을 1000번 입력해야한다.
도중에 컨테이너 댓수를 2000대로 늘리려면 1000번 명령어를 더 입력해야하고, 500대로 줄이려면 컨테이너 삭제 명령을 500번 입력해야한다.
또 도중에 컨테이너에 장애가 생겨서 죽더라도 이를 복원시키려면 개발자가 모니터링을 하고 그 죽은 갯수만큼 직접 컨테이너를 다시 생성해주는 작업을 해야한다.
이렇게 수천대 생성한 컨테이너들쪽으로 부하분산을 시키는 작업도 별도의 시스템(외부 로드밸런서)을 통해 해결해야 한다.
서비스를 도중에 업데이트하려면, 1000대의 서버를 수동으로 죽이고, 새로운 버전의 컨테이너를 1000대 생성해서 다시 연결해줘야한다.
쿠버네티스의 도입
쿠버네티스는 이런 불편함을 해결하기 위해 개발되어 제공되는 오픈소스 시스템이다.
쿠버네티스를 활용하면 1-2개의 컨테이너, 이를 넘어 대량의 컨테이너 관리를 자동화시킬 수 있다.
단순하게 숫자값을 바꾸는 명령을 입력하면 특정 애플리케이션을 원하는 댓수만큼 늘리거나 줄일 수 있고,
도커 이미지의 태그를 변경하는 명령을 입력하면 새로운 버전으로 애플리케이션을 단계적으로 업데이트할 수 있다.
요청이 들어왔을 때 동일한 컨테이너 묶음들에게 골고루 요청을 부하분산시킬 수 있는 기능도 제공한다.
부하가 많아졌을 때 서버 대수를 동적으로 늘리기도 쉽게 설계되어 있고,
도중에 특정 컨테이너가 몇 대 죽더라도 다시 원래 지정했던 대수만큼 컨테이너가 동작하도록 재시작을 해주는 기능도 제공한다.(셀프 힐링)
그 외에도 다양한 기능들이 더 제공되고 있다...
막상 쿠버네티스 초보자 입장에서는이런 말만 들으면 모든 것이 감동적으로 와닿지 않는데(나도 그랬다.) 결국 직접 쿠버네티스를 통해 컨테이너들을 여러대 편리하게 띄우고, 도중에 업데이트도 해보고, 클라우드 서비스에 배포하는 경험을 몇 번 해보다보면 그 편리함을 제대로 느낄 수 있다.
이번 글에서부터는 내가 그동안 학습한 쿠버네티스 기술 사용법을 학습정리해보자 한다.
'DevOps > Kubernetes' 카테고리의 다른 글
[Kubernetes] 스프링부트 파드 실행 (+ ImagePullPolicy 주의점) (1) | 2025.03.02 |
---|---|
[Kubernetes] 파드-쿠버네티스 네트워크, 파드 외부에서 접속하기 (0) | 2025.02.27 |
[Kubernetes] 파드(Pod) 생성 및 목록 조회 (0) | 2025.02.26 |
[Kubernetes] 파드(Pod) (0) | 2025.02.26 |
[Kubernetes] Windows 로컬 환경에서 쿠버네티스 설치 (0) | 2025.02.25 |