리눅스 흐름으로 이해하는 컨테이너
리눅스와 컨테이너 발전 흐름
리눅스 흐름 설명
- 유닉스에서 파생된 리눅스는 무료라 인기가 많았음
- 대표적인 것이 debian 계열(대표적으로 ubuntu)과 Red Hat 계열
- RedHat 계열의 경우 원래는 fedora(테스트), RedHat(유료), CentOS(무료, 복제판)로 이어져서 무료인 CentOS는 인기가 많았음.
- 하지만 IBM에 인수된 후로 RedHat으로 사용자가 옮겨가게 하기 위해 fedora(테스트), Centos stream(테스트), RedHat(유료)으로 바뀜
- 그 이후 RedHat의 복제판을 만들기 위해 rocky linux, alma linux가 나옴 (rocky linux가 점유율이 높기에 이것을 강의에서 사용)
컨테이너 흐름 설명
- 기본적으로 chroot(사용자 격리, 파일 격리, 네트워크 격리), cgroup(자원격리), namespace(프로세스 격리)라는 개념이 존재함
- LXC(Linux Containers)가 위 세가지를 합쳐서 최초의 컨테이너를 만듦
- 도커는 LXC를 기반으로 훨씬 쉽게 만든거
- rkt는 도커에 보안을 강화해서 만들어짐
- CNCF는 컨테이너 계열 비영리 단체로 graduated와 incubating이 존재함
- 여기 졸업하면 웬만해서는 그냥 써도 됨
- 대표적으로 containerd(graduated)와 cri-o(graduated)가 존재함
컨테이너 오케스트레이션 흐름 설명
- 특징
- App을 컨테이너에 담아서 배포한다
- 시스템 운영 노하우를 많이 가지고 있다.
- 컨테이너 생성, 조회, 수정, 삭제에 해당하는 모든 범위를 해줌.
- 대표적으로 쿠버네티스, 노마드, 도커 스웜 등이 존재함
- 쿠버네티스 기능이 많기에 이것의 관리를 더 용이하게한 것들이 등장함
- OPENSHIFT, RANCHER, VMware Tanzu
- private하게 서버 돌릴 때 많이 사용
- 현재의 컨테이너는 쿠버네티스와의 연결이 중요해짐
쿠버네티스 흐름으로 이해하는 컨테이너
컨테이너와 쿠버네티스의 연결 관계
- 컨테이너에는 여러 수준이 존재함
- 커널 수준
- chroot, namespace, cgroup
- 컨테이너 런타임
- 프로그래밍 언어처럼 저수준은 컴퓨터와 가까운 것 고수준은 사람과 가까운 것이라고 생각하면 됨
- 고수준
- 저수준
- 쿠버네티스 구조
- kube-apiserver
- kubelet
- 컨테이너 맞춤형 API를 호출
- 1.5부터 인터페이스와 구현부를 분리함
- 현재 대부분의 컨테이너 런타임들은 OCI를 맞추기 때문에 이미지 공유가 가능함
출처: https://inf.run/7dm3q