쿠버네티스

반응형
반응형

최근에 스터디에서 쿠버네티스를 하게 되었다.
그 과정에서 15단계로 배우는 도커와 쿠버네티스를 공부하게 되었다.
그래서 이를 바탕으로 작성하려 한다. 
이 책에 나와 있는 최대한의 정보를 내 나름대로 가공해서 전달할 예정이다.
그런 과정에서 이해하기 힘든 표현이 존재할 수 도 있겠지만, 나에게 그딴건 중요하지 않는다.
왜냐하면 남들이 어떻게 이해했냐가 중요한것이 아니라 내가 쿠버네티스를 이해하는 것이 중요하다고 생각하기 때문이다.
그래서 모든 내용들을 내가 궁금한 것 으로 채울 예정이다.

쿠버네티스란?

쿠버네티스는 컨테이너화된 애플리케이션을 효율적으로 배포하고 운영하기 위해 설계된 오픈 소스 플랫폼이다.

이라고 하는데 솔직히 컨테이너가 뭔지 모르겠다.
이에 대한 내용은 나중에 2장에서 설명할 것이지만
내 생각에는 

이 컨테이너와 크게 다른게 없다고 생각이 든다. 여기에 대한 전문가는 아니지만
컨테이너의 특징은 이동하기 쉽고, 컨테이너 안에 무엇이든지 넣을 수 있는다는 특징을 가진다고 생각한다.
쿠버네티스의 컨테이너와 100%일치한다고 말할 수 는 없지만, 같은 용어에서 출발한게 아닐까 생각이 든다.
용어 이름을 만들때 아무이름이나 짓지않을거라 생각한다.
용어를 만든 사람도 기억을 해야 하기때문에 최대한 그것을 잘 설명할 수 있는 단어로 선택할거라 생각이 든다.
따라서 쿠버네티스의 컨테이너도 이러한 속성이 있을 거라 추측해 본다.

쿠버네티스의 컨테이너에 대해 특징이 존재하는데 필요한 라이브러리나 운영체제 패키지등을 모두 담아서 불변의 실행 환경을 가진다고 한다. 이렇다는 이야기는 한번 내용물이 결정된 컨테이너는 내용물을 바꿀 수 없다는 것을 뜻한다.

만약 관계자가 아닌 사람이 공사장 컨테이너의 구조물을 변경하려 한다면 하지못하게  막을지도 모른다. 

쿠버네티스의 개요

구글의 사내 운영 시스템인 Brog를 오픈 소스로 만든거라 한다. 
오오 😯😮😛😀😁

쿠버네티스를 이해하기 위해서 Brog라는 시스템을 이해할 필요는 없지만 뭐랄까 범접할 수 없다고 해야하나.
아무튼 대단한것 같다.

large-scale cluster management at google with borg 이게 그 논문이라는데 궁금한 분들은 한번쯤 보는것도 나쁘지 않을 것 같다.

쿠버네티스를 이용해서 여러가지를 할 수 있지만,
내 생각에는 공통점이 존재할거라 생각한다. 내 생각에 핵심은 container이라고 생각한다. 
컨테이너를 어떻게 움직일지 여러개로 할지 등등 이러한 과정에서 쿠버테니스가 할 수 있는것들을 말할 수 있을거라 생각한다.

컨테이너의 이해

컨테이너를 사용하는 이유는 다음과 같다고 한다.
 1. 인프라의 사용률 향상
이것 부터 생각하자면 인프라? 인프라는 환경이다. 그렇다는건 컨테이너가 인프라를 뜻하는 걸까?
이러면 2가지 모두 생각할 필요가 있는데 먼저 컨테이너가 인프라라는 것부터 생각해보자.
이렇게 되면 인프라를 변경할 때마다 컨테이너를 바꿔주면 되기 때문에 인프라의 사용률이 향상되는 것은 맞다.
컨테이너가 환경이라고 말한다면 평행 세계관을 특징으로 둘 수 있다.
그런데 컨테이너를 바꾸는 행위는 어떤것을 의미할까? 여기에서 답을 내리기가 어려워졌다.
두 번째는 컨테이너는 인프라가 아니라는 것을 생각해보자. 하지만 첫 번째에서 해결 하지 못한 컨테이너를 바꾼다는 건 어느정도 
설명이 가능하다.
바로 막혀 버렸는데 이게 왜 인프라의 사용률 향상인거지? 잘 모르겟다.
그러면 첫 번째 가정이 맞는 걸까? 만약에 2가지 모두 접목을 시킨다면 어떨까?
컨테이너는 행성이고 그 밖을 우주라 생각해보자. 그러면 컨테이너 자체도 인프라고 컨테이너도 인프라가 존재한다.
만약, 환경을 수시로 바꿀 수 있다면, 컨테이너를 바꾸면 되기 때문에 사용률이 향상될 것이고,
아무래도 실제 환경보다 컨테이너 환경이 더 작기 때문에 효율적이라 생각한다.
바꾸는 행위는 외부 인프라에서 하기 떄문에 걱정안해도 된다.

원래는 빠른 기동 시간과 불변 실행 환경도 존재하지만 나도 모르게 설명해 버렸다. 

가상 서버와 컨테이너의 차이점

나는 컨테이너도 가상 서버라 생각한다. 그런데 이렇게 나눠지는 이유를 생각해보자.
이것을 있는 그대로 생각해보면 가상 서버는 실제로 존재하지 않는 서버를 말하는 것이고
컨테이너는 서버를 컨테이너에 보관해서 사용하는것을 말하는 것 같다.
그렇다는 이야기는 컨테이너는 마치 실제 서버처럼 사용이 된다는 이야기인데
사실상 컨테이너를 구축하는 환경은 실제 환경이 아니다. 여기서 헷갈리기 시작한다.
즉, 가상 환경을 구축한뒤, 그 안에 컨테이너를 집어넣어 그안에 각각 가상 서버가 돌아가게 만드는 시스템인 것 같다.
어찌 되었든 컨테이너를 구축하고 있는 가상 환경 입장에서는 컨테이너라는 건 실제 서버라는 뜻이다.
왜냐하면 같은 환경에서 시작되었기 때문이다.

만약에 평행 우주가 존재한다면 우리는 같은 세계관을 서로 공유하는 꼴이기 때문에 이 환경은 우리한테는 진짜라는 이야기가 된다.

그러면 가상 서버은 어떨까?
가상 서버도 컨테이너 처럼 여러개 구축이 가능하다. 그런데 컨테이너는 이것들을 관리해주는 환경이 존재하는것에 반에 
가상 서버는 그런것이 존재하지 않는다.
각자 나라마다 언어, 법 모두 다르다. 각 나라를 갈때 마다 그 나라에 맞는 법을 적용해야 한다.
이것과 매우 유사하다고 생각한다. 각 가상 서버를 갈려고 한다고 가정해보면,
그 가상 서버에 맞는 행동을 취해야 한다.
가령 첫 번째 가상 서버는 윈도우고 두 번째 가상 서버는 맥이라 가정 했을 때
각 가상 서버를 갈때마다 윈도우와 맥의 기본적인 사용법 정도는 알아야 한다.
물론 이것은 컨테이너도 틀리지 않는다. 다만 각 서버로 이동할때마다 비용이 발생한다. 왜냐하면 이동했으니까.
하지만 컨테이너는 이동하는 개념이 아닌 바꾼다는 개념이기 때문에 추가적인 비용은 발생하지 않는다.
바꿀 때 드는 비용? 이것만 감수하면 된다.

근데 이상하다. 이렇게 가상 서버를 만들었는데 이것을 어디다 구축해야 하는걸까?
당연한 이야기겠지만 실 서버에 구축을 해야 한다.
근데 문제가 발생했다. 실제 서버에도 OS라는게 존재하는데 어떻게 가상 서버의 OS와 구분 지을 수 있을까?

이럴때 사용되는 것이 하이퍼 바이저다. 솔직히 하이퍼 바이저에 대해 잘 모르겠다. 근데 그림에 하이퍼 바이저가 존재하기때문에 이것을 이용하면 된다고 생각했다.

그래서 하이퍼 바이저가 뭐지?

하이퍼 : 최고의라는 뜻을 가지고 있구
바이저는 잘 모르겠다. 찾아보니

앞에 보면 유리막이 존재하는데 이게 바이저라고 부른다. 오토아이 헬멧에 존재한다. 
눈을 보호하기 위해 만들어진것 같다.
그래서 나는 방어막이라고 해석하려 한다. 즉, 하이퍼 바이저는 최고의 방어막이라 직역할 수 있다.
이것으로 유추해보면 가상 서버들으로 부터 실 서버를 보호하기 위한 목적으로 사용되어지는 것 같다.

그러면 컨테이너는 어떨까?
컨테이너는 방어막이 필요없다. 왜냐하면 스위칭하면 되기 때문이다.
그래서 속도 측면에서 좋다고 한것이다.

이 두 개는 서로 합칠 수 있다. 가상 서버안에 컨테이너가 존재할 수 있구 그 반대도 있을 수 있다.

책 내용은 더 남아 있지만 1장부터 3장은 이 정도면 충분하다 생각이 든다.
* 3장은 설명도 안함.  

반응형

'기타' 카테고리의 다른 글

[서평] 처음 배우는 네트워크 보안  (0) 2021.12.25
[java] maven 대신 gradle 를 사용해야 되는 이유  (0) 2021.10.11
UML  (0) 2021.07.17
2021년 상반기 회고  (4) 2021.07.17
[서평] 김상형의 SQL 정복  (0) 2021.06.20

댓글

Designed by JB FACTORY