Containerize19 [k8s] Docker Desktop k8s vs Minikube? 현재 회사에서 담당하고 있는 서비스는 AWS ECS 기반으로 운영되고 있다. 추후 ECS 기반 서비스를 EKS로 이관할 가능성이 있어, Kubernetes(k8s) 환경을 로컬에서 테스트하려는 계획을 진행 중이다. 로컬 k8s 환경 구축을 위해 여러 옵션을 검토하는 과정에서, Docker Desktop의 k8s 설정과 Minikube 두 가지 옵션이 있는 것을 알게 되었다. 이에 대해 어떤 차이가 있는지 의문을 갖게 되었는데 이번 시간에는 위 2가지 옵션의 차이점에 대해 간략히 알아보는 시간을 갖는다.01. minikube?# minikuba의 단일 노드 구성┌─────────────────────────────────────────┐│ Minikube Cluster (단일 노드) ││.. 2025. 1. 24. [Docker] Docker commit, save, load 차이점 정리 01. docker commit(docker container -> docker image)# -a: author# -m: message# -c: commit시, Dockerfile 명령 지정 [CMD, ENV]# -p: 컨테이너 일시 정지 후 commit# docker commit [option] [contianer id] [image:tag]docker commit 5ca230103304 custom:latest컨테이너 내에서 작업 진행 중 현재 상태를 기억하기 위해 commit 사용commit을 사용하면 해당 컨테이너를 기반으로 image 생성 가능실행중인 컨테이너의 변경 사항을 저장 후 새로운 이미지 생성export와 다른 부분은 commit은 새로운 image 생성export/save 모두 im.. 2025. 1. 6. [Docker] Docker namespace, cgroup 정리 Linux namespace, cgroup 정리Linux의 namespace와 cgroup은 커널의 기능이다. 커널의 기능에 대해 깊게 아는것은 당장은 힘들지만, 2개의 기능(namespace, cgroup)이 어떤 개념과 원리로 사용되는지 간략히 정리해본다.namespace(자원 격리)VM(Virtual Machine)에서는 각 Guest 머신(Guest OS)별로 독립적인 공간이 제공된다.이로 인해 Guest 머신 끼리 서로 충돌하지 않는다.리눅스에서 이와 동일한 역할을 하는 namespace 기능이 커널에 내장되어 있다.namespace는 리눅스 커널의 리소스를 논리적으로 분리하는 역할을 한다.namespace aaa는 process에 포함namespace bbb도 process에 포함namespa.. 2025. 1. 6. [Docker] Dockerfile 옵션 관련 정리(ADD, COPY, ENV, ARG, ENTRYPOINT, FROM) 01. Dockerfile 구성😃 아래 내용은 Github Action을 구성하며 사용한 간단한 Dockerfile이다.해당 Dockerfile에 있는 옵션을 하나씩 정리 해보자.# 베이스 이미지FROM openjdk:17-jdk-slim# WORK DIR 지정WORKDIR /apps# 이미지 빌드 시 --build-args 로 넘길 인자ARG JAR_FILE=build/libs/*.jar# 이미지 혹은 파일을 도커 이미지의 파일 시스템으로 복사COPY ${JAR_FILE} app.jar# 노출 포트EXPOSE 8080# 이미지를 기반으로 컨테이너를 띄울 때 항상 실행되어야 하는 명령어ENTRYPOINT ["java", "-jar", "app.jar"]🐳 Dockerfile은 Docker 상에서 작.. 2024. 2. 7. [Kubernetes] 파드, 마스터, 워커 노드 문제 발생 시 01. 쿠버네티스 파드에 문제가 생긴 경우이번 시간에는 쿠버네티스 파드에 문제가 생긴 경우 어떻게 문제를 해결하는지 알아보자.01-1. 만약 파드를 실수로 지웠다면파드를 지우는 경우는 아래와 같이 두 가지 유형으로 구분이 된다.파드만 배포된 경우 삭제 해버렸다파드가 삭제가 되면 복구가 힘들다새로운 파드를 직접 생성 해줘야 한다디플로이먼트 형태로 배포된 파드를 삭제 해버렸다디플로이먼트의 경우 파드가 삭제되어도 새로운 파드를 생성한다Replica Set의 갯수에 따라서 Pod를 재생성하기 때문이다01-2. 삭제 실습kubectl apply -f ~/_Lecture_k8s_starter.kit/ch4/4.1/del-deploy.yamlkubectl apply -f ~/_Lecture_k8s_starter.ki.. 2023. 4. 25. [Kubernetes] 쿠버네티스 구성 요소 확인(+EKS, AKS, GKE)과 파드 배포 흐름 01. 쿠버네티스 구성 요소 확인이전 시간에 쿠버네티스를 설치하고 Pod를 배포하는 과정을 진행 하였지만, 정작 쿠버네티스가 어떻게 구성이 되어 있는지 알아보지 않았다. 이번 시간에는 조금 더 쿠버네티스의 라이프 사이클을 이해하기 위해 쿠버네티스의 구성 요소에 대해 알아보자.01-1. 쿠버네티스의 구성 요소현재 쿠버네티스의 구성 요소는 다음 사진과 같이 구성이 되어있다.이번 시간에는 대략 이러한 구성요소가 존재한다는 것만 인지하고 넘어가자.01-2. 구역을 나누는 네임스페이스쿠버네티스는 구역을 나누는 네임스페이스를 가지고 있다. 즉, 각각의 영역을 네임 스페이스를 기준으로 구분하여 구성이 되있다는 말이다. 이 말만 듣고서는 이해가 쉽지는 않을 것 같으니 하나의 예를 들어보자. 오피스텔에는 102호, 10.. 2023. 4. 25. [Kubernetes] 파드, 서비스, 로드밸런서를 통한 서비스 배포 01. 쿠버네티스에 실제로 앱 배포하기이번 시간에는 쿠버네티스 환경을 통해 실제 Nginx 앱을 배포하는 시간을 갖는다.01-1. 배포 프로세스쿠버네티스에 Application을 배포한다는 것은 master node를 통해 진행이 된다. 즉, kubectl을 통해 master node에 명령을 내리고 master node가 worker node에 app을 배포한다. 여기서 master node에 의해 배포가 되는 단위는 pod(파드)가 된다.01-2. Pod란?TODO Pod 내용 추가 필요Pod란 하나의 일을하기 위한 컨테이너의 집합한 가지 일을 하는 단위를 구성한 것02. Nginx 이미지 배포위에서 Pod에 대한 개념을 간략히 알아보았다. 이제 control plain(마스터 노드)에서 Nginx .. 2023. 4. 25. [Kubernetes] 코드로 쉽게 구성하는 쿠버네티스 랩 환경 01. 코드로 쉽게 구성하는 쿠버네티스 랩 환경이번 시간에는 쿠버네티스를 로컬에서 사용하기 위한 랩 환경을 구성 해보자. 교육용 목적으로 제공이 되는 플레이 쿠버네티스 혹은 쿠버네티스 플레이그라운드가 존재하기는 하지만 각 서비스마다 일정 제한이 존재하기에 VAGRANT를 사용해 구성한다.01-1. 어떻게 코드로 설치하는가?위에서 말했다사피 데스크탑이나, laptop에 최소한의 환경 구성을 잡을 것이다VAGRANT Tool을 사용하여 Virtual Box에 코드 전송Virtual Box에는 코드에 맞는 마스터, 워커 노드 환경 구성현재 VAGRANT를 사용하여 구성된 환경의 장점은 다음과 같다.실제 환경 구성을 다음 장에서 진행할 예정이다.어떤 환경에서도 원하는대로 사용이 가능하다메모리를 최소한으로 사용하.. 2023. 4. 25. [Kubernetes] 쿠버네티스란? 01. 쿠버네티스란?쿠버네티스란 컨테이너화된 애플리케이션의 ‘배포’, ‘확장’ 및 ‘관리’를 자동화 하는 오픈 소스즉, 다수의 컨테이너를 일일이 관리할 수 없기 때문에 쿠버네티스를 통해 관리를 자동화 하는 것이다.그렇다면 이러한 쿠버네티스를 좀 더 알아보기 위해 간략한 용어 정리를 해보자. 용어 뜻컨테이너앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술(프로세스)컨테이너 런타임컨테이너를 다루는 도구도커컨테이너를 다루는 도구 중 가장 유명한 것쿠버네티스컨테이너 런타임을 통해 컨테이너 오케스트레이션을 지원하는 도구오케스트레이션여러 서버에 걸친 컨테이너 및 환경 설정을 관리하는 행위01-1. 쿠버네티스가 필요한 이유쿠버네티스를 사용하면 컨테이너화 된 애플리케이션 환경을 탄력적으로 실행할 수 있다.. 2023. 4. 25. [Docker] 복잡한 어플을 실제 배포해보기 01. 섹션 설명실제로 애플리케이션을 구성할때는 프론트 부분만을 이용하는 것이 아닌 백엔드 서버도 필요하고 DB 등등 많은 것이 필요하다. 이번에는 이전보다는 더욱 더 복잡한 도커 환경을 구성하는 시간을 가져보자.01-1. 풀스택 어플리케이션 (multi-container application)이번에는 요청(Request)은 Nginx, 프론트는 react, 백엔드는 node.js로 구성된 멀티 컨테이너 어플리케이션 환경을 구성 해보자. 실제로 어플리케이션이 모두 구현된 화면은 다음과 같다. 입력창에 데이터를 입력하면 TODO 리스트처럼 입력이 되는 간단한 어플리케이션. 해당 데이터는 MySQL에 저장 후 바로 보여주는 방식으로 진행이 된다. 또한 컨테이너를 재 시작하여도 DB에 남아있는 데이터는 그대.. 2023. 4. 24. 이전 1 2 다음