분류 전체보기 (70) 썸네일형 리스트형 쿠버네티스에 젠킨스(Jenkins) 설치하기 쿠버네티스에 젠킨스(Jenkins) 설치하기 MetalLB 구성 > jenkins namespace 생성 > pv,pvc 생성 > deployment 생성 > service 생성 # MetalLB 구성 MetalLB 컨트롤러는 작동방식(Protocol)을 정의하고 EXTERNAL-IP를 부여해 관리한다. MetalLB 스피커는 정해진 작동방식에 따라 경로를 만들 수 있도록 네트워크 정보를 광고하고 수집해 각 파드의 경로를 제공한다. 1. 사전에 정의된 오브젝트 스펙으로 MetalLB 구성 $ kubectl apply -f _Book_k8sInfra/ch3/3.3.4/metallb.yaml 2. 파드 확인 $ kubectl get pods -n metallb-system -o wide 3. MetalLB .. 모놀리식 아키텍처 vs 마이크로서비스 아키텍처(MSA) 모놀리식 아키텍처와 마이크로 서비스 아키텍처 비교 모놀리식 아키텍처 (Monolithic Architecture) vs 마이크로서비스 아키텍처 (MicroService Architecture) # 모놀리식 아키텍처 (Monolithic Architecture) 전통의 아키텍처를 지칭한다. 소프트웨어의 모든 구성요소가 한 프로젝트에 통합 되어 있는 형태. 모놀리식 아키텍처의 경우 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행된다. 따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 한다. 코드 베이스가 증가하게 되면 모놀리식 애플리케이션의 기능을 추가하거나 개선하기가 더 복잡해진다. 장점 - 소규모 프로젝트에서는 합리적이다. - 개발, 빌드, 배포, 테스트가 용이.. 도커 컨테이너 이미지 만들기 1 - 기본 방법으로 빌드하기 직접 컨테이너 이미지를 만들어 쿠버네티스에서 사용하는 방법 컨테이너 인프라 환경을 구성할 때 이미 제공된 이미지를 사용하는 경우도 있지만, 직접 만든 애플리캐이션으로 컨테이너를 만들 수 있다. 책에서 제공하는 소스코드로 자바 실행파일을 빌드하고 이를 다시 도커빌드를 사용해 컨테이너 이미지를 만든다. 기본적인 빌드 > 용량 줄이기 > 컨테이너 내부 빌드 > 멀티 스테이지 # 기본 방법으로 빌드하기 컨테이너 이미지를 만드는 방법은 다양하지만, 가장 간단한 방법부터 살펴보자. 스프링 부트(Spring Boot)를 이용해 만든 자바 소스 코드로 이미지를 빌드한다. 해당 소스 코드는 요청을 전달하면 출발지와 목적지를 반환하는 간단한 기능만 제공한다. # 컨테이너 이미지 빌드 과정 자바 소스 빌드 > 도커파일 작성.. 도커 컨테이너/이미지 정지하고 삭제하기 사용하지 않는 컨테이너 정리하기 # 컨테이너 정지하기 컨테이너나 이미지를 삭제하기 전에 먼저 컨테이너를 정지해야한다. 삭제할때 말고도 동일한 호스트의 포트를 사용하는 컨테이너를 배포하거나 작동중인 컨테이너의 사용 자체를 종료할 때도 먼저 컨테이너를 정지해야 한다. 1. nginx이미지를 기반으로 생성된 컨테이너 조회 $ docker ps -f ancestor=nginx ancestor 키는 컨테이너를 생성하는 데 사용한 이미지를 기준으로 필터링한다. 2. 컨테이너 정지 $ docker stop $ docker stop 3. 모든 컨테이너 정지 $ docker stop $(docker ps -q -f ancestor=nginx) nginx 이미지를 사용하는 모든 .. 도커 바인드 마운트(Bind mount)와 볼륨(Volume) # 바인드 마운트로 호스트와 컨테이너 연결하기 현재 정상적으로 노출된 nginx 컨테이너의 구조를 살펴보면 처음 접속할 때 노출되는 페이지는 /usr/share/nginx/html/index.html 이다. 따라서 수정해야하는 파일이 index.html이며, 이러한 경로 설정은 /etc/nginx/nginx.conf에 존재한다. 1. 컨테이너의 /usr/share/nginx/html/ 디렉터리와 호스트의 /root/html/ 디렉터리를 연결 $ sudo mkdir -p /root/html $ docker run -d -p 8081:80 -v /root/html:/usr/share/nginx/html --restart always --name nginx-bind-mounts nginx 컨테이너 내부에 연결.. 도커 컨테이너 실행하기 # 도커 컨테이너 단순히 실행하기 1. 새로운 컨테이너 실행 $ docker run -d --restart always nginx docker run 으로 컨테이너를 생성하면 결과값으로 14d58aacc.. 같은 16진수 문자열이 나온다. 이런 문자열은 컨테이너를 식별할 수 있는 고유한 ID이다. -d(—detach) 컨테이너를 백그라운드에서 구동한다는 의미이다. 옵션을 생략하면 컨테이너 내부에서 실행되는 애플리케이션의 상태가 화면에 계속 표시된다. 이 상태에서 빠져 나오려고 ctrl+c 를 누르면 애플리케이션뿐만 아니라 컨테이너도 함께 중단된다. 따라서 계속 작동해야하는 서버나 데이터베이스 같은 프로그램은 -d 옵션을 붙여 백그라운드에서 작동하게 된다. —restart always 컨테이너의 재시작과 .. 도커 컨테이너 이미지 도커 이미지를 내려받아 컨테이너로 실행하고 도커 이미지와 컨테이너를 삭제하는 법 이미지 찾기 > 실행하기 > 디렉터리와 연결하기 > 삭제하기 먼저 컨테이너 이미지와 컨테이너의 관계를 정리해보자. 컨테이너 이미지는 베이그런트 이미지와 유사하다. 베이그런트 이미지는 이미지 자체로는 사용할 수 없고 베이그런트를 실행할 때 추가해야만 사용할 수 있다. 이와 마찬가지로 컨테이너 이미지도 그대로는 사용할 수 없고 도커와 같은 CRI로 불러들어야 컨테이너가 실제로 작동한다. 이는 실행파일과 실행된 파일 관계로 볼 수 있다. 따라서 컨테이너를 삭제할 때는 내려받은 이미지와 이미 실행된 컨테이너를 모두 삭제해야만 디스크의 용량을 온전히 확보할 수 있다. 컨테이너 런타임 인터페이스(CRI)는 클러스터 컴포넌트를 다시 컴파.. 파드, 컨테이너, 도커, 쿠버네티스의 관계 쿠버네티스를 말할 때 도커를 자주 이야기하곤 한다. 쿠버네티스를 이루는 기본 오브젝트가 파드이고, 파드는 컨테이너로 이루어져 있으며, 컨테이너를 만들고 관리하는 도구가 도터이기 때문이다. 최근에는 도커를 몰라도 쿠버네티스를 배우고 사용하는것이 가능해졌다. 여러 공급사에서 만들어 둔 컨테이너 이미지로 쿠버네티스에 컨테이너 인프라 서비스를 만들수 있다는 뜻이다. 컨테이너 관리 기술이 발전했고, 여러 어플리케이션이 이미 도커 이미지로 배포되어 배포된 이미지를 사용하면 도커를 몰라도 쿠버네티스 환경을 만들고 사용할 수 있다. 하지만 쿠버네티스를 이루고 있는 기술 자체는 컨테이너를 벗어날 수 없다. 상황에 따라서는 직접 만든 소스코드를 빌드해 컨테이너로 만들고 이를 쿠버네티스에서도 사용할 수도 있다. 지속적인 통.. 쿠버네티스 Node IP 설정 쿠버네티스 Node IP 설정 현재 INTERNAL-IP가 설정되어 있지 않다. # conf 파일 수정 $ sudo vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS --node-ip 192.168.56.11 # 시스템 재시작 $ sudo systemctl daemon-reload && sudo systemctl restart kubelet control-plane 및 각 node에서 /etc/systemd/system/kubelet.service.d.. 스펙을 지정해 오브젝트 생성하기(.yaml) kubectl create deployment 명령으로 디플로이먼트를 생성했지만 한개의 파드만 만들어졌다. 디플로이먼트를 생성하면서 한꺼번에 여러개의 파드를 만들 순 없을까? create 에서는 replicas 옵션을 사용할 수 없고, scale은 이미 만들어진 디플로이먼트에서만 사용할 수 있다. 이런 설정을 적용하려면 필요한 내용을 파일로 작성해야한다. 이때 작성하는 파일을 오브젝트 스펙이라고 한다. 오브젝트 스펙은 일반적으로 야믈 문법으로 작성한다. 3개의 nginx파드를 디플로이먼트 오브젝트로 만들어보자. 명령어로는 3개의 파드를 가진 디플로이먼트를 만들 수 없으므로 오브젝트 스펙을 작성해 디플로이먼트를 만든다. 스펙을 지정해 오브젝트 생성하기 # echo.yaml apiVersion: apps/v.. 이전 1 ··· 3 4 5 6 7 다음