SlideShare uma empresa Scribd logo
1 de 39
1 NAVER Cloud 2021
Brown-bag | 온택트 점심 세미나
도커와 쿠버네티스 기술에 스며들다!
2 NAVER Cloud 2021
목차
1. 가상화 기술이란?
2. 컨테이너 기술의 역사와 도커
3. 도커의 개요와 주요 컴포넌트
4. 도커의 핵심 기능
5. 쿠버네티스란?
6. 쿠버네티스 component
7. 데모
NAVER Cloud 2021
1. 가상화 기술이란 ?
4 NAVER Cloud 2021
가상화 기술이란?
가상화(Virtualization)는 물리적인 컴포넌트(Components, HW장치)를 논리적인 객체로 추상화 하는 것을 의미합니다.
가상화의 대상이 되는 컴퓨팅 자원은 프로세서
(CPU), 메모리(Memory), 스토리지
(Storage), 네트워크(Network)를 포함하며,
이들로 구성된 서버나 장치들을 가상화함으로
써 높은 수준의 자원 사용율과 분산 처리 능력
을 제공할 수 있다.
CPU Memory Disk Network
Virtualization
…
vCPU
vCPU vCPU vCPU
Virtual Machine Virtual Machine Virtual Machine
CPU 가상화 예시
가상머신은 내부구조가 물리적인 서버의 컴퓨
팅 환경과 매우 유사하다. 실제 서버처럼 CPU,
메모리, 저장소와 같은 하드웨어 자원을 활용하
고, 내부에 운영체제를 구동시킬 수 있으며, 각
종 응용프로그램을 구동 및 관장한다.
5 NAVER Cloud 2021
서버 가상화 기술 종류
Type1 - 베어메탈(Bare-metal)
하드웨어
하이퍼바이저
가상 환경
앱
미들웨어
게스트OS
…
앱
미들웨어
게스트OS
가상 환경
하드웨어 상에 가상화를 전문으로 수행하는 소프트웨어
인 ‘하이퍼바이저’를 배치하고, 하드웨어와 가상 환경을
제공 (ex. Hyper-V, Xenserver 등)
서버 가상화는 호스트형 서버 가상화와 하이퍼바이저형 서버 가상화로 구분될 수 있습니다.
Type2 - 호스트형
호스트형 서버 가상화는 하드웨어 상에 베이스가 되는
호스트 OS를 설치하고, 호스트 OS에 가상화 소프트웨어
를 설치한 후 이 가상화 소프트웨어 상에서 게스트 OS를
작동시키는 기술을 의미
하드웨어
호스트OS
하이퍼바이저
가상 환경 가상 환경
앱
미들웨어
게스트OS
…
앱
미들웨어
게스트OS
NAVER Cloud 2021
2. 컨테이너의 역사와 도커
7 NAVER Cloud 2021
컨테이너란?
▪ 컨테이너란 호스트OS상에 논리적인 구획(컨테이너)을 만들고, 애플리케이션을 작동시키기 위해 필요한 라이브러리나 애플리케이션 등
을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것입니다.
▪ 보통 물리 서버 상에 설치한 호스트 OS의 경우 하나의 OS상에서 움직이는 여러 애플리케이션은 똑같은 시스템 리소스를 사용하는 반면,
가상화의 범주 내에서 컨테이너는 기존 하이퍼바이저와 게스트OS를 필요로 했던 가상머신 방식과는 달리, 프로세스를 격리하여 ‘모듈화
된 프로그램 패키지’로써 수행하는 것을 의미한다. 이렇게 하면 기존의 가상머신에 비해 가볍고 빠르게 동작할 수 있는 장점이 있다.
VS
일반 VM에는 Guest OS가 함께 구동되나, 컨테이너 환경에서는 Host OS를 공유하고 프로세스만을 격리화하여 경량화된
형태로 구동됩니다.
8 NAVER Cloud 2021
컨테이너의 역사
출처 : https://naleejang.tistory.com/228
9 NAVER Cloud 2021
컨테이너의 역사 – FreeBSD Jail
FreeBSD Jail
▪ 오픈소스 Unix인 FreeBSD(유닉스 계열의 OS)의 기술
▪ FreeBSD Jail은 2000년에 릴리스된 FreeBSD 4.0에서 도입
▪ FreeBSD Jail의 주요 기능
▪ 프로세스 구획화 : Jail에서 실행중인 프로세스는 Jail밖의 프로
세스에 대해 영향을 줄 수 없음
▪ 네트워크의 구획화 : Jail은 하나하나에 IP주소가 할당되어 있으
며, 여러 개의 주소를 할당도 가능
▪ 파일시스템의 구획화 : Jail에서 사용하는 파일 시스템을 구획화함
으로써 조작할 수 있는 명령이나 파일 등을 제한 가능
Container
컨테이너의 역사는 오래 되었는데, FreeBSD라는 오픈 소스와 Solaris의 ‘Solaris Containers’ 등이 있습니다. 컨테이
너 기술의 역사를 살펴보면 도커의 기능들에 대해서도 쉽게 파악이 가능합니다.
10 NAVER Cloud 2021
컨테이너의 역사 – Solaris Containers
Solaris Containers
▪ Solaris Containers는 오라클의 상용 Unix인 Solaris에서 사용하는 컨테이너
기술
▪ Solaris 존 기능 : 하나의 OS 공간을 가상적으로 분할하여 여러 OS가 작동
하는 것처럼 보여주는 소프트웨어 파티셔닝 기능
▪ 리소스 매니저 기능 : 비 글로벌 존에서 CPU나 메모리와 같은 하드웨어 리소
스를 배분하는 리소스 관리 기능
Container
컨테이너의 역사는 오래 되었는데, FreeBSD라는 오픈 소스와 Solaris의 ‘Solaris Containers’ 등이 있습니다. 컨테이
너 기술의 역사를 살펴보면 도커의 기능들에 대해서도 쉽게 파악이 가능합니다.
비 글로벌 존
하드웨어
Solaris
글로벌 존
비 글로벌 존
미들웨어
앱
미들웨어
앱
11 NAVER Cloud 2021
컨테이너의 역사 – Linux Containers
구분 Virtual Machine Linux LXC Container
Operating System Run an isolated guest OS inside the VM Runs on the same OS as the host(Shared Kernel)
Networking Via virtual network devices Via an isolated view of virtual network
adapter(through namespaces)
Isolation Complete isolation from other guest OS and the host OS Namespaces- and cgroup-based isolation from the
host OS and other guest lxc containers
Size Usually on the order of gigabytes Usually on the order of megabytes
Startup time On the order of seconds to minutes depending on
storage media
On the order of seconds
리눅스 상에서 사용하는 컨테이너 환경을 Linux container라고 합니다. 각 컨테이너는 namespace와 cgroup을 통해
분리된 환경으로 운영됩니다.
[Main differences VM vs Linux LXC Container]
12 NAVER Cloud 2021
왜 컨테이너가 인기를 끄는 것일까
일반적으로 컨테이너에는 OS가 포함되지 않아 크기가 수십 MB에 불과하다. 당연히 운영체제 부팅이 필요 없기 때문에 서비스를
시작하는 시간 또한 상대적으로 매우 짧다. 또한, 작은 크기 때문에 컨테이너에 대한 복제와 배포가 좀 더 용이하다
경량화된 크기
컨테이너의 경우, 생성 및 실행되면 마치 운영체제 위에서 하나의 어플리케이션이 동작하는 것과 동일한 수준의 컴퓨팅 자원을 필
요로 한다. 시스템은 기존 응용프로그램을 실행시키는 것과 유사하게 이를 구동할 여분의 컴퓨팅 자원만 있으면 된다. 때문에 기
존의 가상머신 방식 대비 시스템의 성능 부하가 훨씬 적다.
컨테이너 방식은 기존의 가상머신 방식보다 시스템이 경량화 되어있기 때문에 더 많은 응용프로그램을 더 쉽게 하나의 물리적 서
버에서 구동시키는 것이 가능하다.
컨테이너는 가상머신 방식의 가상화보다 적은 시스템 요구사항
특정 클라우드 어플리케이션이 실행되기 위한 모든 라이브러리와 바이너리파일 등이 패키지화되어 있어서, 그저 기존의
시스템에서 실행하면 된다. 반면, 가상머신 방식은 새로운 서비스를 제공하기 위한 특정 어플리케이션을 실행시키려면, 먼저 새
로운 VM을 띄우고 자원을 (-동적 또는 미리 세팅한 대로) 할당한 다음, 필요한 게스트OS를 부팅한 후 어플리케이션을 실행시
켜야 한다.
구동 방식이 간단
경량화된 크기로 빠른 실행이 가능하고, 일반 VM 대비 적은 시스템 요구 사항 이라는 장점을 바탕으로 컨테이너 기술이 주
목받고 있습니다.
출처 : 클라우드 가상화 기술의 변화 – 컨테이너 기반의 클라우드 가상화와 DevOps
13 NAVER Cloud 2021
NAVER Cloud 2021
3. 도커의 개요와 주요 컴포넌트
15 NAVER Cloud 2021
도커 개요
컨테이너 기반의 가상화 소프트웨어에는 OpenVZ, LXC, Lunix vServer, FreeBSD Jail, Solaris Zones, Docker
등이 있으며, 그 중에서 최근 가상화 및 클라우드 컴퓨팅 영역에서 가장 각광받고 있는 것이 바로 도커(Docker)입니다.
도커는 앞서 살펴본 컨테이너를 관리하는 기능의 오픈소스 플랫폼이다.
도커는 2013년 3월 산타클라라에서 열린 Pycon Conference
에서 dotCloud의 창업자인 솔로몬 하익스(Solomon Hykes)가
「The future of Linux Containers」 라는 세션을 발표하면서
처음 세상에 알려졌다
이후 도커가 인기를 끌면서 같은 해 10월 회사이름을 자사의 플
랫폼 명과 같은 Docker로 변경하고, 2014년 6월 Docker 1.0
을 발표했다. 2013년 오픈소스로 공개된 후 불과 3년 만에 서버
운영체제의 기본기술로 각광받기 시작했다.
출처 : 클라우드 가상화 기술의 변화 – 컨테이너 기반의 클라우드 가상화와 DevOps
[도커 등장배경]
16 NAVER Cloud 2021
도커 기반 기술
리눅스 컨테이너를 이해하기 위한 출발점은 cgroups(control groups) 및 네임스페이스(namespaces)입니다.
cgroup과 namespace에 대해 살펴보도록 하겠습니다.
▪ cgroup(control groups) : Cgroup을 통해 사용자는 CPU 시간, 시스템 메모리, 네트워크 대역폭과 같은 자원을 사용자 정의 작
업 그룹 (프로세스) 간에 할당할 수 있습니다. 이를 통해 특정 컨테이너가 호스트 OS의 자원을 모두 사용해 버려서 동일한 호스트 OS
상에서 가동되는 다른 컨테이너에 영향을 주는 것을 막을 수 있습니다.
▪ Cgroup에서 관리할 수 있는 항목
항목 설명
cpu CPU 사용량을 제한
cpuact CPU 사용량 통계 정보를 제공
cpuset CPU나 메모리 배치를 제어
memory 메모리나 스왑 사용량을 제한
devices 디바이스에 대한 액세스 허가/거부
freezar 그룹에 속한 프로세스 정지/재개
net_cls 네트워크 제어 태그를 부가
Blkio 블록 디바이스 입출력량 제어
17 NAVER Cloud 2021
도커 기반 기술
리눅스 컨테이너를 이해하기 위한 출발점은 cgroups(control groups) 및 네임스페이스(namespaces)입니다.
cgroup과 namespace에 대해 살펴보도록 하겠습니다.
▪ 네임스페이스(namespaces) : 네임스페이스는 리눅스 커널에 내장되어 있는 기능으로서, 프로세스를 서로 격리시키는 기술입니다.
리눅스 커널의 namespace 기능은 linux의 오브젝트에 이름을 붙임으로써 다음과 같은 6개의 독립된 환경을 구축할 수 있습니다.
▪ PID namespace : PID란 linux에서 각 프로세스에 할당된 고유한 ID를 의미하며, PID namespace는 PID와 프로세스를 격
리시킴
▪ Network namespace : network namespace는 네트워크 디바이스, IP주소, 포트번호, 라우팅 테이블, 필터링 테이블 등
과 같은 네트워크 리소스를 격리된 namespace마다 독립적으로 할당 가능
▪ UID namespace : UID Namespace는 UID(사용자 ID),GID(그룹 ID)를 namespace별로 독립적으로 가질 수 있습니다.
▪ Mount namespace : 마운트 조작을 하면, namespace안에 격리된 파일 시스템 트리를 만들고, 다른 namespace 안에서
수행한 마운트는 호스트OS나 다른 namespace에서는 액세스할 수 없음
▪ UTS namespace : namespace별로 호스트명이나 도메인명을 독자적으로 가질 수 있도록 구성
▪ IPC namespace : 프로세스 간의 통신 오브젝트를 namespace별로 독립적으로 가질 수 있도록 제공
18 NAVER Cloud 2021
도커 컴포넌트
도커 이미지를 생성하고 컨테이너를
기동시키기 위한 도커의 핵심 기능
Docker Engine Docker Registry Docker Compose
컨테이너의 바탕이 되는 도커 이미지를
고개 및 공유하기 위한 레지스트리 기능
여러 개의 컨테이너 구성 정보를 코드로
정의하고, 명령을 실행함으로써 애플리
케이션의 실행 환경을 구성하는 컨테이
너들을 일원 관리하기 위한 툴
로컬 호스트용인 virtual box를 비롯하
여 클라우드 환경에 docker 실행 환경
을 명령으로 자동 생성하기 위한 툴
Docker Machine Docker Swarm
Docker swam은 여러 docker 호스트
를 클러스터화하기 위한 툴.
Docker swarm에서는 클러스터를 관
리하거나 API를 제공하는 역할을
Manager가, Docker 컨테이너를 실행
하는 역할은 node가 담당
도커는 핵심 기능이 되는 docker engine을 중심으로 컴포넌트들을 조합하여 애플리케이션 실행 환경을 구축합니다.
19 NAVER Cloud 2021
도커 네트워크 구성
▪ Linux는 도커를 설치하면 서버의 물리 NIC이 docker0 이라는 가상 브릿지 네트워크로 연결이 되며,이 docker 0는
docker를 실행시킨 후에 디폴트로 만들어집니다.
호스트 OS
컨테이너 A 컨테이너 B
eth0 eth0
vethXXXX(가상NIC) vethXXXX(가상NIC)
Docker0(가상 브릿지)
Eth0(물리 NIC)
20 NAVER Cloud 2021
도커 네트워크 구성
호스트 OS
컨테이너 A(Port 80) 컨테이너 B(Port 3306)
eth0 eth0
vethXXXX(가상NIC) vethXXXX(가상NIC)
Docker0(가상 브릿지)
Eth0(물리 NIC)
도커에서는 프라이빗 IP 주소와 글로벌 IP주소를 투과적으로 상호 변환하는 기술인 NAPT 기능을 사용하여, 컨테이너 시
작 시에 컨테이너에서 사용하고 있는 포트를 가상 브릿지인 docker0에 대해 개방하게 됩니다.
호스트OS의 8080 포트에 액세스
21 NAVER Cloud 2021
도커 핵심 개념 – 도커 이미지
도커 이미지란, 서비스 운영에 필요한 서버 프로그램, 소스 코드, 컴파일된 실행 파일을 묶은 형태를 의미합니다. 도커 이미지
는 레이어 형태로 구성됩니다.
Ubuntu Nginx Web app
Layer C
Layer B
Layer A
Nginx
Layer C
Layer B
Layer A
Web app source
Nginx
Layer C
Layer B
Layer A
▪ 작성한 이미지는 다른 이미지와도 공유가 가능하여 저장 용량을 효율적으로 관리가 가능
▪ 가장 상단에는 Read/write layer가 존재하여 실행중인 컨테이너에서 생긴 변화는 가장 상단의 read/write layer에서 이루어진다.
Container
R/W Layer
Web app
image
22 NAVER Cloud 2021
Dockerfile 기본 구문
명령 설명
FROM 베이스 이미지 지정
RUN 명령 실행
CMD 컨테이너 실행 명령
LABEL 라벨 설정
EXPOSE 포트 익스포트
ENV 환경 변수
ADD 파일/디렉토리 추가
COPY 파일 복사
명령 설명
ENTRYPOINT 컨테이너 실행 명령
VOLUME 볼륨 마운트
USER 사용자 지정
WORKDIR 작업 디렉토리
ARG Dockerfile 안의 변수
ONBUILD 빌드 완료 후 실행되는 명령
STOPSIGNAL 시스템 콜 시그널 설정
HEALTHCHECK 컨테이너의 헬스 체크
SHELL 기본 쉘 설정
도커는 애플리케이션 실행에 필요한 프로그램 본체, 라이브러리, 미들웨어, OS나 네트워크 설정 등을 하나로 모아 도커 이미
지를 생성하며, 해당 이미지는 컨테이너의 바탕이 됩니다.
▪ 도커 이미지 빌드
dockr image build –t apache .
▪ 도커 이미지 태그
docker image tag apache hello_apache
참고
23 NAVER Cloud 2021
도커의 기능 1) Docker build, docker run
도커는 애플리케이션 실행에 필요한 프로그램 본체, 라이브러리, 미들웨어, OS나 네트워크 설정 등을 하나로 모아 도커 이미
지를 생성하며, 해당 이미지는 컨테이너의 바탕이 됩니다.
도커 이미지는 컨테이너 구성 정보를 기술하기 위해 Dockerfile을 통해 생성하는 것이 일반적입니다.
Dockerfile 생성 이후, docker build 명령어를 통해 도커 이미지를 생성할 수 있습니다.
도커 이미지만 있으면, 도커가 설치된 환경 어디에서든지 컨테이너 실행이 가능합니다.
(동일한 도커 이미지를 가지고 여러 개의 컨테이너를 기동시킬 수도 있습니다.) 도커 이미지를 바탕으
로하여, 도커를 실행하기 위해 사용하는 명령어가 ‘docker run’ 입니다.
FROM ubuntu
RUN apt-get install
…
[도커 파일 예시]
docker build
도커 파일을 바탕으로
이미지 생성 시 사용 명령어 도커 이미지
docker run
24 NAVER Cloud 2021
Dockerfile 예시
# STEP 1 : CentOS(베이스 이미지)
FROM centos:centos7
# STEP 2 : Apache 설치
RUN yum -y update && yum install -y httpd httpd-tools
#STEP 3: 명령 실행
RUN echo '<!DOCTYPE html> 
<head> 
<title>NCP</title> 
</head>
<body style="text-align:center">
<h2> 도커와 컨테이너 </h2>
<div><b>Subject :</b> 도커와 컨테이너 이해하기 </div>
<div style="color:#fff;background:#F68657;"><b>Version</b> : 2.0.0</div>
</body>
</html>' > /var/www/html/index.html
#STEP 4: Apache 실행
CMD ["systemctl","restart","httpd"]
Step 1/4 : FROM centos:centos7
Step 2/4 : RUN yum update && yum install -y httpd
Step 3/4 : RUN echo…
Step 4/4 : CMD systemctl restart httpd;
25 NAVER Cloud 2021
도커 허브
도커 허브는 실행 가능한 애플리케이션의 이미지를 관리하는 기능을 갖춘 도커의 공식 리포지토리 서비스입니다.
▪ 도커 허브를 통해 등록되어 있는 도커 이미지 활
용이 가능할 뿐만 아니라 사용자가 작성한 독자적
인 도커 이미지를 도커 허브를 통해 공개할 수도
있습니다.
▪ 도커 허브에 가입 후, docker login 명령을 사용
하여 로그인을 진행합니다.
▪ Ex) 도커 허브 로그인 → docker login
▪ 도커 허브에서 도커 이미지를 다운로드 받기 위해
서는 ‘docker image pull’ 명령어를 사용합니
다.
▪ Ex) CentOS 7 이미지 다운로드 → Docker
image pull centos:7
26 NAVER Cloud 2021
네이버 클라우드 플랫폼 Container Registry
Container Registry
Docker Registry v2 스펙의 프라이빗 Docker 컨테이너 이미지 저장
소로, 있음. 개발자는 자체 컨테이너 레지스트리 구축과 인프라에 대해
고민하지 않고 Docker 컨테이너 이미지를 손쉽게 저장, 관리 및 배포
가능함
컨테이너 이미지 관리
대시보드를 통해 도커 컨테이너 이미지의 목록 조회 및 메타데이터 관리, 불필요한 이
미지 삭제 가능
협업 및 접근 제어
Sub Account를 사용하여 사용자와 역할별로 서로 다른 권한을 지정할 수 있어,
저장소를 다른 사용자와 공유 가능
컨테이너 취약점 분석
Container Registry 에 등록된 컨테이너 이미지의 이상징후 및 CVE 기반의 보안 취
약점을 분석하고, 각 고유 CVE 보안 취약점을 심각도에 따라 구분. 스캔 결과를 기반
으로 취약점을 제거함으로써 컨테이너 보안 강화
Developer
Namespace =
Enterprise01
Namespace =
SMB01
Kubernetes Cluster
SaaS Portal
Build Image
Push to
repository
Container Registry
Pull Image
from repository
27 NAVER Cloud 2021
Docker Swarm
별도의 추가 설치나 작업 없이도 사용 가능하며, 여러 호스트에 걸쳐서 컨테이너 운영이 가능하다는 장점을 가지고 있습니다.
Swarm은 Swarm 모드에서 실행되고 구성원 및 위임을 관리하는 관리자와 Swarm 서비스를 실행하는 작업자 역할을 하
는 여러 Docker 호스트로 구성됩니다.
Swarm manager
Worker node Worker node Worker node
Discovery
Service
Docker
Daemon
Docker
Daemon
Docker
Daemon
▪ 클러스터 상태 유지
▪ 스케줄링
▪ HTTP API 엔드포인트 제공
28 NAVER Cloud 2021
Kubernetes란
▪ Kubernetes 는 구글에서 만든 오픈소스 컨테이너 스케쥴러로, 2015년 7월 처음 v.1.0 으로 시작하여, 현재1.20
까지 업데이트 되었습니다.
▪ Kubernetes는 container의 배포(scheduling), 운영(HA, Failover), 확장(Scaling)을 자동화하기 위한 플랫폼으
로 설계되었으며 쿠버네티스는 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크를 제공합니다.
29 NAVER Cloud 2021
Kubernetes Components – Master Node
API Server Scheduler
Controller-Manager
Replication
Controller
Endpoint
Controller
Node
Controller
Service Account
TokenController
etcd
Kubernetes Master (Control Plane)
Kubernetes Cluster 에서 컨테이너의 관리 및 배포를 관리
하는 액세스 제어 플레인
클러스터 복제 패턴에 따라 마스터 수는 1개 이상 임
Kubernetes Master
Kubernetes API 를 노출하는 컴포넌트로, Kubernetes 오
브젝트 관리/제어를 위한 프론트 엔드
API Server
Node 가 배정되지 않은 새로 생성된 Pods 를 감지하고
그것이 구동될 Node 를 선택함
Scheduler
4개의 컨트롤러는 논리적으로는 개별 프로세스이지만
복잡성을 낮추기 위해 단일 바이너리로 컴파일
Controller-Manager
• Node Controller : 노드가 다운되었을 때 통지와 대응
• Replication Controller : 모든 replication controller
object 에 대해 알맞는 수의 pods 를 유지
• Endpoint Controller : 서비스와 Pods 를 연결
• Service Controller : 새로운 네임스페이스에 대한 기본 계
정과 API 접근 토큰 생성
모든 클러스터 데이터를 담는 key-value 저장소
Replicaset, controller, scheduler, kubelet 등은 etcd 에 바
로 접근하지 않고 API Server 를 통해 etcd 데이터에 접근할 수
있음
Etcd
30 NAVER Cloud 2021
Kubernetes Components – Worker Node
동작중인 Pods 를 유지시키고 Kubernetes 런타임 환경
을 제공함
Kubernetes Worker Node
각 Node 에 구동되는 Agent 로 Kubernetes Master 와
통신하며 Pod Spec 에 기술된 컨테이너들이 정상적으로
작동하도록 함
Kubelet
호스트 상에서 네트워크 규칙을 유지하고 연결에 대한 포
워딩을 수행함으로서 쿠버네티스 서비스 추상화가 가능
하도록 함
Kube-proxy
컨테이너가 실행될 수 있는 환경
(Docker, containerd, cri-o, rktle 등)
Container Runtime
Kubelet Kube-proxy
Worker Node
Container
Container
Container
Container
Pod
Pod
WEB UI Monitoring
Plugin Network DNS
Kubernetes 기본 네트워크인 kubenet 은 기능 제약이
있어 사용자 요구사항에 따라 별도의 CNI 를 사용함
Plugin Network
Kubernetes 서비스를 위해 DNS 레코드를 제공해주는
DNS 서버, 기본 kube-dns 를 제공하나 성능 개선을 위
해 별도의 플러그인 DNS 를 사용하기도 함
DNS
Kubernetes 클러스터를 위한 범용의 웹 기반 UI 로 클러
스터와 클러스터 내 동작하는 어플리케이션에 대한 관리
와 실패 처리가 가능함
WEB UI
중앙 데이터베이스 내에 컨테이너들에 대한 포괄적인 시
계열 메트릭스를 기록하고 데이터 조회를 위한 UI 제공함
Resource Monitoring
31 NAVER Cloud 2021
Kubernetes 주요 기능
Automatic Binpacking Service Discovery & Load Balancing
Secret & Configuration Management Batch Execution
Storage Orchestration Self Healing
Horizontal Scailng Automatic Rollbacks & Rollouts
Worker node 의 가용성을 유지하면서 보유한 리소스를
충분히 활용할 수 있도록 스스로 스케쥴링하며
컨테이너를 배치함
컨테이너에 IP 주소를 자동으로 할당하고 클러스터 내
트래픽을 로드 밸런싱 할 수 있는 컨테이너 세트에
단일 DNS 이름을 할당함
로컬 저장소를 선택하거나 NFS, iSCSI 등과 같은
공유 네트워크 스토리지를 컨테이너에 할당/마운트 하여
사용 가능함
실패한 컨테이너를 자동으로 다시 시작하고, 사용자가 정의한
헬스체크에 응답이 없는 컨테이너를 종료함. 워커 노드 장애 시
사용 가능한 다른 워커 노드에 컨테이너를 다시 기동함
Application 연동 및 접근 제어를 위한 보안 키, 설정 내역을
컨테이너 이미지의 변경 없이 업데이트 할 수 있고 외부로
노출하지 않고 사용 가능함
CPU 사용률과 같은 metric 을 기반으로 pod 의 Deployments,
replicaset 을 스케줄링하여 수평적 확장 가능함
컨테이너 기반의 서비스 관리 뿐 아니라 배치 및 CI 작업 부하를
관리할 수 있으므로 원하는 경우 실패한 컨테이너 대체 가능함
컨테이너의 응용 프로그램이나 구성에 대한 변경 사항을 점진적으
로 업데이트 하고 문제 발생 시 자동으로 롤백 할 수 있음
32 NAVER Cloud 2021
Pod의 개념
• Kubernetes 에서 생성하고 관리할 수 있는 배포가능한 가장 작은 단위 (*Kuberentes 공식 홈페이지 정의)
• 하나 이상의 실행 컨테이너를 포함
• 일반적으로 밀접하게 연결된 Application 이 올라간 컨테이너들을 Pod로 묶어서 배포
• Deployment 혹은 Job 과 같은 워크로드를 이용하여 생성
• 애플리케이션 컨테이너, 스토리지 리소스, 고유 네트워크 ID 및 기타 구성을 캡슐화
• 동일한 리소스와 로컬 네트워크를 공유하여, 머신이 분리되어 있어도 Pod 내 컨테이너 간 통신이 가능함
• Pod 생성 시, 휘발성 성질을 가진 IP를 자동으로 할당 받음
Container1 Container2 Container3
10.0.10.5
8002
8001 8002
Container4 Container5
10.0.10.6
8002
8001
Container5
8002
복제본
NODE
Pod Pod
storage storage
33 NAVER Cloud 2021
Kubernetes Component - Deployment
• 서비스 업데이트 시,사용자의 기대상태(Desired State)를 유지하도록 하는 Controller
▪ Deployment는 ReplicaSet에 대한 Update를 담당
▪ ReplicaSet은 사용자가 선언한 기대 상태인 Replica의 수를 지속적으로 확인하며 유지 시킴
• 상태가 없는(Stateless) 앱을 배포 시 사용
• 앱은 컨테이너 집합인 Pod 단위로 배포
Deployment
: Update, Rollback
ReplicaSet
: Scalable, Self-Healing, Desired State
Pod Pod Pod
Developer
App Descriptor
3x
Deployment
replica:
Desired State
34 NAVER Cloud 2021
Label
Label 을 이용한 구분
• Kubernetes의 모든 Object에 붙일 수 있는 속성
• 목적에 따라 Object를 구분하여 사용하기 위해 이용
• Key:Value 를 한 쌍으로 갖는다 (ex. lo: prod)
• 대표적으로 Pod에 가장 많이 붙여 사용
• 하나의 Pod에는 여러 Label을 붙일 수 있음
Namespace
Pod01
type: web
lo: dev
Pod02
type: was
lo: dev
Pod03
type: web
lo: prod
Pod04
type: was
lo: prod
apiVersion: v1
kind: Pod
metadata:
name: pod01
labels:
type: web
lo: dev
spec:
containers:
- name: web01
image: image
Service02
Service01
apiVersion: v1
kind: Service
metadata:
name: service01
spec:
selector:
type: web
ports:
- port: 8080
35 NAVER Cloud 2021
Kubernetes Component - Service
• Service의 Cluster IP를 통해 유동적으로 생성되고 사라지는 Pod에 접근하기 위한 방법으로 사용
• 여러 Pod를 묶어 Healthy한 Pod로 Traffic 라우팅하는 로드 밸런싱 기능 제공
• 클러스터의 Service CIDR 중에서 지정된 IP로 생성 가능
• ClusterIP / NodePort / LoadBalancer 타입 제공
• 기본 옵션은 클러스터 내부에서만 사용할 수 있는 Cluster IP
Pod1
10.1.0.1
Pod1
10.1.0.2
Service
172.21.10.1
External
Node1 Node2
Service
ClusterIP NodePort Load Balancer
Cluster 내 접근
가능
8080 8080
9000
30000 30000
Load Balancer
Pod Pod Node1 Node2
Service
30000 30000
Pod Pod
External
36 NAVER Cloud 2021
네이버 클라우드 플랫폼 Kubernetes services
Kubelet Kube-proxy
Worker Node
Container
Container Container
Container
Pod
Pod
API Server
Scheduler
Controller-Manager
Replication
Controller
Endpoint
Controller
Node
Controller
Service
Controller
etcd
Kubernetes Master (Control Plane)
Kubelet Kube-proxy
Worker Node
Container
Container Container
Container
Pod
Pod
Kubectl
Docker
Registry
Monitoring
External
Connection
CLI / UI
Admin
Plugin Network (Flannel , Calico ..)
네이버 클라우드 플랫폼 관리 영역
37 NAVER Cloud 2021
Demo
1. 네이버 클라우드 플랫폼 쿠버네티스 서비스 생성
2. 쿠버네티스 접속
3. Deployment를 통한 pod 생성
Break Through with
End of Document
Thank You

Mais conteúdo relacionado

Mais procurados

Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes IntroductionPeng Xiao
 
쿠버네티스 ( Kubernetes ) 소개 자료
쿠버네티스 ( Kubernetes ) 소개 자료쿠버네티스 ( Kubernetes ) 소개 자료
쿠버네티스 ( Kubernetes ) 소개 자료Opennaru, inc.
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?VMware Tanzu Korea
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 rockplace
 
Kubernetes Architecture - beyond a black box - Part 1
Kubernetes Architecture - beyond a black box - Part 1Kubernetes Architecture - beyond a black box - Part 1
Kubernetes Architecture - beyond a black box - Part 1Hao H. Zhang
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법Open Source Consulting
 
모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)Eunwoo Cho
 
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
 [AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵 [AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵Amazon Web Services Korea
 
K8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals TrainingK8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals TrainingPiotr Perzyna
 
Docker introduction
Docker introductionDocker introduction
Docker introductionPhuc Nguyen
 
AWS DirectConnect 구성 가이드 (김용우) - 파트너 웨비나 시리즈
AWS DirectConnect 구성 가이드 (김용우) -  파트너 웨비나 시리즈AWS DirectConnect 구성 가이드 (김용우) -  파트너 웨비나 시리즈
AWS DirectConnect 구성 가이드 (김용우) - 파트너 웨비나 시리즈Amazon Web Services Korea
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) Amazon Web Services Korea
 

Mais procurados (20)

Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
 
Docker
DockerDocker
Docker
 
Was ist Docker?
Was ist Docker?Was ist Docker?
Was ist Docker?
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
쿠버네티스 ( Kubernetes ) 소개 자료
쿠버네티스 ( Kubernetes ) 소개 자료쿠버네티스 ( Kubernetes ) 소개 자료
쿠버네티스 ( Kubernetes ) 소개 자료
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성
 
Kubernetes Architecture - beyond a black box - Part 1
Kubernetes Architecture - beyond a black box - Part 1Kubernetes Architecture - beyond a black box - Part 1
Kubernetes Architecture - beyond a black box - Part 1
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
 
모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)
 
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
 [AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵 [AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
 
K8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals TrainingK8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals Training
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
AWS DirectConnect 구성 가이드 (김용우) - 파트너 웨비나 시리즈
AWS DirectConnect 구성 가이드 (김용우) -  파트너 웨비나 시리즈AWS DirectConnect 구성 가이드 (김용우) -  파트너 웨비나 시리즈
AWS DirectConnect 구성 가이드 (김용우) - 파트너 웨비나 시리즈
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
 
AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기
 
From Zero to Docker
From Zero to DockerFrom Zero to Docker
From Zero to Docker
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 

Semelhante a [9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다

[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
1. Docker Network (1)
1. Docker Network (1)1. Docker Network (1)
1. Docker Network (1)DEVELOPER.NET
 
Backend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker PrincipalBackend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker PrincipalKyunghun Jeon
 
[TeamStudy-022] Docker
[TeamStudy-022] Docker[TeamStudy-022] Docker
[TeamStudy-022] DockerWonjun Hwang
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)CONNECT FOUNDATION
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편negabaro
 
01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKEROpennaru, inc.
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101Daegwon Kim
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestrationNAVER D2
 
[slideshare]k8s.pptx
[slideshare]k8s.pptx[slideshare]k8s.pptx
[slideshare]k8s.pptxssuserb8551e
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 mWonchang Song
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)Ji-Woong Choi
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법GeunCheolYeom
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)Ildoo Kim
 
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...OpenStack Korea Community
 

Semelhante a [9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다 (20)

[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
1. Docker Network (1)
1. Docker Network (1)1. Docker Network (1)
1. Docker Network (1)
 
Backend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker PrincipalBackend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker Principal
 
[TeamStudy-022] Docker
[TeamStudy-022] Docker[TeamStudy-022] Docker
[TeamStudy-022] Docker
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
Docker Container
Docker ContainerDocker Container
Docker Container
 
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
 
Docker Intro
Docker IntroDocker Intro
Docker Intro
 
01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestration
 
[slideshare]k8s.pptx
[slideshare]k8s.pptx[slideshare]k8s.pptx
[slideshare]k8s.pptx
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 m
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
why docker
why dockerwhy docker
why docker
 
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
 

Mais de NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼

사물 인터넷을 넘어 지능형 사물 인터넷 시대로!_강지나 클라우드 솔루션 아키텍트
사물 인터넷을 넘어 지능형 사물 인터넷 시대로!_강지나 클라우드 솔루션 아키텍트사물 인터넷을 넘어 지능형 사물 인터넷 시대로!_강지나 클라우드 솔루션 아키텍트
사물 인터넷을 넘어 지능형 사물 인터넷 시대로!_강지나 클라우드 솔루션 아키텍트NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트
초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트
초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
온라인 교육 시리즈 - 클라우드 기반의 마이데이터사업 혁신(김민형 클라우드 솔루션 아키텍트)
온라인 교육 시리즈 - 클라우드 기반의 마이데이터사업 혁신(김민형 클라우드 솔루션 아키텍트) 온라인 교육 시리즈 - 클라우드 기반의 마이데이터사업 혁신(김민형 클라우드 솔루션 아키텍트)
온라인 교육 시리즈 - 클라우드 기반의 마이데이터사업 혁신(김민형 클라우드 솔루션 아키텍트) NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
[온라인교육시리즈] 클라우드 환경에서 발생하는 위협 탐지대응 방안 - 김동운 매니저
[온라인교육시리즈] 클라우드 환경에서 발생하는 위협 탐지대응 방안 - 김동운 매니저[온라인교육시리즈] 클라우드 환경에서 발생하는 위협 탐지대응 방안 - 김동운 매니저
[온라인교육시리즈] 클라우드 환경에서 발생하는 위협 탐지대응 방안 - 김동운 매니저NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
[온라인교육시리즈] 네이버클라우드플랫폼 주요 업데이트 - 윤진규 클라우드 솔루션 아키텍트
[온라인교육시리즈] 네이버클라우드플랫폼 주요 업데이트 - 윤진규 클라우드 솔루션 아키텍트[온라인교육시리즈] 네이버클라우드플랫폼 주요 업데이트 - 윤진규 클라우드 솔루션 아키텍트
[온라인교육시리즈] 네이버클라우드플랫폼 주요 업데이트 - 윤진규 클라우드 솔루션 아키텍트NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트
클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트
클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
[온라인 교육시리즈] Pinpoint Cloud로 시작하는 어플리케이션 성능 모니터링 - 김민형 클라우드 솔루션 아키텍트
[온라인 교육시리즈] Pinpoint Cloud로 시작하는 어플리케이션 성능 모니터링 - 김민형 클라우드 솔루션 아키텍트[온라인 교육시리즈] Pinpoint Cloud로 시작하는 어플리케이션 성능 모니터링 - 김민형 클라우드 솔루션 아키텍트
[온라인 교육시리즈] Pinpoint Cloud로 시작하는 어플리케이션 성능 모니터링 - 김민형 클라우드 솔루션 아키텍트NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
포스트코로나시대에 주목받는 AI 서비스 - 네이버클라우드플랫폼 솔루션 아키텍트 강지나
포스트코로나시대에 주목받는 AI 서비스 - 네이버클라우드플랫폼 솔루션 아키텍트 강지나포스트코로나시대에 주목받는 AI 서비스 - 네이버클라우드플랫폼 솔루션 아키텍트 강지나
포스트코로나시대에 주목받는 AI 서비스 - 네이버클라우드플랫폼 솔루션 아키텍트 강지나NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
[온라인교육시리즈] 베어메탈서비스 소개 및 활용 - 현영환 클라우드 솔루션 아키텍트
[온라인교육시리즈] 베어메탈서비스 소개 및 활용 - 현영환 클라우드 솔루션 아키텍트[온라인교육시리즈] 베어메탈서비스 소개 및 활용 - 현영환 클라우드 솔루션 아키텍트
[온라인교육시리즈] 베어메탈서비스 소개 및 활용 - 현영환 클라우드 솔루션 아키텍트NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트
[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트
[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 

Mais de NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼 (20)

사물 인터넷을 넘어 지능형 사물 인터넷 시대로!_강지나 클라우드 솔루션 아키텍트
사물 인터넷을 넘어 지능형 사물 인터넷 시대로!_강지나 클라우드 솔루션 아키텍트사물 인터넷을 넘어 지능형 사물 인터넷 시대로!_강지나 클라우드 솔루션 아키텍트
사물 인터넷을 넘어 지능형 사물 인터넷 시대로!_강지나 클라우드 솔루션 아키텍트
 
1시간으로 끝내는 클라우드 개념_김민형 클라우드 솔루션 아키텍트
1시간으로 끝내는 클라우드 개념_김민형 클라우드 솔루션 아키텍트1시간으로 끝내는 클라우드 개념_김민형 클라우드 솔루션 아키텍트
1시간으로 끝내는 클라우드 개념_김민형 클라우드 솔루션 아키텍트
 
초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트
초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트
초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트
 
[Solutions Showcase] 클라우드 기반의 강력한 자금세탁방지시스템 AMLXpress
[Solutions Showcase] 클라우드 기반의 강력한 자금세탁방지시스템 AMLXpress[Solutions Showcase] 클라우드 기반의 강력한 자금세탁방지시스템 AMLXpress
[Solutions Showcase] 클라우드 기반의 강력한 자금세탁방지시스템 AMLXpress
 
API Economy 시대가 온다 - 강지나 클라우드 솔루션 아키텍트
API Economy 시대가 온다 - 강지나 클라우드 솔루션 아키텍트API Economy 시대가 온다 - 강지나 클라우드 솔루션 아키텍트
API Economy 시대가 온다 - 강지나 클라우드 솔루션 아키텍트
 
[웨비나] Follow me! 클라우드 인프라 구축 기본편 - 강지나 테크 에반젤리스트
[웨비나] Follow me! 클라우드 인프라 구축 기본편 - 강지나 테크 에반젤리스트[웨비나] Follow me! 클라우드 인프라 구축 기본편 - 강지나 테크 에반젤리스트
[웨비나] Follow me! 클라우드 인프라 구축 기본편 - 강지나 테크 에반젤리스트
 
온라인 교육 시리즈 - 클라우드 기반의 마이데이터사업 혁신(김민형 클라우드 솔루션 아키텍트)
온라인 교육 시리즈 - 클라우드 기반의 마이데이터사업 혁신(김민형 클라우드 솔루션 아키텍트) 온라인 교육 시리즈 - 클라우드 기반의 마이데이터사업 혁신(김민형 클라우드 솔루션 아키텍트)
온라인 교육 시리즈 - 클라우드 기반의 마이데이터사업 혁신(김민형 클라우드 솔루션 아키텍트)
 
[온라인교육시리즈] 클라우드 환경에서 발생하는 위협 탐지대응 방안 - 김동운 매니저
[온라인교육시리즈] 클라우드 환경에서 발생하는 위협 탐지대응 방안 - 김동운 매니저[온라인교육시리즈] 클라우드 환경에서 발생하는 위협 탐지대응 방안 - 김동운 매니저
[온라인교육시리즈] 클라우드 환경에서 발생하는 위협 탐지대응 방안 - 김동운 매니저
 
2021년 기술 트렌드 - 강지나 클라우드 솔루션 아키텍트
2021년 기술 트렌드 - 강지나 클라우드 솔루션 아키텍트2021년 기술 트렌드 - 강지나 클라우드 솔루션 아키텍트
2021년 기술 트렌드 - 강지나 클라우드 솔루션 아키텍트
 
[온라인교육시리즈] 네이버클라우드플랫폼 주요 업데이트 - 윤진규 클라우드 솔루션 아키텍트
[온라인교육시리즈] 네이버클라우드플랫폼 주요 업데이트 - 윤진규 클라우드 솔루션 아키텍트[온라인교육시리즈] 네이버클라우드플랫폼 주요 업데이트 - 윤진규 클라우드 솔루션 아키텍트
[온라인교육시리즈] 네이버클라우드플랫폼 주요 업데이트 - 윤진규 클라우드 솔루션 아키텍트
 
클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트
클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트
클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트
 
[온라인 교육시리즈] Pinpoint Cloud로 시작하는 어플리케이션 성능 모니터링 - 김민형 클라우드 솔루션 아키텍트
[온라인 교육시리즈] Pinpoint Cloud로 시작하는 어플리케이션 성능 모니터링 - 김민형 클라우드 솔루션 아키텍트[온라인 교육시리즈] Pinpoint Cloud로 시작하는 어플리케이션 성능 모니터링 - 김민형 클라우드 솔루션 아키텍트
[온라인 교육시리즈] Pinpoint Cloud로 시작하는 어플리케이션 성능 모니터링 - 김민형 클라우드 솔루션 아키텍트
 
포스트코로나시대에 주목받는 AI 서비스 - 네이버클라우드플랫폼 솔루션 아키텍트 강지나
포스트코로나시대에 주목받는 AI 서비스 - 네이버클라우드플랫폼 솔루션 아키텍트 강지나포스트코로나시대에 주목받는 AI 서비스 - 네이버클라우드플랫폼 솔루션 아키텍트 강지나
포스트코로나시대에 주목받는 AI 서비스 - 네이버클라우드플랫폼 솔루션 아키텍트 강지나
 
의료계에부는 언택트 바람 - 강지나 클라우드 솔루션 아키텍트
의료계에부는 언택트 바람 - 강지나 클라우드 솔루션 아키텍트의료계에부는 언택트 바람 - 강지나 클라우드 솔루션 아키텍트
의료계에부는 언택트 바람 - 강지나 클라우드 솔루션 아키텍트
 
[온라인교육시리즈] 베어메탈서비스 소개 및 활용 - 현영환 클라우드 솔루션 아키텍트
[온라인교육시리즈] 베어메탈서비스 소개 및 활용 - 현영환 클라우드 솔루션 아키텍트[온라인교육시리즈] 베어메탈서비스 소개 및 활용 - 현영환 클라우드 솔루션 아키텍트
[온라인교육시리즈] 베어메탈서비스 소개 및 활용 - 현영환 클라우드 솔루션 아키텍트
 
[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트
[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트
[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트
 
멀티·하이브리드 클라우드 구축 전략 - 네이버비즈니스플랫폼 박기은 CTO
멀티·하이브리드 클라우드 구축 전략 - 네이버비즈니스플랫폼 박기은 CTO멀티·하이브리드 클라우드 구축 전략 - 네이버비즈니스플랫폼 박기은 CTO
멀티·하이브리드 클라우드 구축 전략 - 네이버비즈니스플랫폼 박기은 CTO
 
[온라인교육시리즈] 네이버 클라우드 플랫폼 Clova Premium Voice 소개
[온라인교육시리즈] 네이버 클라우드 플랫폼 Clova Premium Voice 소개[온라인교육시리즈] 네이버 클라우드 플랫폼 Clova Premium Voice 소개
[온라인교육시리즈] 네이버 클라우드 플랫폼 Clova Premium Voice 소개
 
DB innovation conference 2020
DB innovation conference 2020DB innovation conference 2020
DB innovation conference 2020
 
[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버 클라우드 플래폼 OCR 소개
[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버 클라우드 플래폼 OCR 소개[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버 클라우드 플래폼 OCR 소개
[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버 클라우드 플래폼 OCR 소개
 

[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다

  • 1. 1 NAVER Cloud 2021 Brown-bag | 온택트 점심 세미나 도커와 쿠버네티스 기술에 스며들다!
  • 2. 2 NAVER Cloud 2021 목차 1. 가상화 기술이란? 2. 컨테이너 기술의 역사와 도커 3. 도커의 개요와 주요 컴포넌트 4. 도커의 핵심 기능 5. 쿠버네티스란? 6. 쿠버네티스 component 7. 데모
  • 3. NAVER Cloud 2021 1. 가상화 기술이란 ?
  • 4. 4 NAVER Cloud 2021 가상화 기술이란? 가상화(Virtualization)는 물리적인 컴포넌트(Components, HW장치)를 논리적인 객체로 추상화 하는 것을 의미합니다. 가상화의 대상이 되는 컴퓨팅 자원은 프로세서 (CPU), 메모리(Memory), 스토리지 (Storage), 네트워크(Network)를 포함하며, 이들로 구성된 서버나 장치들을 가상화함으로 써 높은 수준의 자원 사용율과 분산 처리 능력 을 제공할 수 있다. CPU Memory Disk Network Virtualization … vCPU vCPU vCPU vCPU Virtual Machine Virtual Machine Virtual Machine CPU 가상화 예시 가상머신은 내부구조가 물리적인 서버의 컴퓨 팅 환경과 매우 유사하다. 실제 서버처럼 CPU, 메모리, 저장소와 같은 하드웨어 자원을 활용하 고, 내부에 운영체제를 구동시킬 수 있으며, 각 종 응용프로그램을 구동 및 관장한다.
  • 5. 5 NAVER Cloud 2021 서버 가상화 기술 종류 Type1 - 베어메탈(Bare-metal) 하드웨어 하이퍼바이저 가상 환경 앱 미들웨어 게스트OS … 앱 미들웨어 게스트OS 가상 환경 하드웨어 상에 가상화를 전문으로 수행하는 소프트웨어 인 ‘하이퍼바이저’를 배치하고, 하드웨어와 가상 환경을 제공 (ex. Hyper-V, Xenserver 등) 서버 가상화는 호스트형 서버 가상화와 하이퍼바이저형 서버 가상화로 구분될 수 있습니다. Type2 - 호스트형 호스트형 서버 가상화는 하드웨어 상에 베이스가 되는 호스트 OS를 설치하고, 호스트 OS에 가상화 소프트웨어 를 설치한 후 이 가상화 소프트웨어 상에서 게스트 OS를 작동시키는 기술을 의미 하드웨어 호스트OS 하이퍼바이저 가상 환경 가상 환경 앱 미들웨어 게스트OS … 앱 미들웨어 게스트OS
  • 6. NAVER Cloud 2021 2. 컨테이너의 역사와 도커
  • 7. 7 NAVER Cloud 2021 컨테이너란? ▪ 컨테이너란 호스트OS상에 논리적인 구획(컨테이너)을 만들고, 애플리케이션을 작동시키기 위해 필요한 라이브러리나 애플리케이션 등 을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것입니다. ▪ 보통 물리 서버 상에 설치한 호스트 OS의 경우 하나의 OS상에서 움직이는 여러 애플리케이션은 똑같은 시스템 리소스를 사용하는 반면, 가상화의 범주 내에서 컨테이너는 기존 하이퍼바이저와 게스트OS를 필요로 했던 가상머신 방식과는 달리, 프로세스를 격리하여 ‘모듈화 된 프로그램 패키지’로써 수행하는 것을 의미한다. 이렇게 하면 기존의 가상머신에 비해 가볍고 빠르게 동작할 수 있는 장점이 있다. VS 일반 VM에는 Guest OS가 함께 구동되나, 컨테이너 환경에서는 Host OS를 공유하고 프로세스만을 격리화하여 경량화된 형태로 구동됩니다.
  • 8. 8 NAVER Cloud 2021 컨테이너의 역사 출처 : https://naleejang.tistory.com/228
  • 9. 9 NAVER Cloud 2021 컨테이너의 역사 – FreeBSD Jail FreeBSD Jail ▪ 오픈소스 Unix인 FreeBSD(유닉스 계열의 OS)의 기술 ▪ FreeBSD Jail은 2000년에 릴리스된 FreeBSD 4.0에서 도입 ▪ FreeBSD Jail의 주요 기능 ▪ 프로세스 구획화 : Jail에서 실행중인 프로세스는 Jail밖의 프로 세스에 대해 영향을 줄 수 없음 ▪ 네트워크의 구획화 : Jail은 하나하나에 IP주소가 할당되어 있으 며, 여러 개의 주소를 할당도 가능 ▪ 파일시스템의 구획화 : Jail에서 사용하는 파일 시스템을 구획화함 으로써 조작할 수 있는 명령이나 파일 등을 제한 가능 Container 컨테이너의 역사는 오래 되었는데, FreeBSD라는 오픈 소스와 Solaris의 ‘Solaris Containers’ 등이 있습니다. 컨테이 너 기술의 역사를 살펴보면 도커의 기능들에 대해서도 쉽게 파악이 가능합니다.
  • 10. 10 NAVER Cloud 2021 컨테이너의 역사 – Solaris Containers Solaris Containers ▪ Solaris Containers는 오라클의 상용 Unix인 Solaris에서 사용하는 컨테이너 기술 ▪ Solaris 존 기능 : 하나의 OS 공간을 가상적으로 분할하여 여러 OS가 작동 하는 것처럼 보여주는 소프트웨어 파티셔닝 기능 ▪ 리소스 매니저 기능 : 비 글로벌 존에서 CPU나 메모리와 같은 하드웨어 리소 스를 배분하는 리소스 관리 기능 Container 컨테이너의 역사는 오래 되었는데, FreeBSD라는 오픈 소스와 Solaris의 ‘Solaris Containers’ 등이 있습니다. 컨테이 너 기술의 역사를 살펴보면 도커의 기능들에 대해서도 쉽게 파악이 가능합니다. 비 글로벌 존 하드웨어 Solaris 글로벌 존 비 글로벌 존 미들웨어 앱 미들웨어 앱
  • 11. 11 NAVER Cloud 2021 컨테이너의 역사 – Linux Containers 구분 Virtual Machine Linux LXC Container Operating System Run an isolated guest OS inside the VM Runs on the same OS as the host(Shared Kernel) Networking Via virtual network devices Via an isolated view of virtual network adapter(through namespaces) Isolation Complete isolation from other guest OS and the host OS Namespaces- and cgroup-based isolation from the host OS and other guest lxc containers Size Usually on the order of gigabytes Usually on the order of megabytes Startup time On the order of seconds to minutes depending on storage media On the order of seconds 리눅스 상에서 사용하는 컨테이너 환경을 Linux container라고 합니다. 각 컨테이너는 namespace와 cgroup을 통해 분리된 환경으로 운영됩니다. [Main differences VM vs Linux LXC Container]
  • 12. 12 NAVER Cloud 2021 왜 컨테이너가 인기를 끄는 것일까 일반적으로 컨테이너에는 OS가 포함되지 않아 크기가 수십 MB에 불과하다. 당연히 운영체제 부팅이 필요 없기 때문에 서비스를 시작하는 시간 또한 상대적으로 매우 짧다. 또한, 작은 크기 때문에 컨테이너에 대한 복제와 배포가 좀 더 용이하다 경량화된 크기 컨테이너의 경우, 생성 및 실행되면 마치 운영체제 위에서 하나의 어플리케이션이 동작하는 것과 동일한 수준의 컴퓨팅 자원을 필 요로 한다. 시스템은 기존 응용프로그램을 실행시키는 것과 유사하게 이를 구동할 여분의 컴퓨팅 자원만 있으면 된다. 때문에 기 존의 가상머신 방식 대비 시스템의 성능 부하가 훨씬 적다. 컨테이너 방식은 기존의 가상머신 방식보다 시스템이 경량화 되어있기 때문에 더 많은 응용프로그램을 더 쉽게 하나의 물리적 서 버에서 구동시키는 것이 가능하다. 컨테이너는 가상머신 방식의 가상화보다 적은 시스템 요구사항 특정 클라우드 어플리케이션이 실행되기 위한 모든 라이브러리와 바이너리파일 등이 패키지화되어 있어서, 그저 기존의 시스템에서 실행하면 된다. 반면, 가상머신 방식은 새로운 서비스를 제공하기 위한 특정 어플리케이션을 실행시키려면, 먼저 새 로운 VM을 띄우고 자원을 (-동적 또는 미리 세팅한 대로) 할당한 다음, 필요한 게스트OS를 부팅한 후 어플리케이션을 실행시 켜야 한다. 구동 방식이 간단 경량화된 크기로 빠른 실행이 가능하고, 일반 VM 대비 적은 시스템 요구 사항 이라는 장점을 바탕으로 컨테이너 기술이 주 목받고 있습니다. 출처 : 클라우드 가상화 기술의 변화 – 컨테이너 기반의 클라우드 가상화와 DevOps
  • 14. NAVER Cloud 2021 3. 도커의 개요와 주요 컴포넌트
  • 15. 15 NAVER Cloud 2021 도커 개요 컨테이너 기반의 가상화 소프트웨어에는 OpenVZ, LXC, Lunix vServer, FreeBSD Jail, Solaris Zones, Docker 등이 있으며, 그 중에서 최근 가상화 및 클라우드 컴퓨팅 영역에서 가장 각광받고 있는 것이 바로 도커(Docker)입니다. 도커는 앞서 살펴본 컨테이너를 관리하는 기능의 오픈소스 플랫폼이다. 도커는 2013년 3월 산타클라라에서 열린 Pycon Conference 에서 dotCloud의 창업자인 솔로몬 하익스(Solomon Hykes)가 「The future of Linux Containers」 라는 세션을 발표하면서 처음 세상에 알려졌다 이후 도커가 인기를 끌면서 같은 해 10월 회사이름을 자사의 플 랫폼 명과 같은 Docker로 변경하고, 2014년 6월 Docker 1.0 을 발표했다. 2013년 오픈소스로 공개된 후 불과 3년 만에 서버 운영체제의 기본기술로 각광받기 시작했다. 출처 : 클라우드 가상화 기술의 변화 – 컨테이너 기반의 클라우드 가상화와 DevOps [도커 등장배경]
  • 16. 16 NAVER Cloud 2021 도커 기반 기술 리눅스 컨테이너를 이해하기 위한 출발점은 cgroups(control groups) 및 네임스페이스(namespaces)입니다. cgroup과 namespace에 대해 살펴보도록 하겠습니다. ▪ cgroup(control groups) : Cgroup을 통해 사용자는 CPU 시간, 시스템 메모리, 네트워크 대역폭과 같은 자원을 사용자 정의 작 업 그룹 (프로세스) 간에 할당할 수 있습니다. 이를 통해 특정 컨테이너가 호스트 OS의 자원을 모두 사용해 버려서 동일한 호스트 OS 상에서 가동되는 다른 컨테이너에 영향을 주는 것을 막을 수 있습니다. ▪ Cgroup에서 관리할 수 있는 항목 항목 설명 cpu CPU 사용량을 제한 cpuact CPU 사용량 통계 정보를 제공 cpuset CPU나 메모리 배치를 제어 memory 메모리나 스왑 사용량을 제한 devices 디바이스에 대한 액세스 허가/거부 freezar 그룹에 속한 프로세스 정지/재개 net_cls 네트워크 제어 태그를 부가 Blkio 블록 디바이스 입출력량 제어
  • 17. 17 NAVER Cloud 2021 도커 기반 기술 리눅스 컨테이너를 이해하기 위한 출발점은 cgroups(control groups) 및 네임스페이스(namespaces)입니다. cgroup과 namespace에 대해 살펴보도록 하겠습니다. ▪ 네임스페이스(namespaces) : 네임스페이스는 리눅스 커널에 내장되어 있는 기능으로서, 프로세스를 서로 격리시키는 기술입니다. 리눅스 커널의 namespace 기능은 linux의 오브젝트에 이름을 붙임으로써 다음과 같은 6개의 독립된 환경을 구축할 수 있습니다. ▪ PID namespace : PID란 linux에서 각 프로세스에 할당된 고유한 ID를 의미하며, PID namespace는 PID와 프로세스를 격 리시킴 ▪ Network namespace : network namespace는 네트워크 디바이스, IP주소, 포트번호, 라우팅 테이블, 필터링 테이블 등 과 같은 네트워크 리소스를 격리된 namespace마다 독립적으로 할당 가능 ▪ UID namespace : UID Namespace는 UID(사용자 ID),GID(그룹 ID)를 namespace별로 독립적으로 가질 수 있습니다. ▪ Mount namespace : 마운트 조작을 하면, namespace안에 격리된 파일 시스템 트리를 만들고, 다른 namespace 안에서 수행한 마운트는 호스트OS나 다른 namespace에서는 액세스할 수 없음 ▪ UTS namespace : namespace별로 호스트명이나 도메인명을 독자적으로 가질 수 있도록 구성 ▪ IPC namespace : 프로세스 간의 통신 오브젝트를 namespace별로 독립적으로 가질 수 있도록 제공
  • 18. 18 NAVER Cloud 2021 도커 컴포넌트 도커 이미지를 생성하고 컨테이너를 기동시키기 위한 도커의 핵심 기능 Docker Engine Docker Registry Docker Compose 컨테이너의 바탕이 되는 도커 이미지를 고개 및 공유하기 위한 레지스트리 기능 여러 개의 컨테이너 구성 정보를 코드로 정의하고, 명령을 실행함으로써 애플리 케이션의 실행 환경을 구성하는 컨테이 너들을 일원 관리하기 위한 툴 로컬 호스트용인 virtual box를 비롯하 여 클라우드 환경에 docker 실행 환경 을 명령으로 자동 생성하기 위한 툴 Docker Machine Docker Swarm Docker swam은 여러 docker 호스트 를 클러스터화하기 위한 툴. Docker swarm에서는 클러스터를 관 리하거나 API를 제공하는 역할을 Manager가, Docker 컨테이너를 실행 하는 역할은 node가 담당 도커는 핵심 기능이 되는 docker engine을 중심으로 컴포넌트들을 조합하여 애플리케이션 실행 환경을 구축합니다.
  • 19. 19 NAVER Cloud 2021 도커 네트워크 구성 ▪ Linux는 도커를 설치하면 서버의 물리 NIC이 docker0 이라는 가상 브릿지 네트워크로 연결이 되며,이 docker 0는 docker를 실행시킨 후에 디폴트로 만들어집니다. 호스트 OS 컨테이너 A 컨테이너 B eth0 eth0 vethXXXX(가상NIC) vethXXXX(가상NIC) Docker0(가상 브릿지) Eth0(물리 NIC)
  • 20. 20 NAVER Cloud 2021 도커 네트워크 구성 호스트 OS 컨테이너 A(Port 80) 컨테이너 B(Port 3306) eth0 eth0 vethXXXX(가상NIC) vethXXXX(가상NIC) Docker0(가상 브릿지) Eth0(물리 NIC) 도커에서는 프라이빗 IP 주소와 글로벌 IP주소를 투과적으로 상호 변환하는 기술인 NAPT 기능을 사용하여, 컨테이너 시 작 시에 컨테이너에서 사용하고 있는 포트를 가상 브릿지인 docker0에 대해 개방하게 됩니다. 호스트OS의 8080 포트에 액세스
  • 21. 21 NAVER Cloud 2021 도커 핵심 개념 – 도커 이미지 도커 이미지란, 서비스 운영에 필요한 서버 프로그램, 소스 코드, 컴파일된 실행 파일을 묶은 형태를 의미합니다. 도커 이미지 는 레이어 형태로 구성됩니다. Ubuntu Nginx Web app Layer C Layer B Layer A Nginx Layer C Layer B Layer A Web app source Nginx Layer C Layer B Layer A ▪ 작성한 이미지는 다른 이미지와도 공유가 가능하여 저장 용량을 효율적으로 관리가 가능 ▪ 가장 상단에는 Read/write layer가 존재하여 실행중인 컨테이너에서 생긴 변화는 가장 상단의 read/write layer에서 이루어진다. Container R/W Layer Web app image
  • 22. 22 NAVER Cloud 2021 Dockerfile 기본 구문 명령 설명 FROM 베이스 이미지 지정 RUN 명령 실행 CMD 컨테이너 실행 명령 LABEL 라벨 설정 EXPOSE 포트 익스포트 ENV 환경 변수 ADD 파일/디렉토리 추가 COPY 파일 복사 명령 설명 ENTRYPOINT 컨테이너 실행 명령 VOLUME 볼륨 마운트 USER 사용자 지정 WORKDIR 작업 디렉토리 ARG Dockerfile 안의 변수 ONBUILD 빌드 완료 후 실행되는 명령 STOPSIGNAL 시스템 콜 시그널 설정 HEALTHCHECK 컨테이너의 헬스 체크 SHELL 기본 쉘 설정 도커는 애플리케이션 실행에 필요한 프로그램 본체, 라이브러리, 미들웨어, OS나 네트워크 설정 등을 하나로 모아 도커 이미 지를 생성하며, 해당 이미지는 컨테이너의 바탕이 됩니다. ▪ 도커 이미지 빌드 dockr image build –t apache . ▪ 도커 이미지 태그 docker image tag apache hello_apache 참고
  • 23. 23 NAVER Cloud 2021 도커의 기능 1) Docker build, docker run 도커는 애플리케이션 실행에 필요한 프로그램 본체, 라이브러리, 미들웨어, OS나 네트워크 설정 등을 하나로 모아 도커 이미 지를 생성하며, 해당 이미지는 컨테이너의 바탕이 됩니다. 도커 이미지는 컨테이너 구성 정보를 기술하기 위해 Dockerfile을 통해 생성하는 것이 일반적입니다. Dockerfile 생성 이후, docker build 명령어를 통해 도커 이미지를 생성할 수 있습니다. 도커 이미지만 있으면, 도커가 설치된 환경 어디에서든지 컨테이너 실행이 가능합니다. (동일한 도커 이미지를 가지고 여러 개의 컨테이너를 기동시킬 수도 있습니다.) 도커 이미지를 바탕으 로하여, 도커를 실행하기 위해 사용하는 명령어가 ‘docker run’ 입니다. FROM ubuntu RUN apt-get install … [도커 파일 예시] docker build 도커 파일을 바탕으로 이미지 생성 시 사용 명령어 도커 이미지 docker run
  • 24. 24 NAVER Cloud 2021 Dockerfile 예시 # STEP 1 : CentOS(베이스 이미지) FROM centos:centos7 # STEP 2 : Apache 설치 RUN yum -y update && yum install -y httpd httpd-tools #STEP 3: 명령 실행 RUN echo '<!DOCTYPE html> <head> <title>NCP</title> </head> <body style="text-align:center"> <h2> 도커와 컨테이너 </h2> <div><b>Subject :</b> 도커와 컨테이너 이해하기 </div> <div style="color:#fff;background:#F68657;"><b>Version</b> : 2.0.0</div> </body> </html>' > /var/www/html/index.html #STEP 4: Apache 실행 CMD ["systemctl","restart","httpd"] Step 1/4 : FROM centos:centos7 Step 2/4 : RUN yum update && yum install -y httpd Step 3/4 : RUN echo… Step 4/4 : CMD systemctl restart httpd;
  • 25. 25 NAVER Cloud 2021 도커 허브 도커 허브는 실행 가능한 애플리케이션의 이미지를 관리하는 기능을 갖춘 도커의 공식 리포지토리 서비스입니다. ▪ 도커 허브를 통해 등록되어 있는 도커 이미지 활 용이 가능할 뿐만 아니라 사용자가 작성한 독자적 인 도커 이미지를 도커 허브를 통해 공개할 수도 있습니다. ▪ 도커 허브에 가입 후, docker login 명령을 사용 하여 로그인을 진행합니다. ▪ Ex) 도커 허브 로그인 → docker login ▪ 도커 허브에서 도커 이미지를 다운로드 받기 위해 서는 ‘docker image pull’ 명령어를 사용합니 다. ▪ Ex) CentOS 7 이미지 다운로드 → Docker image pull centos:7
  • 26. 26 NAVER Cloud 2021 네이버 클라우드 플랫폼 Container Registry Container Registry Docker Registry v2 스펙의 프라이빗 Docker 컨테이너 이미지 저장 소로, 있음. 개발자는 자체 컨테이너 레지스트리 구축과 인프라에 대해 고민하지 않고 Docker 컨테이너 이미지를 손쉽게 저장, 관리 및 배포 가능함 컨테이너 이미지 관리 대시보드를 통해 도커 컨테이너 이미지의 목록 조회 및 메타데이터 관리, 불필요한 이 미지 삭제 가능 협업 및 접근 제어 Sub Account를 사용하여 사용자와 역할별로 서로 다른 권한을 지정할 수 있어, 저장소를 다른 사용자와 공유 가능 컨테이너 취약점 분석 Container Registry 에 등록된 컨테이너 이미지의 이상징후 및 CVE 기반의 보안 취 약점을 분석하고, 각 고유 CVE 보안 취약점을 심각도에 따라 구분. 스캔 결과를 기반 으로 취약점을 제거함으로써 컨테이너 보안 강화 Developer Namespace = Enterprise01 Namespace = SMB01 Kubernetes Cluster SaaS Portal Build Image Push to repository Container Registry Pull Image from repository
  • 27. 27 NAVER Cloud 2021 Docker Swarm 별도의 추가 설치나 작업 없이도 사용 가능하며, 여러 호스트에 걸쳐서 컨테이너 운영이 가능하다는 장점을 가지고 있습니다. Swarm은 Swarm 모드에서 실행되고 구성원 및 위임을 관리하는 관리자와 Swarm 서비스를 실행하는 작업자 역할을 하 는 여러 Docker 호스트로 구성됩니다. Swarm manager Worker node Worker node Worker node Discovery Service Docker Daemon Docker Daemon Docker Daemon ▪ 클러스터 상태 유지 ▪ 스케줄링 ▪ HTTP API 엔드포인트 제공
  • 28. 28 NAVER Cloud 2021 Kubernetes란 ▪ Kubernetes 는 구글에서 만든 오픈소스 컨테이너 스케쥴러로, 2015년 7월 처음 v.1.0 으로 시작하여, 현재1.20 까지 업데이트 되었습니다. ▪ Kubernetes는 container의 배포(scheduling), 운영(HA, Failover), 확장(Scaling)을 자동화하기 위한 플랫폼으 로 설계되었으며 쿠버네티스는 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크를 제공합니다.
  • 29. 29 NAVER Cloud 2021 Kubernetes Components – Master Node API Server Scheduler Controller-Manager Replication Controller Endpoint Controller Node Controller Service Account TokenController etcd Kubernetes Master (Control Plane) Kubernetes Cluster 에서 컨테이너의 관리 및 배포를 관리 하는 액세스 제어 플레인 클러스터 복제 패턴에 따라 마스터 수는 1개 이상 임 Kubernetes Master Kubernetes API 를 노출하는 컴포넌트로, Kubernetes 오 브젝트 관리/제어를 위한 프론트 엔드 API Server Node 가 배정되지 않은 새로 생성된 Pods 를 감지하고 그것이 구동될 Node 를 선택함 Scheduler 4개의 컨트롤러는 논리적으로는 개별 프로세스이지만 복잡성을 낮추기 위해 단일 바이너리로 컴파일 Controller-Manager • Node Controller : 노드가 다운되었을 때 통지와 대응 • Replication Controller : 모든 replication controller object 에 대해 알맞는 수의 pods 를 유지 • Endpoint Controller : 서비스와 Pods 를 연결 • Service Controller : 새로운 네임스페이스에 대한 기본 계 정과 API 접근 토큰 생성 모든 클러스터 데이터를 담는 key-value 저장소 Replicaset, controller, scheduler, kubelet 등은 etcd 에 바 로 접근하지 않고 API Server 를 통해 etcd 데이터에 접근할 수 있음 Etcd
  • 30. 30 NAVER Cloud 2021 Kubernetes Components – Worker Node 동작중인 Pods 를 유지시키고 Kubernetes 런타임 환경 을 제공함 Kubernetes Worker Node 각 Node 에 구동되는 Agent 로 Kubernetes Master 와 통신하며 Pod Spec 에 기술된 컨테이너들이 정상적으로 작동하도록 함 Kubelet 호스트 상에서 네트워크 규칙을 유지하고 연결에 대한 포 워딩을 수행함으로서 쿠버네티스 서비스 추상화가 가능 하도록 함 Kube-proxy 컨테이너가 실행될 수 있는 환경 (Docker, containerd, cri-o, rktle 등) Container Runtime Kubelet Kube-proxy Worker Node Container Container Container Container Pod Pod WEB UI Monitoring Plugin Network DNS Kubernetes 기본 네트워크인 kubenet 은 기능 제약이 있어 사용자 요구사항에 따라 별도의 CNI 를 사용함 Plugin Network Kubernetes 서비스를 위해 DNS 레코드를 제공해주는 DNS 서버, 기본 kube-dns 를 제공하나 성능 개선을 위 해 별도의 플러그인 DNS 를 사용하기도 함 DNS Kubernetes 클러스터를 위한 범용의 웹 기반 UI 로 클러 스터와 클러스터 내 동작하는 어플리케이션에 대한 관리 와 실패 처리가 가능함 WEB UI 중앙 데이터베이스 내에 컨테이너들에 대한 포괄적인 시 계열 메트릭스를 기록하고 데이터 조회를 위한 UI 제공함 Resource Monitoring
  • 31. 31 NAVER Cloud 2021 Kubernetes 주요 기능 Automatic Binpacking Service Discovery & Load Balancing Secret & Configuration Management Batch Execution Storage Orchestration Self Healing Horizontal Scailng Automatic Rollbacks & Rollouts Worker node 의 가용성을 유지하면서 보유한 리소스를 충분히 활용할 수 있도록 스스로 스케쥴링하며 컨테이너를 배치함 컨테이너에 IP 주소를 자동으로 할당하고 클러스터 내 트래픽을 로드 밸런싱 할 수 있는 컨테이너 세트에 단일 DNS 이름을 할당함 로컬 저장소를 선택하거나 NFS, iSCSI 등과 같은 공유 네트워크 스토리지를 컨테이너에 할당/마운트 하여 사용 가능함 실패한 컨테이너를 자동으로 다시 시작하고, 사용자가 정의한 헬스체크에 응답이 없는 컨테이너를 종료함. 워커 노드 장애 시 사용 가능한 다른 워커 노드에 컨테이너를 다시 기동함 Application 연동 및 접근 제어를 위한 보안 키, 설정 내역을 컨테이너 이미지의 변경 없이 업데이트 할 수 있고 외부로 노출하지 않고 사용 가능함 CPU 사용률과 같은 metric 을 기반으로 pod 의 Deployments, replicaset 을 스케줄링하여 수평적 확장 가능함 컨테이너 기반의 서비스 관리 뿐 아니라 배치 및 CI 작업 부하를 관리할 수 있으므로 원하는 경우 실패한 컨테이너 대체 가능함 컨테이너의 응용 프로그램이나 구성에 대한 변경 사항을 점진적으 로 업데이트 하고 문제 발생 시 자동으로 롤백 할 수 있음
  • 32. 32 NAVER Cloud 2021 Pod의 개념 • Kubernetes 에서 생성하고 관리할 수 있는 배포가능한 가장 작은 단위 (*Kuberentes 공식 홈페이지 정의) • 하나 이상의 실행 컨테이너를 포함 • 일반적으로 밀접하게 연결된 Application 이 올라간 컨테이너들을 Pod로 묶어서 배포 • Deployment 혹은 Job 과 같은 워크로드를 이용하여 생성 • 애플리케이션 컨테이너, 스토리지 리소스, 고유 네트워크 ID 및 기타 구성을 캡슐화 • 동일한 리소스와 로컬 네트워크를 공유하여, 머신이 분리되어 있어도 Pod 내 컨테이너 간 통신이 가능함 • Pod 생성 시, 휘발성 성질을 가진 IP를 자동으로 할당 받음 Container1 Container2 Container3 10.0.10.5 8002 8001 8002 Container4 Container5 10.0.10.6 8002 8001 Container5 8002 복제본 NODE Pod Pod storage storage
  • 33. 33 NAVER Cloud 2021 Kubernetes Component - Deployment • 서비스 업데이트 시,사용자의 기대상태(Desired State)를 유지하도록 하는 Controller ▪ Deployment는 ReplicaSet에 대한 Update를 담당 ▪ ReplicaSet은 사용자가 선언한 기대 상태인 Replica의 수를 지속적으로 확인하며 유지 시킴 • 상태가 없는(Stateless) 앱을 배포 시 사용 • 앱은 컨테이너 집합인 Pod 단위로 배포 Deployment : Update, Rollback ReplicaSet : Scalable, Self-Healing, Desired State Pod Pod Pod Developer App Descriptor 3x Deployment replica: Desired State
  • 34. 34 NAVER Cloud 2021 Label Label 을 이용한 구분 • Kubernetes의 모든 Object에 붙일 수 있는 속성 • 목적에 따라 Object를 구분하여 사용하기 위해 이용 • Key:Value 를 한 쌍으로 갖는다 (ex. lo: prod) • 대표적으로 Pod에 가장 많이 붙여 사용 • 하나의 Pod에는 여러 Label을 붙일 수 있음 Namespace Pod01 type: web lo: dev Pod02 type: was lo: dev Pod03 type: web lo: prod Pod04 type: was lo: prod apiVersion: v1 kind: Pod metadata: name: pod01 labels: type: web lo: dev spec: containers: - name: web01 image: image Service02 Service01 apiVersion: v1 kind: Service metadata: name: service01 spec: selector: type: web ports: - port: 8080
  • 35. 35 NAVER Cloud 2021 Kubernetes Component - Service • Service의 Cluster IP를 통해 유동적으로 생성되고 사라지는 Pod에 접근하기 위한 방법으로 사용 • 여러 Pod를 묶어 Healthy한 Pod로 Traffic 라우팅하는 로드 밸런싱 기능 제공 • 클러스터의 Service CIDR 중에서 지정된 IP로 생성 가능 • ClusterIP / NodePort / LoadBalancer 타입 제공 • 기본 옵션은 클러스터 내부에서만 사용할 수 있는 Cluster IP Pod1 10.1.0.1 Pod1 10.1.0.2 Service 172.21.10.1 External Node1 Node2 Service ClusterIP NodePort Load Balancer Cluster 내 접근 가능 8080 8080 9000 30000 30000 Load Balancer Pod Pod Node1 Node2 Service 30000 30000 Pod Pod External
  • 36. 36 NAVER Cloud 2021 네이버 클라우드 플랫폼 Kubernetes services Kubelet Kube-proxy Worker Node Container Container Container Container Pod Pod API Server Scheduler Controller-Manager Replication Controller Endpoint Controller Node Controller Service Controller etcd Kubernetes Master (Control Plane) Kubelet Kube-proxy Worker Node Container Container Container Container Pod Pod Kubectl Docker Registry Monitoring External Connection CLI / UI Admin Plugin Network (Flannel , Calico ..) 네이버 클라우드 플랫폼 관리 영역
  • 37. 37 NAVER Cloud 2021 Demo 1. 네이버 클라우드 플랫폼 쿠버네티스 서비스 생성 2. 쿠버네티스 접속 3. Deployment를 통한 pod 생성