- 가상화 및 클라우드 개요
- AWS 기본 서비스 (EC2, VPC, EBS, S3)
- AWS 고가용성 구현 (Region, AZ, ELB, ASG)
- AWS 모니터링 개요 (CloudWatch)
- AWS 주요 리소스 모니터링 & 비용 모니터링
- 쿠버네티스 개요 및 주요 아키텍처
- 쿠버네티스 클러스터 배포
- 쿠버네티스 컨테이너 배포, 통신, 볼륨 관리
- 쿠버네티스 모니터링 (Dashboard, Prometheus & Grafana)
- AWS 기반 쿠버네티스 (EKS)
기존 환경의 문제점들
- 극도의 복잡성, 빈약한 인프라에 의존
가상화 기술을 통해 해결
- 모든 IT 자산의 가상화
- 가상화 플랫폼을 이용하고 동적이고 유연한 업무 인프라를 구축
- 데이터센터의 모든 리소스를 가상화
가상화 유형
- 서버 가상화
- 네트워크 가상화
- 스토리지 가상화
- 데스크톱 가상화
가상화 도입 효과
- 서비스를 이용한 물리적 서버의 대수를 감소
- 전체적인 상면/전력/관리 비용을 절감
- 탄소배출 절감
가상화 정의
- 가상화는 운영 체제에서 물리적 하드웨어를 분리하여 IT 담당자가 직면한 많은 문제에 대한 해결책을 제공
- 하이퍼바이저는 컴퓨터 시스템에서 다수의 운영 체제를 동시에 실행할 수 있게 해주는 논리적 플랫폼입니다.
- 하이퍼바이저는 물리적 하드웨어와 가상 머신(VM) 사이에 위치하여 가상 머신들이 물리적 자원을 효율적으로 사용할 수 있도록 합니다.
- 하이퍼바이저는 두 가지 주요 유형으로 나뉩니다
- 설명: Type 1 하이퍼바이저는 물리적 하드웨어 위에서 직접 실행되는 하이퍼바이저입니다. 운영 체제 없이 하드웨어에서 직접 실행되기 때문에 "Bare-metal" 하이퍼바이저라고도 불립니다.
- 특징:
- 성능이 뛰어나며, 리소스 오버헤드가 적습니다.
- 높은 안정성과 보안성을 제공합니다.
- 주로 서버 가상화에 사용됩니다.
- 예: VMware ESXi, Microsoft Hyper-V, Xen
- 설명: Type 2 하이퍼바이저는 기존의 운영 체제 위에서 실행되는 하이퍼바이저입니다. 즉, 호스트 운영 체제 위에서 동작하는 애플리케이션의 일종입니다.
- 특징:
- 설치 및 관리가 비교적 쉽습니다.
- 데스크톱 가상화에 주로 사용됩니다.
- 성능이 Type 1 하이퍼바이저보다 낮을 수 있습니다.
- 예: VMware Workstation, Oracle VirtualBox, Parallels Desktop
- 성능: Type 1 하이퍼바이저가 일반적으로 더 높은 성능을 제공합니다.
- 설치 및 관리: Type 2 하이퍼바이저는 설치 및 관리가 더 간단하며, 사용자가 친숙한 환경에서 사용할 수 있습니다.
- 용도: Type 1 하이퍼바이저는 주로 데이터 센터 및 서버 가상화에 사용되며, Type 2 하이퍼바이저는 개인 컴퓨터 및 개발 환경에서 사용됩니다.
하이퍼바이저는 가상화 기술의 핵심 요소로, 다양한 운영 체제를 단일 하드웨어에서 동시에 실행하여 자원 활용의 효율성을 극대화하고, 테스트 및 개발 환경을 유연하게 관리할 수 있게 해줍니다.
- PC 데이터를 PC에 보관하는 것이 아니라 인터넷을 통해 중앙 PC 또는 서버에 저장하는 공간
- 클라우드 컴퓨팅 : 인터넷을 통해 IT 리소스를 원할 때 언제든지 사용하고, 사용한 만큼 비용을 지불하는 서비스
- 퍼블릭 클라우드
- 클라우드 컴퓨팅 서비스를 제공해주는 업체에게 인프라에 필요한 자원들을 대여하여 사용하는 방식
- CSP 예 : AWS, Azure, KT 클라우드, 네이버 클라우드
- 프라이빗 클라우드
- 기업이 직접 클라우드 환경을 구축, 이를 기업내부에서 활용, 계열사에 공개
- Amazon EC2: 가상 서버 서비스
- Virtual Machine
- 재구성이 가능한 컴퓨팅 리소스
- 쉽게 확장/축소되는 컴퓨팅 용량
- ‘고객 업무’ 영역에 따른 다양한 인스턴스 타입 제공
- 사용한 만큼만 과금 (pay-as-you-go) - 초
- Name: 보안그룹의 이름
- Description: 보안그룹에 대한 설명
- Protocol: 허용할 네트워크 프로토콜 (예: TCP, UDP, ICMP 등)
- Port range: 허용할 포트 범위 (예: 80, 443 등)
- IP address, IP range, Security Group name: 허용할 IP 주소, IP 범위 또는 다른 보안그룹 이름
- In/Out bound 지정 가능: 인바운드(수신) 및 아웃바운드(발신) 트래픽 규칙을 설정할 수 있습니다.
- 모든 인터넷 프로토콜 지원: 모든 인터넷 프로토콜(TCP, UDP, ICMP 등)을 지원합니다.
- 인스턴스 동작 중에도 규칙 변경 가능: 인스턴스가 실행 중일 때도 보안그룹 규칙을 변경할 수 있습니다.
- EC2 보안그룹은 네트워크 트래픽을 제어하기 위한 가상 방화벽으로, 보안그룹 규칙을 통해 프로토콜, 포트 범위, IP 주소 등을 설정하여 인바운드 및 아웃바운드 트래픽을 관리합니다.
- 모든 인터넷 프로토콜을 지원하며, 인스턴스가 동작 중일 때도 규칙을 변경할 수 있어 유연한 보안 관리를 제공합니다.
- IP Range 대신 어느 SG로부터의 트래픽을 허용할지 지정가능
- 계층적인 네트워크 구조 생성 가능
- Public Key: 공개 키는 누구와도 공유할 수 있으며, 주로 서버에 저장됩니다.
- Private Key: 비밀 키는 사용자만이 가지고 있으며, AWS에 저장되지 않습니다.
Linux
- 최초 로그인 시:
SSH key pair를 사용하여 최초 로그인 시에SSH key pair를 생성합니다.Windows
- 관리자 암호 불러오기: Windows 인스턴스에서는 관리자 암호를 불러오기에 앞서
EC2 key pair가 필요합니다.
- 높은 보안성 제공: 초기 접속 시 SSH key pair를 사용함으로써 높은 보안성을 제공합니다.
- Personalized: 사용자마다 고유한 SSH key pair를 사용하여 개인화된 접속 방법을 제공합니다.
요약
- AWS에서 제공하는 표준 SSH RSA key pair는 공개 키와 비밀 키로 구성됩니다.
- 비밀 키는 AWS에 저장되지 않으며, 사용자가 안전하게 보관해야 합니다.
- Linux 인스턴스에서는 SSH key pair로 최초 로그인 시 사용되고, Windows 인스턴스에서는 관리자 암호를 불러오기 위해 사용됩니다.
- 이 방법은 높은 보안성을 제공하며, 각 사용자가 고유한 key pair를 사용함으로써 개인화된 접속 방법을 지원합니다.
- Virtual Private Cloud
- 사용자가 정의한 가상의 네트워크 환경
- 통신을 위한 기본 네트워크
- 보안 강화 목적, 부족한 IP 자원의 효율적 관리 목적으로 사용
- Region 및 IP Range 결정: 사용할 리전과 IP 주소 범위를 선택합니다.
- 가용영역에 Subnet 생성: 각 가용영역에 서브넷을 생성하여 네트워크를 분할합니다.
- Routing 설정: 라우팅 테이블을 설정하여 트래픽의 경로를 정의합니다.
- Traffic 통제: 보안 그룹과 네트워크 ACL을 사용하여 인바운드 및 아웃바운드 트래픽을 제어합니다.
이 과정을 통해 AWS에서 안전하고 효율적인 네트워크 환경을 구축할 수 있습니다.
IP Address Group
- VPC를 구성하는 가장 중요한 요소: VPC를 설계할 때 가장 먼저 고려해야 할 요소는 IP 주소 그룹입니다. 이는 VPC 내에서 사용할 IP 주소 범위를 정의합니다.
- 집을 고를 때 가장 중요한 요소 = 평수: 집을 고를 때 평수가 중요하듯이, VPC를 구성할 때 IP 주소 범위는 매우 중요합니다.
- VPC 구성 시 가장 먼저 고려하는 것 = IP 범위: VPC를 생성할 때, 먼저 IP 주소 범위를 결정하는 것이 필수적입니다.
CIDR (Classless Inter-Domain Routing)
- Classless Inter-Domain Routing: 클래스 없는 도메인 간 IP 할당 기법입니다. 전통적인 IP 주소 클래스(A, B, C 등)를 사용하지 않고, 더 유연하게 IP 주소를 할당할 수 있게 합니다.
- 클래스 없는 도메인 간 IP 할당 기법: 특정 범위의 IP 주소를 할당하고 라우팅하는 데 사용됩니다.
- Class란 무엇인가?:
- 전통적인 IP 주소 클래스 시스템을 의미하며, 각 클래스는 특정 범위의 IP 주소와 서브넷 마스크를 가지고 있습니다.
- CIDR은 이러한 클래스 시스템을 사용하지 않고, 필요한 만큼의 IP 주소를 유연하게 할당할 수 있게 해줍니다.
요약
- VPC를 구성할 때 가장 중요한 요소 중 하나는 IP 주소 범위(CIDR)를 결정하는 것입니다.
- 이는 VPC 내에서 사용할 IP 주소의 그룹을 정의합니다. CIDR은 전통적인 클래스 기반 IP 주소 할당 방식을 사용하지 않고, 필요한 만큼의 IP 주소를 할당하여 더 유연한 네트워크 구성을 가능하게 합니다.
- VPC를 설계할 때, 적절한 IP 주소 범위를 선택하는 것이 중요한 첫 단계입니다.
- Subnet: VPC의 IP 대역을 적절한 단위로 분할하여 사용.
- 예: 172.16.0.0/16
- 각 Subnet도 VPC처럼 CIDR을 이용해 IP 범위를 지정.
- 각 Subnet의 대역은 VPC 대역 내에 존재해야 하고 중복 불가.
- 주요 목적: 네트워크 레벨에서 트래픽을 격리하고 경로를 제어하여 원하는 트래픽만 수신 가능하게 함.
- Subnetting 주요 목적: 전통적으로는 Broadcasting 영역 분리, 그러나 AWS VPC는 Broadcast/Multicast를 지원하지 않음.
- CIDR 변경 불가: Subnet CIDR은 생성 후 변경 불가.
- 너무 작게 설정하면 서비스 확장 시 문제가 될 수 있음.
- 확장성을 고려하여 넉넉하게 설정 권장.
- 예약된 IP: Subnet CIDR 영역 내 일부 IP는 예약됨.
- 첫 4개 IP와 마지막 IP는 사용 불가.
- 예: 10.0.0.0/24
- 10.0.0.0: 네트워크 주소
- 10.0.0.1: VPC 라우터
- 10.0.0.2: DNS
- 10.0.0.3: AWS 예약
- 10.0.0.255: 브로드캐스트 주소 (향후 사용 예약)
- Main Routing Table: VPC 생성 시 자동으로 생성.
- 기본적으로 VPC 내 모든 통신이 허락된 경로가 설정됨.
- Subnet 생성 시 Main Routing Table이 자동 설정되어 내부 통신 가능.
- Subnet과 Routing Table 연결: Subnet은 하나의 Routing Table과 연결 가능.
- 초기 생성 시 Main Routing Table과 연결됨.
- Custom Routing Table 연결 시 Subnet과 Routing Table 연동 설정 필요.
- Main Routing Table: 삭제 불가.
- 기본 통신: VPC 내 모든 Subnet은 Local Router를 통해 상호 통신 가능.
- 추가적인 Route Table 등록 필요:
- 인터넷, 온프레미스 VPN 통신, DirectConnect, VPC Peering 등의 경우.
- 모니터링은 데이터를 수집, 분석 및 사용하는 행위로, IT 리소스 및 시스템에 대한 다양한 질문에 답을 제공하고 의사 결정을 지원하는 목적
모니터링의 목적
- 사이트 방문자 수 및 시간 경과에 따른 추적
- 웹 사이트 성능 및 가용성 문제 감지
- Amazon EC2 인스턴스의 용량 부족 여부 판단
- 웹 사이트의 정상 동작 여부 확인
- 리소스 과다 사용, 애플리케이션 결함, 리소스 구성 오류 또는 보안 이벤트 감시
- 메트릭은 모니터링을 통해 수집된 데이터로, 리소스가 생성하는 다양한 형태의 데이터를 포함합니다.
메트릭 예시
- EC2 인스턴스에서 수집되는 평균 CPU 사용률, 네트워크 사용률, 디스크 성능, 메모리 사용률
- 서버 또는 IT 시스템 로그
AWS의 리소스마다 다른 유형의 메트릭이 생성됩니다.
- Amazon S3 버킷: 객체 관련 메트릭 (버킷 크기, 객체 수 등), 요청 관련 메트릭 (객체 읽기, 쓰기 등)
- Amazon RDS: 데이터베이스 연결, 인스턴스 CPU 사용률, 디스크 공간 소비 등
- 사전 대응 가능
- 문제 발생 징후를 메트릭을 통해 확인
- 문제 발생 시 빠른 인식 및 해결
- 성능 및 안정성 개선
- 병목 현상 및 비효율적 아키텍처 확인 가능
- 보안 위협 인식
- 기준선을 설정하여 비정상적 활동 감지
- 데이터 중심의 의사 결정 지원
- IT 운영 상태를 주시하고 비즈니스 결정 지원
- 비용 효율적 솔루션 구축
- 사용량이 부족한 리소스를 조정하여 비용 최적화
- 효과적인 모니터링을 위해 중앙 집중 식 데이터 수집 및 분석이 필요하며, 데이터 가시성 확보가 중요
모니터링 솔루션 예
- AWS CloudWatch
- Prometheus
- Grafana
- AWS 리소스 및 애플리케이션을 모니터링하고 관측하는 도구로, 다양한 기능을 제공합니다.
1. CloudWatch 기능
- 이상 동작 감지 및 경보 설정
- 로그 및 메트릭 시각화
- 자동화된 작업 수행
- 애플리케이션 유지 및 인사이트 제공
2. CloudWatch 구조
- Dashboard: 통합된 그래프로 메트릭 정보 시각화
- 메트릭: 리소스 성능 관련 메트릭 확인
- Insight: 수집된 데이터 기반 가시성 확보
- Log: 로그 수집, 저장, 탐색, 분석
- Alarm: 특정 기준 충족 시 이벤트 발생 및 알림
- Event: AWS 리소스 변경사항에 대한 시스템 이벤트 기록
- Service Lens 및 Synthetics
3. CloudWatch 개요
- CloudWatch는 메트릭 및 로그 리포지토리를 제공하며, AWS 서비스와 온프레미스 애플리케이션 리소스를 모니터링합니다. 수집되는 데이터는 사전 정의된 메트릭과 사용자 지정 메트릭을 포함합니다.
OS 가상화 기술
프로세스 격리
리눅스 커널 공유
GuestOS의 유무
Docker는 컨테이너 기반의 오픈 소스 가상화 플랫폼으로, 컨테이너를 실행하고 관리하는 도구입니다.Docker는 도커허브를 통해 컨테이너 자료들을 관리합니다.
- 정의: 컨테이너 이미지를 생성하기 위한 레시피 파일
- 구성: 이미지 생성 과정을 문법에 따라 작성
- 주요 명령어:
FROM: 베이스 이미지 설정WORKDIR: 작업 디렉토리 설정RUN: 명령어 실행CMD: 컨테이너 시작 시 실행할 명령어예시 Dockerfile
FROM ubuntu:18.04 RUN apt-get update && apt-get install -y vim apache2 COPY index.html /var/www/html/ CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
2-2) Docker Image
- 정의: 서비스 운영에 필요한 프로그램, 소스코드, 라이브러리 등을 묶은 형태
- 생성: Dockerfile을 사용하여 커스텀 빌드
- 사용: 도커 이미지를 사용하여 다수의 컨테이너 실행
Docker Image Naming Rule
- 빌드 명령:
docker build -t <Namespace>/<ImageName>:<tag>- 예시:
docker.io/library/nginx:latestnginx:latestnginxDocker Private Image
- 정의: Private 이미지 저장소 구축 및 이미지 관리
- 예시:
k8sedu.com:3000/mywebserver:latestk8sedu.com:3001/mydbserver:v1
2-3) Docker HUB
- 정의: 수많은 컨테이너 이미지를 서버에 저장하고 관리하는 플랫폼
- 특징: 공개 이미지를 무료로 관리
- URL: Docker HUB
- 정의: 다수의 컨테이너를 여러 시스템에서 배포, 복제, 장애복구 등을 총괄적으로 관리하는 행위
- 일반적 기능:
- 스케줄링
- 자동확장 및 축소
- 장애복구
- 로깅 및 모니터링
- 검색 및 통신
- 업데이트 및 롤백
- 정의: 컨테이너 오케스트레이션을 수행하는 도구
- 종류:
- Kubernetes
- Docker Swarm
- AWS ECS
- Azure Container Instance
- Azure Service Fabric
- Marathon
- Nomad
- 위치:
- 베어 메탈
- 가상머신
- 온프레미스
- 클라우드
- 정의: 컨테이너형 애플리케이션의 배포, 확장, 관리를 자동화하는 오픈 소스 시스템
- 이유:
- 높은 확장성, 원활한 이동성
- 다양한 환경에 구축 가능 (퍼블릭/프라이빗/하이브리드/멀티 클라우드, 로컬 또는 원격 가상 머신, 베어메탈 등)
- 오픈 소스 도구의 장점
- 플러그가 가능한 모듈 형식
요약
Docker는 컨테이너 기반의 오픈 소스 가상화 플랫폼으로, Dockerfile을 통해 이미지를 생성하고, Docker Image를 사용하여 컨테이너를 실행합니다.
- Docker HUB를 통해 이미지를 관리할 수 있으며, 컨테이너 오케스트레이션 도구를 통해 다수의 컨테이너를 효율적으로 관리할 수 있습니다.
Kubernetes는 이러한 오케스트레이션 도구 중 하나로 높은 확장성과 다양한 환경 지원이 특징입니다.