🟠 kubernetes란?
Docker Swarm
과 마찬가지로오케스트레이터
의 일종임Docker Swarm
이 아닌,kubernetes
를 사용하는 이유는
: 더 많은 기능
: 많은 컨테이너들
: 더 많은 서포터들이 있기 때문임
🟠 kubernetes 의미? (1)
Docker Swarm
처럼오케스트레이터
의 역할을 함- 진두지휘, 컨트롤하는자, 매니저역할, 여러개의 서비스가 문제없이 상호작용하면서 동작하도록 도와주는 자를 의미함
- 구글에서 만든 SW인
kubernetes
이름은 고대그리스에서 온것이고, 현대어로 말하면 "Pilot" or "Helmsman"이라고 부름 (배의 방향을 조정함)
🟠 kubernetes 의미? (2)
- 쿠버네티스란?
: SW의 이름, 오픈소스 SW임
:Docker Swarm
과 같은 영역에 있는 SW
:Docker Swarm
의 역할이오케스트레이터
이니, YAML 파일과 같이Infrastructure as Code
로 만들어진 서비스에 대한 설명을 자동화하여 실행하고, 필요한 만큼 scale up & down하는 기능들을 가지고 있고,Docker Swarm
보다 강한 management임
ex) 앞에 대장을 만들고, 대장이 로드밸런싱(load balancing)을 할 수 있음
ex) 5개를 유지해달라고 요청하면, 죽은것들을 다시 살릴 수도 있음, 네트워크와 관련해서도 많은 기능을 제공함
: management의 기능이Docker Swarm
보다 훨씬 좋고, 도커를 밑에 깔고 움직이는 것이므로 컨테이너 기술은 별도로 존재해서 컨테이너들을 다루는게kubernetes
임
🦜 앞으로 배울 부분은 도커로 컨테이너를 만들고,kubernetes
로 이들을 deployment하고, scaling하고, management하는 형태가 될것임kubernetes
는 구글이 자체적으로 만든 SW이기에 도커가 성공하는 모습을 보았고, 리눅스 컨테이너를 가지고 계량하는 형태로 해오다가, 1주일에 수억개의 컨테이너를 다루는게 필요하여서 자체적으로 본인이 다루기 위한 SW로 개발을 했고, 이를 오픈소스로 제공함
ex) 구글의 유명한 프로젝트로 Borg * Omega가 있음
🟠 Borg * Omega
- 구글
Borg * Omega
공통점은 수십만개의 컨테이너로 이루어진것에 타깃을 함Omega
는 매니지먼트보단scalabel
에 강점을 찍고잇음 (구글 borg와는 다른 프로젝트)
➡Borg * Omega
프로젝트를 통해서 구글 안에서 작은 어플리케이션들 or 컨테이너들을 관리하고, scaling(스케일링) 하는 프로젝트들이 진행해 왔다는 것을 볼 수 있음
➡ 이것이 모여서kubernetes
라는 SW가 탄생하는 계기가 됨
🟠 Cloud Native Computing Foundation (CNCF) (1)
kubernetes
가 유지 및 관리되는 곳- CNCF : 클라우드를 기반으로한 SW를 처음부터 생각해서 만듦
- SW 하나에 복잡한 기능을 모두 구현한 후에, 용량이 부족하면, 그 프로그램 하나를 여러개 CPU에서 돌렸다한다면,
Cloud Native
는 하나의 거대한 어플리케이션이 있을 때, 그 어플리케이션을 구성하는 서비스들이 있고, 그 서비스들의 이미지들이 있고, 이미지에 수많은 컨테이너들이 나올 수 있음
➡ 즉,Cloud Native
는 수천~수만개의 CPU, 디스크들을 연결하는 네트워크를 처음부터 생각하고 SW를 만들고 동작시키는 기술들에 관심이 있는 단체임
➡ 결국,CNCF
가kubernetes
SW를 관리하고, 유지하는 집단임
🟠 Cloud Native Computing Foundation (CNCF) (2)
- Cloud Native 단체
: 여기서Cloud
는 Virtual Machine(VM) 기반의 클라우드 컴퓨팅 (기술적으로 보았을 때), 컨테이너 기술 기반을 다 포함하고 있음
:Data center
라고 부르는 매우 큰 서버지향 프로그래밍 기법의 모든 것이라고 생각하면 됨
: CNCF 사이트에 접속하면, Fastest-growing (매우 빠름)
: kubernetes, prometheus, envoy와 같은 SW가 있음
: 개발자들의 수는 7만 2천, 쿠버네티스 관련해서 무료 강좌는 9만 1천, 쿠버네티스의 인증을 받는 변종이나 플랫폼들은 99개, CNCF 행사에는 13만명 정도 참여함 (2019년 기준)
🟠 Cloud Native Computing Foundation (CNCF) (3)
kubernetes
가 CNCF 산하에 프로젝트로 계속 진행이 되고 있고, SW 자체가 이 안에서 관리된다는 의미- CNCF에서 수많은 SW가 유지, 관리하는데 그 中 하나가
kubernetes
임- CNCF는 Linux Foundation은 자아 계열임 (차일드라고 불림)
➡ 즉, 리눅스 파운데이션 안에서 굉장히 많은 SW와 기술들이 제안, 개발, 관리되는데, Data center고 부르는 서버쪽과 관련된 기술발전이 매우 큰 영역으로 발전 한 것임
➡ 따라서, 리눅스 파운데이션 산하로 데이터센터나 클라우드와 관련된 기술들에 중점적으로 하는 파운데이션을 하나 더 만들까? 하고 이야기를 한 것임 (CNCF이 출범 계기)
➡ 따라서, 리눅스 파운데이션의 서브그룹이다라고 할 수 있으며, CNCF는 클라우드 네이티브, 데이터 센터, 서버와 관련된 부분에 집중적으로 하는 단체임
➡ 따라서 리눅스 파운데이션과 떨어져 있는게 아니며, 매우 크기 때문에 분점처럼 만들어진 것ㅇ임
🟠 Cloud Native Computing Foundation (CNCF) (4)
- CNCF는 클라우드 네이티브 컴퓨팅 관련된 기술들에 전담화 되어있고, 리눅스 파운데이션과 마찬가지로,
kubernetes
와 같은 오픈소스 SW 개발에 대해서 유지 & 관리하는 부분들에 대해서 관여하는 곳임- 클라우드 네이티브 (같이 쓰이는 단어로 컨테이너, Depos, 애자일, CI, CD, 마이크로서비스)에 해당하는 기술들을 클라우드 네이티브 산하에서 함
- 상당량의 SW가
kubernetes
와 같이 컨테이너들을 오케스트레이션 하는 분야들에 대해서 많이 할애가 되고 있음- 결국, 리눅스 파운데이션에 대해서 이해해야 하지만, 데이터센터 프로그래밍은 이것보다 더 디테일하게 데이터센터에 CNCF가 있고, CNCF에 대한 이해도 필요함
- 리눅스 파운데이션의 도구들은 SW를 개발해서 해결해야 하지만, 클라우드 네이티브의 경우에는 문제지향의 SW들이 대거 빠르고 효율적으로 안정적으로 편하게 운영될 수 있는 환경을 제공함
🟠 kubernetes가 인기를 끌게 된 이유?
- 구글이 만들었기 때문
- CNCF에서 지원을 함
- 최초버전은 2014년 6월에 만들어졌음
- 최신버전은 인터넷 참고
- 깃허브에 오픈소스로 공개되어 있음
- 90% GO언어로 만들어짐
- 라이센스는 Apache 라이센스 2.0
- 웹사이트는 kubernetes.io
🟠 kubernetes by Go Language
- 구글이 만들었고, CNCF가 관리함
kubernetes
언어는 90% GO언어로 구성되어 있음
🟠 What kubernetes Manages
kubernetes
의 SW를 유지, 관리하는 CNCFkubernetes
의 개발언어는 GO 언어- (1) Containers의 cluster를 deploying(배포),관리
- (2) 어플리케이션을 실제로 운영할 수 있는 (deploying 할 수 있는) 도구가 될 것임
:Infrastructure as Code
로 yaml파일로 만들어서 그것을 어플리케이션으로 띄어주는 역할을 함 (Docker Swarm
과 같은 역할)- (3) scale up & down 하는 용량관리하는 부분들도 들어가 있음
: (더불어서, kubernetes 자체는 별도의 컨테이너를 독자적으로 만들지 않았다고 함) 그래서 기존에 컨테이너 기술들을 가지고 만든 도커, 컨테이너 기반의 어플리케이션을 관리할 것이고,
: 관리한다는 것은 다양한 의미를 내포하는데,Docker Swarm
이후로 쿠버까지 더 추가하는 이유인데 "로드밸런싱", "죽은것을 다시 살려주는 것",Docker Swarm
에도 있었지만, 업데이트 하는 업그레이드, 다시 롤백하는 기능들, 네트워킹, 이런 부분들이 훨씬 많이 강화되어있음 (컨테이너 기반의 어플리케이션을 좀더 효율적으로 쉽고, 다양한 기능을 용이하게 관리할 수 있게 해줌)- (4) 하드웨어 독립적으로 동작하겠금 함
- (5) 어플리케이션을 효율적으로 시작 & 관리 할 수 있음
🟠 Rise of Containers
- (1) 컨테이너 기술이 검증 됨
- (2) VM기술보다 컨테이너 기술을 요구하는 곳이 더 많음
🟠 kubernetes 고집하는 이유?
- 실제로 실무자들 사이에서 kubernetes가 가장 인기 많음
- 수십~억개의 컨테이너를 동작시킬 있음 + 도커보다 더 많은 기능들을 가지고 있음