Kubernetes & Docker

    쿠버네티스 YAML파일 Selector는 무엇을 가리킬까?

    ※주의 이 글은 제가 혼자 공부하면서 여기저기 찾아보고 정리하는 곳이라서 글의 퀄리티나 내용상 맞지 않는 부분들이 있습니다. 공식문서가 더욱 더 큰 도움이 될 수 있습니다! 이 글에서 가져온 코드들은 쿠버네티스 공식문서에서 가져왔습니다. https://kubernetes.io/ko/ 운영 수준의 컨테이너 오케스트레이션 운영 수준의 컨테이너 오케스트레이션 kubernetes.io 궁금점 디플로이먼트, 서비스, 파드, 레플리카셋등 오브젝트를 명시할 때 yaml파일에서 spec을 정의해준다. 그 때 selector는 어떤 것을 가리킬까? 다 똑같은 오브젝트를 가리키는 것인지? 예상 pod를 가리킬 것 같다. 행동 파드 - 레플리카셋 - 디플로이먼트 - 스테이트풀셋 - 데몬셋 - 서비스순으로 진행하겠습니다. 파..

    쿠버네티스 Deployment와 ReplicaSet에 대해서

    ※주의 이 글은 제가 혼자 공부하면서 여기저기 찾아보고 정리하는 곳이라서 글의 퀄리티나 내용상 맞지 않는 부분들이 있습니다. 공식문서가 더욱 더 큰 도움이 될 수 있습니다! 궁금점 디플로이먼트는 레플리카셋을 관리한다. 1. 디플로이먼트와 레플리카셋을 동시에 만들면 어떻게 될까? 2. 디플로이먼트도 레플리카셋을 만들어 파드를 관리하고 레플리카셋도 파드를 만들어서 관리를 하는데 그럼 굳이 디플로이먼트를 만들어야 하는 이유가 있을까? 그냥 레플리카셋을 만들어서 파드를 관리하면 되잖아. 예상 디플로이먼트와 레플리카셋은 거의 같은 개념? 이라고 봐도 무방하기 때문에 같이 바라본 pod에 대해 충돌이 일어나거나 오류가 생길 것 같다. 조건 동일한 컨테이너를 포함해야함. Minikube에서 단일노드로 진행을 했다. ..

    쿠버네티스 공식문서 파헤치기 : 레플리카셋(ReplicaSet)

    https://kubernetes.io/ko/docs/concepts/workloads/controllers/ 컨트롤러 운영 수준의 컨테이너 오케스트레이션 kubernetes.io 이 글은 공식문서를 보고 혼자 공부한 것을 정리한 곳입니다. 레플리카셋 레플리카셋의 궁극적인 목표는 파드 집합의 실행을 항상 안정적으로 유지하는 것. 레플리카셋을 정의하는 필드에 포함되어야 하는 것들 1. 파드를 식별하는 셀렉터 2. 파드 개수를 명시하는 레플리카의 개수 3. 레플리카의 개수 만큼 유지하기 위해 신규 생성되는 파드의 파드 템플릿 디플로이먼트는 레플리카셋을 관리하고 다른 유용한 기능과 함께 파드에 대한 선언적 업데이트를 제공하는 상위 개념이다. 그래서 사용자 지정 오케스트레이션이 필요하거나 업데이트가 전혀 필요하..

    쿠버네티스 공식문서 파헤치기 : 파드(Pod)

    https://kubernetes.io/ko/docs/concepts/workloads/pods/pod-overview/ 파드(Pod) 개요 이 페이지는 쿠버네티스 객체 모델 중 가장 작은 배포 가능한 객체인 파드 에 대한 개요를 제공한다. 파드에 대해 이해하기 파드 는 쿠버네티스 애플리케이션의 기본 실행 단위이다. 쿠버네티스 kubernetes.io 이 글은 제가 공식문서를 보고 혼자 정리하는 글입니다. 파드(Pod) 파드는 쿠버네티스의 기본 실행 단위이다. 단일 컨테이너만 동작하는 파드 하나의 파드안에 하나의 컨테이너가 동작하는 것이다. 다중 컨테이너가 동작하는 파드 공유 볼륨을 이용해서 퍼블릭으로 파일들을 옮긴다. 그리고 같은 파드안에 있는 컨테이너들은 네트워킹과 저장소를 공유한다. 파드를 관리하는..

    쿠버네티스 공식문서 파헤치기 : 클러스터 아키텍처

    https://kubernetes.io/ko/ 운영 수준의 컨테이너 오케스트레이션 운영 수준의 컨테이너 오케스트레이션 kubernetes.io 이 문서는 제가 쿠버네티스 공식문서를 혼자 보고 공부하는 곳입니다! 노드 컨테이너를 파드내에 배치를하고 실행을 시키고 싶을 때 실행하는 장소 API 서버에 노드를 추가하는 두 가지 주요 방법 1. 노드의 kubelet으로 컨트롤 플레인에 자체 등록 2. 사용자 또는 다른 사용자가 노드 오브젝트를 수동으로 추가 노드 생성 노드 생성은 kubectl을 사용해서 생성하고 수정할 수 있다. 파드의 노드 셀렉터와 함께 노드의 레이블을 사용해서 스케줄링을 제어할 수 있다. 예를 들어, 사용 가능한 노드의 하위 집합에서만 실행되도록 파드를 제한할 수 있다. 노드 상태 주소 H..

    쿠버네티스 공식문서 파헤치기 : 개요

    https://kubernetes.io/ko/ 운영 수준의 컨테이너 오케스트레이션 운영 수준의 컨테이너 오케스트레이션 kubernetes.io 이 문서는 제가 쿠버네티스 공식문서를 혼자 보고 공부하는 곳입니다! 쿠버네티스가 무엇인가 쿠버네티스에서 컨테이너는 어플리케이션을 포장하고 실행하는 아주 좋은 방법이다. 컨테이너가 다운이 되면 다른 컨테이너를 다시 시작을 해야한다. 이 문제를 시스템에 의해 처리를 한다면 더 쉽지 않을까 하는 생각에서 만들어진 툴 쿠버네티스 컴포넌트 쿠버네티스 클러스터는 컴퓨터 집합인 노드 컴포넌트와 컨트롤 플레인 컴포넌트로 구성된다. 노드 컴포넌트 = kubelet, kube-proxy 컨트롤 플레인 컴포넌트 = kube-api-server, kube-scheduler, cloud..

    Docker-compose로 여러 개의 서비스 구동하기

    docker-compose docker-compose 에 대한 이해 sudo docker run -d -p 8080:8080 -v /home/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -u root 이렇게 매번 sudo를 작성해야 한다면 너무 고통스러울 것이다. 그래서 존재하는 것이 docker-composer docker-composer는 컨테이너가 많아질수록 관리하기가 더욱 어려워지는데 컨테이너 관리를 도와주는 역할을 한다. 우리가 Jenkins를 구동할 때 docker-compose 설치 docker를 설치한다고해서 docker-compose가 같이 설치되지 않는다 그래서 따로 설치를 해주어야 한다. docker-c..

    Docker를 이용한 Tomcat Image pull & run

    Tomcat Apache에 대한 이해아파치는 오픈소스 라이센스에 따라 배포된 HTTP 웹 서버이다. 웹 서버라는 것은 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할을 한다. 그렇지만 아파치는 정적인 데이터밖에 처리하지 못한다(HTML, CSS, 이미지 등등등..) Tomcat에 대한 이해현재 가장 일반적으로 많이 사용되는 WAS(Web Aplication Server)이다. 톰캣은 웹 서버가 아닌 웹 컨테이너에서 클라이언트(고객)의 요청이 있을 때 내부 프로그램을 통해 결과를 만들어내고 이것을 다시 클라이언트에게 돌려주는 역할을 한다. 보통 톰캣이라고 부르지않고 아파치 톰캣이라고 부른다. 그 이유는 웹 서버와 웹 컨테이너의 결합으로 다양한 역할을 수행하기 때문이다. 정적인 데이..

    Docker를 이용한 Nexus Image pull & run

    Nexus Repository Nexus Repository에 대한 이해사설 Repositoy로 사용할 수 있으며 코드 공유등에 사용 할 수 있다. * maven = 자바용 프로젝트 관리 도구 참고한 사이트 : Nexus Repository란 Nexus Repository란 넥서스 레포지토리란 maven에서 사용할 수 있는 가장 널리 사용되는 무료 repository 이다. 사설 Repository로 사용할 수 있으며 코드 공유등에 사용 할 수 있다. Docker와 Helm도 지원한다! 생각보다 많은 � kim-daeyong.github.io maven에서 사용할 수 있는 가장 널리 사용되는 무료 Repository. Nexus Repository image 설치 우리가 설치할 Nexus 버전은 Nexu..

    Docker를 이용한 MariaDB Image pull & run

    MariaDB MariaDB에 대한 이해MariaDB는 MariaDB사가 제작한 오픈소스 RDBMS 소프트웨어이다. MariaDB는 MySQL과 친화적이다. MySQL과 동일한 소스 코드를 기반으로 한다. 참고한 사이트 : MariaDB 소개 MariaDB Image pull docker pull mariadb:latest 로 latest 버전을 pull 해준다. docker run --name mariadb -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mariadb mariadb --name은 Container의 이름 으로 mariadb로 설정 -d 는 detached mode로 Container가 백그라운드로 실행. -p는 Host와 Container의 포트를 연결하는 것으로..

    Docker를 이용한 Jenkins Image pull & run

    Jenkins Jenkins에 대한 이해 소프트웨어 개발 시 지속적 통합 서비스를 제공하는 툴 빌드, 테스트, 배포등의 작업들을 자동화 해주는 툴 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드하면서 지속적으로 통합이 가능하도록 해주는 툴이다. 참고한 사이트 : Jenkins 이해하기 빌드란? 그리고 Jenkins(젠킨스)란? 써야 하는 이유 빌드란? 그리고 Jenkins(젠킨스)란? 써야 하는 이유 서버에 기능을 추가 하려면 개발자가 개발자 노트북에서 개발을 하고 테스트까지 한 다음에 이상이 없으면 사용자가 사용할 수 있게 수정된 내 krksap.tistory.com Jenkins Image 받기 Jenki..

    Docker 컨테이너들을 Kubernetes를 이용해 오케스트레이션하기

    작업 목적 : 여러 개의 컨테이너를 오케스트레이션할 수 있도록 Docker Image단위로 Kubernetes 서비스를 구축한다. 1. Docker Image pull -> Docker run 2. Docker Image -> Kubernetes pod으로 관리 3. Docker Image들을 Kubernetes를 통해서 오케스트레이션 서비스 임의종료시 복구 확인 4. 일련의 과정을 원클릭(최소) instruction으로 수행 각 서비스별 상세 설정항목 관리 Docker Image pull 받아서 Kubernetes로 실행 (from dockerhub) Jenkins, Nexus, Tomcat, MariaDB 여러 개의 컨테이너를 오케스트레이션할 수 있도록 Docker Image단위로 Kubernetes..