반응형
리뷰 (Review)
더보기
Playbook 제어 구조
- 순차 구조 - 명령이 기술된 순서로 순차적으로 수행하는 구조
- 선택 구조 - 조건에 따라 명령의 실행 순서를 변경할 수 있는 구조
- 반복 구조 - 특정 명령을 일정 횟수 동안 반복해서 수행하는 구조
반복문
- Task를 반복해서 동작 시킬 때 사용
- with_* 키워드와 loop 키워드 사용
조건문 (선택문)
- Task를 특정 조건에만 작업 수행을 하도록 구성할 때 사용
- when 키워드 사용
Include (포함)
- Playbook의 내용이 많아지거나 복잡한 경우 더 작은 단위로 나누면 관리의 편의성이 높아진다.
- Playbook을 모듈로 나누어 관리하게 되면 재사용성이 높아진다. (모듈화)
- import - role, task, playbook 등을 정적으로 포함
- include - role, task, playbook 등을 동적으로 포함
Handler
- Handler는 함수(function)과 비슷한 성격 - 단위 기능 실행
- 반복되는 동작에 대하여 별도의 Handler로 정의해서 사용 가능
- handlers 섹션에 Task를 정의, tasks 섹션과 같은 level
Roles
- 쉽게 말하면 Task의 집합
- 역할에 따라 roles 폴더에 필요한 파일들을 별도로 생성하여 사용
- 역할에 따른 role을 작성해서 관리함으로써 관리의 편의성과 재사용성을 높일 수 있는 프로젝트 관리 방법
현재까지 학습한 내용
- 직접 설치로 Application을 실행 (배포) 할 수 있는 Infrastructure 구성을 위한 요소 기술 - 기본 기술
- Infrastructure 구성 요소
- Server - 서비스 제공 컴퓨터
- Storage - 프로그램이나 데이터 저장 공간
- Network - Server나 Storage가 통신을 위한 환경 구성
- Linux
- 운영 체제(O/S, Operating System) 사용법
- Server (환경) 구축 방법
- Public Cloud - AWS
- Infrastructure 구축 방법
- Cloud Service 활용 방법
- IaC
- AWS CloudFormation
- Ansible
- Infrastructure 관리 자동화
Docker 이해
Application
- Service 제공을 위한 동작을 하는 프로그램
- 사용자가 원하는 기능을 제공하는 프로그램
- Application 구성 요소
- Application binary - 설치 대상
- 해당 Application 동작을 위한 필수 기능만 포함
- Application에서 사용하는 공유 라이브러리 - O/S에 미리 설치된 경우가 많다.
- 라이브러리(Library) - 변수 / 함수 / 클래스 집합
- Application binary - 설치 대상
- Application 설치
- Application 설치 프로그램 구성 요소
- Application 설치 환경 확인 프로그램
- Application 구성 요소 포함
- Application 설치 프로그램에 의해서 설치 과정을 수행하는 데 있어 공유 라이브러리 유무에 따라서 설치 과정이 쉬워지거나 복잡해질 수 있다.
- Application 설치 프로그램 구성 요소
Application 동작 환경
- Traditional Deployment (전통적인 Application 배포 동작 환경)
- 물리적인 서버에 Application이 동작할 수 있는 환경 구축 (Infrastructure 영역)
- 물리적인 서버에 Application 설치를 통한 서비스 제공
- 장점
- Application이 물리적인 서버의 자원을 직접적으로 활용 가능 (물리적 서버 리소스 사용에 제약이 없음)
- 단점
- Application 설치 시 필요한 공유 라이브러리가 없으면 설치에 어려움이 있다. (개발 환경과 운영 환경의 차이)
- 특정 Application이 물리적인 서버의 리소스를 과다하게 사용하는 것에 대한 통제가 쉽지 않다.
- Virtualized Deployment (가상 머신을 통한 배포 방식)
- 가상 머신을 구성하여 Application 배포
- Hypervisor 기반으로 S/W적으로 구성된 컴퓨터 시스템 - VirtualBox/VMWare 또는 Cloud 환경
- 가상 머신을 Application 동작할 수 있는 최상의 환경으로 구성하여 배포함으로써 전통적인 방식의 문제점 해결
- 장점
- Application 간의 격리(Isolate)가 가능
- 배포 시 가상 머신 배포를 통해 Application 실행 환경 구성의 어려움 극복
- 단점
- 가상 머신 환경은 결국 H/W 환경을 S/W적으로 구성하는 것이므로 현재의 H/W 환경을 나누어 사용함으로써
리소스 관리 측면에서 효과적이지는 않다. - 각각의 가상 머신에는 별도로 O/S를 설치해야 하고 또한 공유 라이브러리도 각각 설치해야 하므로 하나의
시스템 관점에서는 중복되게 설치하게 되는 문제가 있다. - 배포되는 크기가 크다.
- 가상 머신 환경은 결국 H/W 환경을 S/W적으로 구성하는 것이므로 현재의 H/W 환경을 나누어 사용함으로써
- 가상 머신을 구성하여 Application 배포
- Container Deployment (Container를 통한 배포 방식)
- Container도 하나의 가상 환경
- Container에는 Application과 Application이 동작하기 위해 필요한 실행 환경 (공유 라이브러리 등) 만으로 구성
- Container는 VM과 유사한 방식으로 동작하는 구조
- Container와 VM의 차이점
- Container는 독립된 O/S를 가지고 있지 않다.
- Container는 Host O/S에서 관리하는 Process 형태로 동작
- 완전 격리된 형태의 Process로 동작함으로 다른 Process와 별개이다. (Linux Process와의 차이점)
- Container가 동작하는 Process는 독점적인 자원 사용을 할 수 없도록 제어된다.
- Container와 VM의 차이점
- 장점
- 기존 VM에 비해서 Container 크기가 작다.
- 기민한 Application 배포
- 지속적인 개발, 통합 및 배포
- 개발과 운영의 관심사 분리
- 개발, 테스팅 및 운영 환경에 걸친 일관성
- 클라우드 및 O/S 배포판 간의 이식성
- Application 중심 관리
- 리소스 격리
- 자원 사용량 - 고효율, 고집적
Docker
- Container 기술의 한 종류, Container 생성 관리 역할
- VM처럼 완전 격리된 실행 환경 (container) 생성
- 하드웨어 레벨 가상화 - 가상 머신을 이용한 가상화, Hypervisor 기반 가상화 (VirtualBox, VMWare, ...)
- 운영체제 레벨 가상화 - Container Engine을 통하여 프로세스 단위 가상화 (Docker, ...)
- O/S를 설치하는 것과 유사한 효과를 낼 수 있지만 실제로 설치하지 않기 때문에 설치 용량이 적고 실행 속도 빠름
- Container는 일종의 소프트웨어 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼 상자와 같은 모양
- 런타임 코드, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 모든 것을 아우른다.
- 실행 중인 환경(O/S)에 관계없이 동일하게 실행될 것을 보증한다.
Docker 구성 요소
- Docker Engine + Docker Container
- Docker Engine (docker daemon) - daemon process
- Container runtime
- Container 생성 및 실행, 관리하는 역할 수행
- Docker Engine이 사용하는 기술적 요소
- 리눅스 컨테이너 (LinuX Container, LXC) 기술 기반
- chroot (change root)
- 특정 디렉토리를 최상위 디렉토리 root로 인식하게끔 설정하는 리눅스 명령
- namespace
- 프로세스 자원을 관리하는 기능
- mnt, pid, net, ipc, user 등의 자원을 그룹화하여 할당하는 기능
- cgroup (control group)
- CPU, Memory, I/O, Network 등의 자원 사용량 제어로 특정 Application의 과도한 리소스 사용 제한
- UnionFS (Union File System)
- 여러 개의 파일 시스템을 하나의 파일 시스템으로 마운트 시키는 가상 파일 시스템
- chroot (change root)
- 리눅스 컨테이너 (LinuX Container, LXC) 기술 기반
- Docker Container - Application process
- 격리(Isolate)된 응용 프로그램 실행 환경 (가상 환경)
- Container 기술 장점
- 하이퍼바이저와 게스트 O/S가 없기 때문에 가볍다.
- 경량이기 때문에 만들어진 이미지 복제, 이관, 배포가 쉽다.
- 게스트 O/S를 부팅하지 않기 때문에 Application 시작 시간이 빠르다.
- 가상 머신보다 경량이므로 더 많은 Application을 실행할 수 있다.
Docker에서 적용하는 LXC (LinuX Container) 기반 기술
- chroot (Change root)
- root 변경
- root 계정(관리자)을 변경하는 것이 아니고, Linux 시스템의 /(root) 디렉토리의 위치를 변경
- chroot <변경할 root 디렉토리 경로> <명령 shell 지정>
- root 권한으로 실행
- 변경할 root 디렉토리 생성 및 이동 후 chroot 명령 수행
- 변경할 root 디렉토리에서 사용할 shell 지정
- ldd <실행 파일 이름>
- 실행 파일이 사용하는 공유 라이브러리 목록 출력
더보기
root로 설정될 디렉토리에 bash 실행 위한 파일 복사가 되어 있어야 함
root@ip-12-12-12-12:/home/tomato# ldd /bin/bash
linux-vdso.so.1 (0x00007fffb112c000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f590575d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5905535000)
/lib64/ld-linux-x86-64.so.2 (0x00007f59058f7000)
root@ip-12-12-12-12:/home/tomato#
root@ip-12-12-12-12:/home/tomato# tree .
.
├── bin
│ └── bash
├── lib
│ └── x86_64-linux-gnu
│ ├── libc.so.6
│ └── libtinfo.so.6
├── lib64
│ └── ld-linux-x86-64.so.2
└── test
5 directories, 4 files
root@ip-12-12-12-12:/home/tomato#
root@ip-12-12-12-12:/home/tomato# chroot /home/tomato /bin/bash
bash-5.1# pwd
/
bash-5.1# /bin/bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
bash-5.1#
TIF
오늘부터 Docker와 Container 관련해서 수업이 진행된다.
수업 중간 중간에 이해가 안되거나 하는 부분은 따배도로 추가 공부하면 될 것 같다.
곧 쿠버네티스도 진행하겠지만 응시료 지원될 때 CKA 취득해야 하기 때문에
수업 끝나고 예습 겸 따배쿠 공부를 하려한다.
오늘은 VirtualBox에 설치하고 환경 구성하는 것까지 하고 욕심 내지말고 하루에 한 강의씩 듣자.
2022. 09. 26 에 작성된 글입니다.
반응형
'구름 쿠버네티스' 카테고리의 다른 글
구름 쿠버네티스 전문가 과정 6기 - 40일차 (0) | 2023.10.23 |
---|---|
구름 쿠버네티스 전문가 과정 6기 - 39일차 (0) | 2023.10.20 |
구름 쿠버네티스 전문가 과정 6기 - 37일차 (3) | 2023.10.17 |
구름 쿠버네티스 전문가 과정 6기 - 36일차 (0) | 2023.10.12 |
구름 쿠버네티스 전문가 과정 6기 - 35일차 (1) | 2023.10.11 |