Kubernetes 7

Container Orchestraion/ K8S/ K8S Object

Container Orchestration 어느 환경에서든 실행 가능한 Container기술이 뜨면서 많은 사람들이 Application을 Container형태로 띄웠습니다. 그렇게 Container가 수 백개~수 천개가 되면서 Container를 관리하기가 힘들어졌습니다.  이런 Container들을 좀 더 잘 관리하기 위해 나온 것이 Container Orchestration. Container Orchestration이 컨테이너를 스케줄링/클러스터링/서비스 디스커버리/ 로깅 및 모니터링 등의 역할을 해줍니다. 컨테이너 오케스트레이션 도구에는 어떤 것들이 있을까? kubernetes, Docker Swarm, Apache Mesos 등이 있다 Docker Swarm은 간단하고 설정이 쉽지만 큰 프..

Kubernetes 2023.07.25

Dockerfile 개념과 작성법 그리고 작성예시

Dockerfile은 Docker 컨테이너 이미지를 빌드하기 위한 지침을 작성하는 파일입니다. Dockerfile을 작성할 때는 몇 가지 중요한 문법 규칙을 따라야 합니다. 아래는 기본적인 Dockerfile 작성 관련 문법을 설명합니다. Dockerfile 명령어 1. FROM 베이스 이미지를 지정합니다. Docker 이미지는 FROM으로 지정한 기본 이미지 위에 구축됩니다. FROM base_image dockerfile로 이미지를 만들 때 이미지의 크기를 줄여야 container생성을 빠르게 할 수 있기 때문에 Dockerfile을 얼마나 최적화하여 만드는 가가 매우 중요합니다. 이때 base image로 자주 쓰이는 것들이 있습니다. 1. alpine: 알파인 (Alpine)은 경량화된 리눅스 배..

Kubernetes 2023.07.23

Registry(레지스트리)와 Repository(리포지토리) 차이는?

docker나 git을 보다보면 Registry(레지스트리) 와 Repository(리포지토리)라는 용어가 많이 나옵니다. 이름이 비슷해서 헤깔리곤 합니다. Registry Registry는 레지스트리는 Docker 이미지와 같이 컨테이너화된 소프트웨어 이미지를 저장하는 중앙 집중형 저장소입니다. 이런 Registry는 Repository를 여러 개 보관하는 서비스라고 볼 수 있습니다. Repository Repository는 소프트웨어 개발에서 소스 코드, 컨테이너 이미지 등의 프로젝트 자산을 저장하는 공간을 말합니다. 컨테이너 이미지와 관련해서 Repository를 부가설명하면 하나의 이미지에 대해 태그를 사용하여 다양한 출시 버전을 함께 보관하는 곳이라고 생각하면 됩니다. 레지스트리에서 컨테이너 이..

Kubernetes 2023.07.21

Docker 란 무엇인가?

1. Docker는 왜 나왔을까? 리눅스의 기반 기술만으로도 컨테이너를 만들 수 있다(namespace, chroot 등등만 써서) 그러나 리눅스 기반기술만을 사용해서 컨테이너를 만들면 재사용도 어렵고 공유가 어렵다. 그래서 등장한 게 Docker다. Docker 아이콘을 보면 화물선과 같이 생겼다. 아이콘 처럼 규격에 맞게 컨테이너들을 나르는 화물선같은 역할을 해준다. Spring Boot 어플리케이션이든 MariaDB이든 Docker 엔진위에 컨테이너 형태로 동일한 규격에 맞추어 실행된다. 이렇게 규격을 맞춘 어플리케이션들은 Docker 엔진 위라면 어느 곳에 옮겨져도 문제가 없다. (규격에 맞는 컨테이너가 어느 화물선이든 실리듯이..) 2. Docker 아키텍처 Docker의 아키텍처를 보면 크게 ..

Kubernetes 2023.07.21

컨테이너를 이해하기 위한 리눅스 기반 기술

컨테이너는 애플리케이션을 격리된 환경에서 실행하는 가상화 기술입니다. 이를 위해 리눅스 기반 기술을 사옹하는데 어떤 기술을 사용하는지 알아봅시다. 1. namespace namespace는 프로세스가 격리된 환경에서 실행되게 해줍니다. 예를 들어, PID 네임스페이스는 프로세스 식별자를 격리하여 각 컨테이너가 독립된 프로세스 트리를 가질 수 있게 합니다. 2. cgroupcgroup(Linux Control Group)은 프로세스의 자원 사용량을 제한합니다. 각 컨테이너는 cgroups를 사용하여 CPU, 메모리, 디스크 I/O 등의 리소스를 할당받고 제한할 수 있습니다. 3. chrootchroot(Change Root)는 프로세스가 실행될 루트 디렉토리를 변경하는 명령어입니다. 이걸 이용해 특정 디렉..

Kubernetes 2023.07.19

Container와 Container Runtime

이 글에서는 Kubernetes를 배우면 가장 먼저 언급되는 컨테이너, 가상서버, Docker에 관해서 이야기 합니다. 컨테이너는 왜 등장했을까? 컨테이너는 어플리케이션을 실행하는데 필요한 설정, 소프트웨어들을 합쳐놓은 것이다. 따라서 어떤 환경에서든 구동시킬 수 있고, 여러 개의 컨테이너도 돌리 수 있다. 컨테이너와 가상 서버의 차이점은? 둘 다 한 대의 머신을 여러 사용자에게 쪼개면서도 사용자는 마치 한 대의 전용 서버를 쓰는 것 같이 이용할 수 있게 해준다. 차이점은 어떻게 분리된 느낌을 주게 하는 냐이다. 가상 서버는 가상화 소프트웨어 즉, 하이퍼바이저(Hypervisor)를 사용해 하드웨어를 공유한다. 컨테이너는 하나의 리눅스 프로세스가 마치 전용 서버에서 동작하고 있는 것 같은 분리상태를 만들..

Kubernetes 2023.07.17

Kubernetes 학습 Overview

쿠버네티스에 대해서 학습한다고 하면 학습 범위가 매우 넓다. 학습자의 role이나 목표에 따라서 범위와 깊이가 달라지겠지만.. 일반적으로는 아래와 같은 내용들의 학습이 필요하다. 컨테이너와 Docker 컨테이너 오케스트레이션 도입 이유와 기능 쿠버네티스의 개념과 핵심 사상 쿠버네티스의 아키텍처 Pod 쿠버네티스의 워크로드(Deployment, StatefulSet, Job, CronJob, DaemonSet, ReplicaSet) 쿠버네티스의 Service Stateless를 위한 Storage(PVC, PV, StorageClass) Container Configuration을 위한 ConfigMap, Secret 개인적으로는 초반의 기초 개념을 익히고 지식을 쌓는 과정이 힘들고 지루했다. 개념들이 와..

Kubernetes 2023.07.16