도커 없이 컨테이너 만들기
목차 및 실습환경 구성안내
목차 및 실습환경 구성안내
컨테이너란 무엇일까요? 마법 상자를 열어 보도록 하겠습니다.제가 처음 도커를 접했을 때는 "vmware, virtualbox 와 뭐가 다르지?" vmware처럼 OS이미지도 있었고 터미널 환경에서 동작하는 모습 역시 똑같아 보였거든요.그렇게 시작하게 되었습니다. 도커는 무엇이고 컨테이너는 무엇인지 실체가 궁금하더라구요 컨테이너의 개념을 설명하고 컨테이너의 시작이라 할 수 있는 chroot에 대해 다룹니다.
1편에 이어 chroot의 탈옥문제를 해결하는 pivot_root를 다루고 남은 문제들을 해결하는 컨테이너의 발전과정을 살펴봅니다. 컨테이너가 신기술, 유행 같은 것이라고 생각했었는데, 나름 역사와 사연이 많은 친구네요. chroot로 시작하여 지금의 컨테이너로 성장하기까지 어떤 문제들이 있었고 그러한 문제들을 어떻게 해결하여 왔는지를 다뤄봅니다.
서비스 운영 중에 네트웍 장애를 만나면 곤란하곤 하는데요. 컨테이너는 가상 네트웍을 기반으로 하고 있고 이 위에서 컨테이너 간의 통신이 어떻게 이루어지는지를 잘 이해하고 있으면 개발과 운영에 많은 도움이 됩니다. 네트워크 네임스페이스를 이해하기 위한 네트워크 기초 개념들을 다루고 네트워크 네임스페이 실습과 함께 컨테이너 환경에서의 가상 네트워크 구축이 어떻게 이루어지는지를 학습합니다.
3편에 이어서 네트워크 네임스페이스를 외부 네트워크와 통신이 가능하도록 구성해 봅니다. 그리고 3,4편에서 다룬 내용을 바탕으로 도커 컨테이너의 네트워크 구성과 비교해 봅니다.
1,2편에서 다룬 chroot와 pivot_root를 통해서 root filesystem을 isolation하였습니다. 마운트 네임스페이스는 파일시스템 마운트를 isolation 하는 것으로 이미 pivot_root에서도 사용하였지만, mount 처리를 격리함으로써 컨테이너 내부의 파일시스템 구조를 독립적으로 유지합니다. 실제 도커 컨테이너의 이미지 tarball을 이용하여 pivot_root와 mount namespace까지 적용하여 실제 도커 방식과 유사하게 컨테이너를 기동하여 봅니다. 그리고, 컨테이너 이미지 용량/중복을 해결하기 위한 overlayFS 에 대하여 다룹니다.
분산환경에서 컨테이너 간의 통신은 어떻게 이루어 지는 것일까요? 3,4편에서는 호스트 안에 가상네트워크를 만들어보았습니다. 6편에서는 이를 바탕으로 분산환경에서 호스트 간에 가상 네트워크로 통신이 가능하도록 만들어 봅니다. 이 방법은 실제 쿠버네티스 flannel 등의 CNI에서 사용하고 있는 vxlan 기반의 오버레이 네트워크 구성을 다룹니다.
클라우드 위에서 컨테이너에 가상 IP를 부여하고 이러한 가상 IP대역을 기반으로 컨테이너 간에 통신이 어떻게 가능한 것일까요? 동적으로 오버레이 네트워크를 구성해 봅니다. 지난 시간 가상IP 대역을 기반으로 서로 다른 물리노드 간의 통신을 가능하기 위하여 가상 디바이스를 생성하고 ARP cache와 Bridge FDB 정보를 입력해주고, vxlan 기반의 UDP encapsulation과 터널링을 통하여 가상디바이스의 L2정보를 목적지 노드로 전송하여 통신이 되는 것을 확인하였습니다. 이에 대한 내용을 바탕으로 가상네트워크를 추가하고 통신할 때 커널 이벤트를 캐치하여 동적으로 arp, fdb 갱신처리하여 컨테이너 간에 통신이 가능하도록 구성해 봅니다.
pid namespace는 컨테이너 안에서 독자적인 "process tree" / "process id 체계"를 제공합니다. 어떻게 가능한 것일까요? 이를 이해하기 위하여 proc filesystem과 pid 쳬계에 대해서 얘기합니다. 그리고 프로세스 트리의 최상위인 특별한 프로세스 pid1 에 대하여도 다룹니다
컨테이너의 root와 호스트의 root는 같은 것일까요? 다르다면 어떻게 다를 수 있을까요? 혹은 같다고 하면 컨테이너에서 호스트의 자원에 액세스하고 변경하는 것이 가능할까요? 9편에서는 컨테이너 보안관점에서 중요한 user namespace에 대해서 다뤄봅니다.
지금까지 컨테이너를 이해하기 위하여 리눅스의 네임스페이스와 cgroup을 살펴보았고, 프로세스, 네트워크, 파일시스템 등 관련 내용들도 함께 다루어 보았습니다. 본 편에서는 지금까지 다루었던 내용들을 총망라하여 완전한 컨테이너를 만들어 보려고 합니다. 앞의 자료를 아직 안보신 분들도 본 실습을 통하여 컨테이너를 직접 만들어보고 개괄적인 이해와 재미를 얻으시길 바랍니다. :-)
쿠버네티스 메인 컴포넌트들을 "손"으로 한땀한땀 설치해 봅니다.
쿠버네티스 메인 컴포넌트들을 직접 빌드하고 디버깅 할 수 있는 환경을 구성해 봅니다.
쿠버네티스 운영해 보신 분들 100이면 100 어렵다고 꼽는 이슈 중에 하나죠. 바로 "인증"(지옥)입니다. general하게 인증에 대해 먼저 알아보고 쿠버네티스 인증을 살펴봅니다.
쿠버네티스의 모든 길목, kube-apiserver에 대해 알아봅니다.
쿠버네티스의 심장 컨트롤러에 대해 다룹니다. 빌트인 컨트롤러들을 기동하고 관리하는 컨트롤러 매니저에 대해 알아보고 다양한 컨트롤러들을 소개하고 이들이 협력하여 일하는 방법에 대해 얘기합니다.
쿠버네티스의 공인중개사 스케줄러를 소개합니다. 스케줄러가 파드가 원하는 노드를 골라내는 방법을 설명하고 스케줄러의 구조와 확장에 대해서 얘기합니다.
쿠버네티스의 노드 담당자 kubelet에 대해 얘기합니다. kubelet이 어떤 일을 하고 어떻게 동작하는지 kubelet의 구조를 같이 살펴보면서 이해하는 시간을 갖도록 하겠습니다.
목차 안내
목차 안내
목차 안내
분산아키텍처의 주요주제인 복제에 대해 알아봅니다.
한 통에 담을 수 없는 데이터는 어떻게 처리해야 할까요? 파티셔닝에 대해 알아봅니다.
야생의 분산환경에서 시스템간의 여러가지 연산을 어떻게 잘 처리할 수 있을까요? 트랜잭션에 대해 알아봅니다.
분산 환경에서는 예상치 못한 여러가지 문제들이 일어날 수 있습니다. 이 문제들에 대해 알아봅니다.
분산 환경에서 일관성을 보장하고 시스템 간에 합의를 이루는 방법에 대해 얘기합니다.
리눅스에서는 "모든 것이 파일"이라는 얘기가 있죠. 컨테이너가 호스트로 부터 파일시스템 독립을 이뤄내는 과정을 설명드립니다. 컨테이너 전용 루트파일시스템을 구성하는 방법, 효율적으로 컨테이너를 유통시키기 위한 패키징 방법, 그리고 컨테이너의 레이어 구조를 살펴보고 실습합니다.
컨테이너의 발전사를 따라가면서 실습과 함께 컨테이너의 각 요소를 체험해 보실 수 있습니다. 교육이나 발표에서 잘 다루지 못했던 부분도 보완하다 보니 분량이 상당한데요. 책이라 생각하시고 여유를 갖고 공부하시면 도움이 되실 것 같습니다. 본 연재는 도커와 같은 툴 도움없이 컨테이너를 직접 만들어 봄으로써 컨테이너를 본질적으로 이해하는 것을 목표로 합니다.
카카오엔터프라이즈 테크앤 블로그에 컨테이너의 내부를 심도있게 들여다 보는 연재를 시작하였습니다. 컨테이너를 다루기에 앞서서 관련된 개념과 용어들을 정리하고 앞으로 다루게 될 내용들에 대해 안내합니다.
실습으로 istio sidecar proxy 이해하기
검색서비스 개발자로서 컨테이너 아키텍처와 동작 원리를 직접 학습하고 동료들과 나누면서 사내 교육 과정으로 탄생하게 된 '컨테이너 인터널'을 if(kakao)2022를 통해 외부에 공개합니다. 클라우드와 컨테이너 기술에 관심이 있는 서비스 개발자를 온라인에서 만나 쉽게 컨테이너 동작을 이해하고 직접 컨테이너를 만드는 실습을 진행합니다.
istio in action 3장 실습
istio in action 4장 실습1
istio in action 4장 실습2
istio in action 4장 실습3
istio in action 4장 실습4
istio in action 5장
istio in action 6장
istio in action 7장
istio in action 8장
istio in action 9장
istio in action 9장
istio in action 9장
istio in action 9장
istio in action 실습환경 안내
istio in action 9장
istio in action 10장
istio in action 11장