목록개발 도서 (87)
진취적 삶
쿠버네티스의 네트워크를 담당하는 Service 리소스에 대해서 알아보자. Service 리소스는 Pod IP 와는 또 다른 독자적인 IP를 부여받아 서비스의 끝점을 제공하여 라벨링 시스템을 통해 Pod로 부터 트래픽을 전달한다. 6.1 Service 소개 k8s 는 Pod 자체에도 IP가 부여된다. 6.1.1 불안정한 Pod vs 안정적인 service k8s 에서는 Pod 리소스를 불안정한 자원으로 여긴다. Pod는 쉽게 생성했다가 쉽게 삭제 가능 Pod의 생명주기와는 상관없이 안정적인 서비스 endpoint를 제공하는 service라는 리소스가 등장 리버스 프록시 : 클라이언트 서버 구조에서 서버로 전송되는 요청을 대신 받아 원래의 서버로 전달해주는 대리 서버를 의미한다. 6.1.2 서비스 탐색 my..
5.1 pod 소개 pod는 쿠버네티스의 최소 실행단위 p8s 는 pod를 통해 기본 가상환경을 제공한다. 가상머신의 instance 도커의 컨테이너와 같이 p8s 에서 지원하는 가상환경 실행 단위 5.1.1 Pod 특징 pod는 1개 이상의 컨테이너를 가질수 있다. 동일 노드에 할당 동일한 생명주기 고유의 Pod IP IP 공유 volume 공유 NAT : 여러개의 내부 IP를 1개의 외부 IP 와 연결하는 기술 apiVersion: v1 kind: Pod metadata: labels: run:mynginx name: mynginx spec: containers: - name: mynginx image: nginx restartPolicy: Never apiVersion : 리소스 이름이 동일할 경우..
쿠버네티스 클러스터를 컨트롤하기 위해 kubectl 명령 툴을 사용한다. 사용자가 직접 HTTP 프로토콜로 API 서버와 통신할수도 있지만 쿠버네티스에서는 쉽게 마스터와 통신 할수 있게 해주는 클라이언트 툴인 kubectl 을 제공한다. 4.1 기본명령 4.1.1 컨테이너 실행 kubectl run --image 4.1.2 컨테이너 조회 kubectl get pod STATUS 상태 Pending : 쿠버네티스 마스터에 생성 명령은 전달되었지만 아직 실행되지 않은 상태 ContainerCreating : 특정 노드에 스케줄링되어 컨테이너를 생성 중인 단계 Running : Pod 가 정상적으로 실행되고 있는 상태 Completed: 계속 실행되고 있는 프로세스가 아닌 한번 실행하고 완료되는 배치 작업 p..
3.1 k3s 설치가 쉽고 가벼워서 선택 3.2 MobaXterm putty 대신 사용 아주 좋음 3.2.2 마스터 노드 설치 sudo apt update sudo apt install -y docker.io nfs-common dnsutils curl #k3s 마스터 설치 curl -sfL | INSTALL_K3S_EXEC="\\ --disable traefik \\ --disable metrics-server \\ --node-name master --docker" \\ INSTALL_K3S_VERSION="v1.18.6+k3s1" sh -s - # 마스터 통신을 위한 설정 mkdir ~/.kube sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config sudo cho..
2.1 쿠버네티스란 ? 쿠버네티스는 여러 서버로 구성된 클러스터 환경에서 컨테이너화된 프로세스를 관리하기 위한 컨테이너 오케스트레이션 플랫폼이다. 컨테이너는 가상 머신과는 다르게 호스트 운영체제를 공유한다. 가상머신에 비해 훨씬 더 가볍지만 가상머신과 마찬가지로 실행환경을 독립적으로 가져갈수 있다. 가볍기 때문에 쉽게 복제하거나 배포할수 있다 . 컨테이너를 여러 서버에 걸쳐 여러 개를 실행시키는데 체계적으로 관리하는 기술을 컨테이너 오케스트레이션 이라고 한다. 쿠버네티스를 통해 컨테이너의 배포 ,확장 및 스케줄링을 자동화 할수 있다. 2.1.1 컨테이너 오케스트레이션이란 ? 컨테이너 오케스트레이션 : 다수의 서버 위에서 컨테이너의 전반적인 라이프 사이클을 관리해주는 플랫폼 실행 및 배포 책임 이중화와 가..
1.1 도커 소개 도커는 가상실행 환경을 제공해주는 오픈소스 플랫폼이다. 도커에서는 가상 실행환경을 컨테이너라고 부른다. 도커의 장점 표준화 : 도커를 사용하면 프로세스의 실행을 표준화 시킬수 있다. 이식성: 프로그램이 어디서 어떻게 만들어졌는지 상관없이 도커 플랫폼 위에서 실행된다면 동일한 실행 환경으로 프로세스를 작동시킬수 있다. 가볍다: 도커는 실행되는 애플리케이션별로 커널을 공유해서 ,다른 가상화 제품에 비해 가볍다. 강한 보안: 컨테이너라는 고립된 환경에서 실행되므로 보안측명에서 유리 1.1.1 컨테이너와 가상머신 도커는 프로세스의 실행 환경을 가상화한다. 컨테이너와 가상머신은 리소스를 가상화하고 고립화 시키는 측면에서는 동일 가상머신은 기존의 서버에 하이퍼바이저를 설치하고, 그위에 가상 OS와..
배포 준비 도커를 사용한 배포 도커 이미지 배포 9.1 배포 준비 의존 라이브러리 관리 pip freeeze 9.2 도커를 사용한 배포 도커는 컨테이너화에 사용되는 인기있는 기술 , 컨테이너는 패키지, 코드 ,의존 라이브러리로 구성된 하나의 시스템으로 실행 환경에 의존하지 않는다. 도커는 로컬 개발 환경 뿐만 아니라 프로덕션 애플리케이션을 배포할때도 사용한다. 도커파일 작성 도커 파일은 도커 이미지를 빌드하기 위한 몇가지 명령 셋으로 구성된다. 빌드된 도커 이미지는 개인 또는 공개 레지스트리에 등록된후 aws나 구글 클라우드 같은 클라우드 서버에 배포된다. DockerFile FROM python:3.11 WORKDIR /app COPY requirements.txt /app/requirements.tx..
테스트는 애플리케이션이 정상적으로 실행되도록 보장하고 프로덕션에 배포하기 전에 이상 징후를 감지할수 있게 해준다. 8.1 pytest를 사용한 단위 테스트 단위 테스트는 애플리케이션의 개별 컴포넌트를 테스트 하는 절차로 .개별 컴포넌트의 기능을 검증하기 위해 수행된다. pytest를 통해 단위 테스트 수행 테스트 파일을 만들떄는 파일명 앞에 test_ 를 붙여서 해당 파일이 테스트 파일인지 확인시켜준다. 픽스처를 사용한 반복 제거 픽스처는 재사용할 수 있는 함수로, 테스트 함수에 필요한 데이터를 반환하기 위해 정의된다. pytest.fixture 데코레이션을 사용해 픽스처를 정의할수 있다. fixture 의 인수의 경우 module 과 session이 있다. module : 테스트 파일이 실행된 후 특정..