인프라9 쿠버네티스(Kubernetes) PVC(Persistent Volume Claim)란? 쿠버네티스 PVC( Persistent Volume Claim)란? PVC는 stateless한 Pod이 영구적으로 데이터를 보존하고 싶은 경우 사용하는 리소스이다. 도커의 볼륨과 유사한 역할을 한다. PV는 관리자가 생성한 실제 저장 공간의 정보를 담고 있고, PVC는 사용자가 요청한 저장 공간의 스펙에 대한 정보를 담고 있는 리소스이다. 즉, Pod 내부에서 작성한 데이터는 기본적으로 언제든지 사라질 수 있기에 보존하고 싶은 데이터가 있다면 Pod에 PVC를 mount해서 사용해야 한다. PVC를 실습해보자. 1. YAML 파일 생성 (pvc.yaml, pod-pvc.yaml) vi pvc.yaml pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metad.. 2024. 1. 12. 쿠버네티스(Kubernetes) 서비스란? 쿠버네티스 서비스란? 만들어진 Pod끼리 통신하기 위해서는 서비스가 필요하다. 서비스는 쿠버네티스에 배포한 애플리케이션(Pod)을 접근하기 쉽게 추상화한 리소스이다. Service를 실습해보자. 1. YAML 파일 생성 vi service.yaml service.yaml apiVersion: v1 kind: Service metadata: name: my-nginx labels: run: my-nginx spec: type: NodePort # Service 의 Type 을 명시하는 부분입니다. 자세한 설명은 추후 말씀드리겠습니다. ports: - port: 80 protocol: TCP selector: # 아래 label 을 가진 Pod 을 매핑하는 부분입니다. app: nginx 2. 적용 및 조회.. 2024. 1. 12. 쿠버네티스(Kubernetes) Deployment란? 쿠버네티스 Deployment란? Deployment란 Pod와 Relicaset에 대한 관리를 제공하는 단위이다. Deployment는 Pod를 감싼 개념이라 생각할 수 있다. Deployment 실습해보자. 1. YAML 파일 생성 vi deploy.yaml deploy.yaml (파드 3개 생성) apiVersion: apps/v1 # kubernetes resource 의 API Version kind: Deployment # kubernetes resource name metadata: # 메타데이터 : name, namespace, labels, annotations 등을 포함 name: nginx-deployment labels: app: nginx spec: # 메인 파트 : resourc.. 2024. 1. 12. 쿠버네티스(Kubernetes) 포트포워딩(PortForward), YAML/POD란? 생성 조회 및 삭제 먼저 포트포워딩부터 해보자. window powershell에서 실행한다. 1. 가상머신 실행 ssh Azure아이디@할당받은IP주소 2. 설치 curl -LO https://storage.googleapis.com/minikube/releases/v1.22.0/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube minikube --help curl -LO https://dl.k8s.io/release/v1.22.1/bin/linux/amd64/kubectl sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl 1) 버전 확인해보기 minikube .. 2024. 1. 12. 쿠버네티스(Kubernetes, k8s)란? 등장배경, 도커, 컨테이너와의 관계 쿠버네티스(Kubernetes, k8s)란? 컨테이너 오케스트레이션을 위한 솔루션으로, 다수의 컨테이너를 관리하는데 사용된다. 오케스트레이션이란 여러 서버에 걸친 컨테이너 및 사용하는 환경 설정을 관리하는 행위이다. 쿠버네티스 등장배경 쿠버네티스의 탄생배경을 알기 위해서는 가상화 환경과 컨테이너 환경의 차이부터 알아야 한다. 우선 컨테이너 인프라 환경은 리눅스 운영 체제의 커널 하나에서 여러 개의 컨테이너가 격리된 상태로 실행되는 인프라 환경을 말한다. 다수의 관리자가 수백 또는 수천 대의 서버를 함께 관리하는 기업 환경에서 일관성을 유지하는 것이 중요하기 때문에 컨테이너 인프라 환경이 효과적인 것이다. 또한 가상화 환경에서는 각각의 가상 머신이 모두 독립적인 운영 체제 커널을 가지고 있어야 하기 때문에.. 2024. 1. 12. [Docker] Azure 가상머신에서 Flask 접속해보기 2 이제 도커 허브에서 pull 한 후, 접속 테스트를 해보자. 먼저 포트 5000번으로 열어줄거기 때문에 인바운드 규칙을 추가해주어야 한다. 1. Azure 네트워크 설정에서 인바운드 규칙 설정 포트 규칙 만들기를 통해 다음과 같이 flask 5000 규칙을 만들어주었다. 2. docker hub에서 pull 하기 docker pull erica00j/github-actions-app:v1.0.0.0 3. 실행 docker run -p 5000:5000 --name demo6 erica00j/github-actions-app:v1.0.0.0 이제 할당받은 공용 IP주소:5000으로 접속해보자. 다음과 같이 나타나면 성공적으로 실행된 것이다. 여기서 의문점! 127.0.X, 172.17.X 등의 주소에서는 .. 2024. 1. 12. [Docker] Azure 가상머신에서 Flask 접속해보기 1 Microsoft Azure는 GCP, AWS 등과 같은 퍼블릭 클라우드 플랫폼이다. 우선 Azure에 접속하여 가상머신을 만들어주고, 공용 IP 주소를 할당받는다. 1. window powershell에서 실행해보자. ssh AZURE아이디@공용IP주소 2. 비밀번호를 입력하고 도커를 설치해보자. 1) 패키지 매니저 업데이트 후 설치 sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release 2) Docker의 GPG key 추가 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/sh.. 2024. 1. 12. [Docker] Docker에 Flask App 배포해보기 지난번 포스팅한 Docker 동작 흐름대로 이번에는 Flask App을 직접 배포해보겠다. app.py, Dockerfile, requirements.txt 등과 함께 깃헙에 올려두었다. https://github.com/erica00j/flask GitHub - erica00j/flask Contribute to erica00j/flask development by creating an account on GitHub. github.com 1. Dockerfile을 사용하여 도커 이미지 빌드 (이미지 및 태그 변경 필요) docker build -t github-actions-app:v1.0.0 . 2. 이미지를 Docker Hub(Docker Registry)에 푸시 (이미지 및 태그 변경 필요) d.. 2024. 1. 11. [Docker] 도커 컨테이너(Docker Container)와 이미지란? 도커(Docker)란? 도커는 개발자가 컨테이너화된 애플리케이션을 빠르게 빌드, 테스트 및 배포할 수 있게 해주는 소프트웨어 플랫폼이다. 도커 컨테이너 컨테이너를 사용하면 개발자가 소프트웨어를 패키징하여 모든 대상 시스템에서 실행할 수 있다. 쉽게 말해서, 컨테이너는 이미지를 실행한 상태를 말한다. 도커 컨테이너는 도커 엔진이 설치된 모든 머신 또는 가상 머신에서 실행된다. 도커 이미지 도커 이미지는 소스 코드, 라이브러리, 도구 및 응용 프로그램을 실행하는데 필요한 기타 파일을 포함하는 실행 파일이다. 하나의 베이스 이미지에서 도커 이미지를 무제한으로 생성할 수 있다. 또한 하나의 이미지는 여러 컨테이너를 생성할 수 있고, 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아 있는다. 도커의 동작 .. 2024. 1. 11. 이전 1 다음