Server 33

쿠버네티스(Kubernetes) Service란?

1. 서비스(Service)란? 쿠버네티스 서비스는 파드들을 통해 실행되고 있는 애플리케이션을 네트워크에 노출시키는 가상의 컴포넌트이다. 쿠버네티스 내부의 다양한 객체들이 애플리케이션과, 그리고 애플리케이션이 다른 외부의 애플리케이션이나 사용자와 연결될 수 있도록 도와주는 역할을 한다. 2. 쿠버네티스에서 서비스를 사용하는 이유 클러스터 안에서 애플리케이션을 구동시키는 데에 쓰이는 파드들의 반영속성인(ephemeral)특성 때문에 서비스를 사용하게 된다. 쿠버네티스에서의 파드는 무언가가 구동 중인 상태를 유지하기 위해 동원되는 일회성 자원이기 때문에, 언제든 다른 노드로 옮겨지거나 삭제될 수 있다. 또한 파드는 생성될 때마다 새로운 내부 IP를 받게 되므로, 이것만으로 클러스터 내/외부와 통신을 계속 유..

Server/Kubernetes 2022.12.17

쿠버네티스(Kubernetes) Deployment란?

지난 포스팅에서는 쿠버네티스의 파드(Pod), 레플리카셋(ReplicaSet)에 대해 알아보았다. 오늘은 이를 아우르는 디플로이먼트(Deployment)에 대해 정리해보고자 한다. 1. 디플로이먼트란? 쿠버네티스의 디플로이먼트(Deployment)는 애플리케이션에 선언적 업데이트를 제공하는 쿠버네티스 리소스 개체이다. 디플로이먼트를 통해 애플리케이션에 사용할 이미지, 유효 포드의 수, 업데이트 방식과 같은 애플리케이션 라이프사이클을 정의할 수 있다. 쿠버네티스 Object는 사용자가 원하는 클러스터 워크로드의 형태를 쿠버네티스 시스템에 알리는 방법이다. Object가 생성되면 클러스터가 작동하여 Object를 유지하므로 쿠버네티스 클러스터를 원하는 상태로 둘 수 있다. 쿠버네티스에서는 각 Object를 ..

Server/Kubernetes 2022.12.15

쿠버네티스(Kubernetes) ReplicaSet이란?

1. 레플리카셋(ReplicaSet) 이란? 레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다. 예를 들어, 5개의 파드를 항상 실행하도록 설정하면 이후 1개가 삭제되면 다시 파드 1개가 실행되어 5개를 유지할 수 있도록 해준다. 마찬가지로 노드 장애 등의 이유로 포드를 사용할 수 없다면 다른 노드에서 포드를 다시 생성하여 5개를 유지하도록 한다. 2. 레플리카셋을 사용하는 이유 쿠버네티스의 기본 단위인 Pod는 여러 개의 컨테이너를 추상화해 하나의 애플리케이션으로 동작하도록 만드는 훌륭한 컨테이너 묶음이다. 그러나 YAML에 포드만 정의해 생성하게 되면 이 Pod의 생애 주기(Lifecy..

Server/Kubernetes 2022.12.13

쿠버네티스(Kubernetes) Pod란?

1. 포드(Pod)란? 쿠버네티스 포드는 Linux 컨테이너를 하나 이상 모아 놓은 것으로, 쿠버네티스 애플리케이션의 최소 단위이다. 강하게 결합된 여러 개의 컨테이너로 구성된 포드도 있고(고급 활용 사례), 단일 컨테이너로만 이루어진 포드도 있다.(더 일반적인 활용 사례). 컨테이너를 쿠버네티스 포드로 그룹화하는 이유는 아래의 설명과 같이 리소스를 더 지능적으로 공유하기 위해서이다. 쿠버네티스 시스템에서는 같은 포드에 속한 컨테이너끼리 동일한 컴퓨팅 리소스를 공유한다. 이러한 컴퓨팅 리소스를 쿠버네티스에 풀링하여 클러스터를 만들고, 이를 바탕으로 더 강력하고 지능적으로 분산된 애플리케이션 실행 시스템을 제공할 수 있다. 쿠버네티스 포드의 장점을 이해하는 데 가장 중요한 요소가 아래에 정리되어 있다. 하..

Server/Kubernetes 2022.12.11

Stateless와 Stateful의 개념, 차이점

애플리케이션을 비롯한 모든 항목의 상태(state)란 해당 시점의 상황과 품질, 즉 존재 상태를 말한다. 스테이트풀(Stateful)과 스테이트리스(Stateless)는 상호 작용 상태가 얼마나 오래 기록 되는지, 해당 정보가 어떤 식으로 저장되는지를 기준으로 구별할 수 있다. Stateless 스테이트리스 프로세스 또는 애플리케이션은 격리된 것으로 간주된다. 과거 트랜잭션에 대한 정보 또는 참조가 저장되지 않기 때문이다. 각 트랜잭션은 모두 처음부터 시작된다. 스테이트리스 애플리케이션은 하나의 서비스 또는 기능을 제공하며, 컨텐츠 전달 네트워크(CDN), 웹, 프린트 서버를 사용해 이러한 단기 요청을 처리한다. 이러한 스테이트리스 트랜잭션의 가장 일반적인 예시는 검색창에 질문을 입력하고 엔터키를 누르는..

Server 2022.07.16

Karaf에 대해

1. Karaf란 1.1 Karaf소개 Apache Karaf: The modulith* runtime (Modulith: 모듈식 모놀리식(모듈리틱) Java 어플리케이션의 개발을 지원하는 기술울 구축하기 위한 환경이다.) Karaf는 가볍고, 강력하며, 기업용으로 준비된 모듈식 런타임이다. 어플리케이션에 필요한 모든 에코시스템 및 부트스트래핑 옵션을 제공한다. 사내 또는 클라우드에서 실행된다. 이 모듈식 런타임은 REST-API, 웹, 스프링 부트 등과 같은 여러 프레임워크와 다양한 종류의 응용 프로그램을 지원한다. Apache에서 만든 다형성의 특징을 가진 OSGi(추후 설명) 기반 컨테이너이다. 다형성의 특징을 지녔기 때문에, OSGi, Spring, WAR등.. host가 모두 가능하다. 독립적으..

Server 2022.07.16

[Bash] 실행중인 서비스 죽이기 & 해당 스크립트 만들기

1. 실행중인 서비스를 죽이기 1.1 서비스 kill 일반적으로 실행중인 서비스를 죽이기 위해서는 다음 명령어를 사용한다. $kill -9 [PID] [사용법] PID는 process의 id를 뜻하며, -9 옵션은 프로세스를 강제 종료한다는 의미이다. (default는 -15이며, 정상종료를 뜻함) 실행중인 서비스를 죽이기 위해서는, 서비스의 PID를 알아야 하는데, 이를 위해선 다음 명령어를 사용한다. 1.2 서비스 PID 검색 $ps -ef | grep [regex] [사용법] 실행 중인 모든 프로세스 중 regex가 포함된 프로세스를 찾아서 목록으로 출력한다. 2. 실행중인 서비스를 죽이는 스크립트 생성 해당 스크립트를 작성하기 위해서는 다음과 같은 명령어를 .sh파일에 작성한다. $ps -ef |..

Server/Linux 2022.05.16

[Docker] NodeJS 웹 앱의 도커라이징

1. 전제사항 Docker가 설치되어 있음 NodeJS프로젝트가 준비되어 있음 포스팅하는데 사용한 프로젝트는 NodeJS express 웹 앱이며, 실행시 웹서버가 3000번 포트로 띄어져 REST API 요청 받아 처리 및 리턴해주는 역할을 해준다. 2. Dockerfile 생성 Docker를 사용하여 NodeJS 웹 앱을 도커라이징하면 모든 의존성을 소프트웨어 개발에서 컨테이너라고 부르는 표준화된 단위로 패키징할 수 있다. Dockerfile이라는 빈 파일을 생성한다. $touch Dockerfile 선호하는 텍스트 에디터로 Dockerfile을 연다. 처음으로 해야할 것은 어떤 이미지를 사용하여 빌드할 것인지를 정의하는 것이다. 이 포스트에서는 Docker Hub에 있는 node의 14버전을 사용할..

Server/Docker 2022.05.02

[Docker] Dockerfile에 대해

1. Dockerfile이란? 도커 명령어로 컨테이너를 구성하기 위해서는 컨테이너 생성, 컨테이너 안에서 OS설정, 미들웨어 설치, 파라미터 설정 등은 모두 직접 수행해야 한다. 이러한 일련의 작업을 자동으로 수행하도록 스크립트로 만든 것이 Dockerfile이다. 이러한 Dockerfile은 필요한 환경설정이 모두 세팅된 image를 만드는 데 목적이 있으며, 또한 자동화로써 사용할 수 있고 스크립트이므로 변경해서 재사용할 수도 있다. Dockerfile의 내용은 아래와 같은 정보들을 기술한다: 베이스가 될 도커 이미지 도커 컨테이너 안에서의 수행할 명령, 조작 등 환경변수 등의 설정 도커 컨테이너 안에서 작동시킬 데몬 실행 2. Dockerfile의 기본 구문 Dockerfile은 텍스트 형식이며 확..

Server/Docker 2022.05.02

[Docker] Docker에 대해

0. 서론 (서론을 읽는건 생략해도 된다.) 회사의 A사원과 B사원이 같이 협업하여 웹사이트 개발을 진행하는데, 서로의 호스트에 설치한 Angular의 버전이 달라서 한쪽에서 빌드가 되는데 한쪽에서 에러가 나는 상황이 발생하였다. 이에 따라 Docker에 대해 알아보고 구축한 후 개발을 재개하게 되었고, 위와 같이 각기 다른 호스트의 로컬 환경이 달라서 발생하는 이슈 문제는 없어지게 되었다. 1. Docker란? Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있다. Docker..

Server/Docker 2022.05.02
반응형