본문 바로가기

자바 , 기타 공부/클라우드 공부15

yaml 파일 연습 1. container apiVersion: apps/v1 kind: Deployment metadata: labels: app: redis name: redis spec: replicas: 1 selector: matchLabels: app: redis template: metadata: labels: app: redis spec: containers: - image: redis:alpine name: redis ports: - containerPort: 6379 name: redis volumeMounts: - mountPath: /data name: redis-data volumes: - name: redis-data emptyDir: {} 1. apiVersion은, v1, apps/v1 2. k.. 2024. 2. 21.
KOPS Kops는, master node까지 관리해야 함을 기억하자. (kubernetes cluster를 생성하고 설계하는 역할을 담당한다.) KOPS를 LOCAL에 설치하여, EC2를 통해 MASTER, WORKER NODE를 설정한다. Instance의 type(ssh,tls등) port numb. 등을 설정할 수 있다. (public IP를 제공한다) SSH(보안 protocol)-> 제공하는 pem(키)를 local에 저장하고, 키쌍을 생성하면 제공하는 instance의 ip IAMFull,VPCFull 등 instance의 filter를 관리해주어야 한다. 이후 Instance의 사용자를 추가해준다. 이때 발급받은 Accesskey와 Secret Accesskeyid(이는 잘 보호해야 한다) aws .. 2024. 2. 7.
AWS *주의, aws의 과금 기준은 시간으로써, 틀어놓으면 금액이 발생한다. aws실습을 진행한 이후에는 즉시 클러스터를 삭제해주는 것이 중요하다. 시스템을 실제로 배포해볼 것이다. (EC2, 로드밸런스 등을 생성하지 않을 것이다.) (금액 문제로 인하여, 강의 내용만 보겠다) Minikube는, 소규모 프로젝트에만 가능한 로컬 Node는, 우리 시스템에 있는 서버가 된다 .minikube는 1개의 node를 담당. EC2가 AWS의 서버 기준이 된다. Master node에서 -> 각 node 중 어떤 node에 전달할지 결정하는 구조가 기본구조이다. 하지만 k8s에서는 어떤 노드의 어떤 포드가 실행될지를 자동 설정해주었었다. (그래서 해당 진행을 할 필요가 없었다. (minikube가 1node 기준이라 .. 2024. 2. 6.
퍼시스턴트 앞서 모두 완성했던 버전이, release2로 변경되었다. (내용은, 차량의 위치와 경로 파악) 해당 방법은, 간단하게 img의 release를 2로 변경하면 된다. 차랑의 위치와 경로 정보는, msa구조의 pod 내부의 application 메모리 내부에 저장된다. *이 방식은 문제가 발생한다. 모든 정보를 application 내부 메모리에 저장하기 때문에 메모리 부족이 반드시 발생한다. *Node가 충돌할 수 있음에 주의하자. 차량의 이동기록을 저장하고, 이동 경로를 계산하는 역할을 가진 '위치 추적 ' ms가 2개의 역할을 하기 때문에 문제가 발생한다. 기록을 저장하는 micro service를 별도로 생성해야 한다. 현재까지의 목표로 , 위치추적 MS가 확인할 수 있는 DB를 확인해야한다. (오.. 2024. 2. 6.
마이크로서비스(MSA) 네트워킹 모노리스 : 마이크로서비스 아키텍처 이전 아키텍처를 모노리스라고 한다. 기존엔 WAR파일 하나로 묶여, 배포 되었다. (WAR 파일 1개 내부에 모든 기능을 다 담는다) (또한 DB는 1개의 통합 스키마로 구성) - 이러한 DB를 INTERGRATION DB라고 한다. 이러한 모노리스 구성은, 기능의 변경과 수정 등 과정이 번거롭다. 마이크로서비스 : 독립적인 요소들의 원할때 상호작용(각자가 독립적으로 존재함이 포인트이다) 주로 UML로 DIAGRAM을 표현하는 것이 좋다. 1개의 마이크로서비스는 독립적인 CONTAINER에 배포될 것이다. 교류를 진행하기 때문에 INTERFACE와 , 둘을 지나는 메세지 등이 있다. 이 통신 구조상, REST를 주로 사용한다. (Netflix가 MSA구조의 예시가 된다.. 2024. 2. 5.
쿠버네티스 네트워킹 1. 컨테이너를 Networking 하기 ex) application을 배포한, container를 생성했다. 이때 해당 application이 db에 crud를 진행한다. Container1엔 application을 2에는 db를 작성하고, pod로 이 container 두개를 관리한다 . *이 방식은, 동일 pod에서 db와 application을 동작시키면 문제 식별이 어렵다. 주로, application을 1개의 container,pod,service로, db또한 1개의 container,pod,service로 분할한다. Service의 ip주소를 확인하기는 쉽지 않다. 그 이유는 , 쿠버네티스는 kube-dns service를 자체 운용, 자동 실행하기 때문이다. service이름:ip주소의 k.. 2024. 2. 4.
레플리카 실제 제작에선 , POD를 직접적으로 사용하기보단 1. 레플리카를 사용하거나 2. 배포 방식을 활용한다. 그 중, 레플리카 방식을 활용해보자 POD는 NODE가 실패하면 POD가 같이 종료된다. 또한 CPU가 부족해도 POD가 종료될 수 있다. 즉 여태까지 했던 것처럼 YAML에 POD를 정의하고 KUBECTL APPLY를 진행하면, 포드가 사망하면 돌리기가 힘들다. 이러한 예시를 생각해보자 EX) POD의 실행이 어떠한 이유로 종료되었다. 그렇다면 현재 SERVICE는 남아있지만, POD는 동작이 멈추었기 때문에 웹사이트는 동작하지 않는다. 그러므로 주로 POD를 그대로 배포하기보단 레플리카 SET를 배포한다. 레플리카 세트는 , K8S의 추가 구성에서 코어 기능으로 진화했다. 포드 실행시 레플리카 몇.. 2024. 2. 4.
배포 실습/ 쿠버네티스를 활용한 배포 DockerHub에서 img파일을 가져와서 , 이를 다시 배포하는 실습을 진행하자. 방금 전 받아왔던 release 0에 대해 queue를 추가하는 내용을 실습해보자. 1. POD 정보 추가 한 YAML파일에 정리한 이유는, 이 POD 들이 같은 K8S 클러스터에서 작동됨을 표현하기 위해서이다. 2. SERVICE 작성 동일하며, nodePort만 변경하였다. kubectl apply -f . 로 모든 yaml파일을 적용시켰으며, 잘 동작한다. 현재 30010으로 localhost로 접근하면 불가능해서, 자체적으로 포트포워딩을해서 동작시키고 있다. 해당 문제가 service를 사용하고는 있지만 내부 port 포워딩 까진 되지 않으므로.. 고민이 필요하다. 포트포워딩을 하지 않아도 원래의 service의 .. 2024. 2. 4.
Docker, Docker를 활용해 상대방의 image를 보고 container를 생성 Docker는 컨테이너 형성에 도움을 주는 것임을 기억하자. 컨테이너는 linux 전체를 포함한다. ubuntu,application등을 포함한다. 남이 처음 생성한 application은, 내 컴퓨터에서 바로 작동되지 않는 경우가 많다. 해당 application의 서버가 내 컴퓨터에 설치 되어 있지 않거나, tomcat과 같은 것이 설치되어 있지 않을 경우가 있다. 또, python의 버전이 다를 수도 있다. (이전, 동기형에게 mysql server를 설치하지 않아도 된다.. 라는 의미를 물어봤을때 너가 application을 만들고 이를 배포하였는데, 사용하는 사람이 mysql이 깔려있지 않다면 해당 mysql이 없기때문에 동작하지 않을 것이다 라고 얘기했던 내용을 기억하자) 이때 containe.. 2024. 2. 3.
K8S (쿠버네티스란?) 사람들이 docker가 무엇이냐고 물어보면? 가장 유명한 컨테이너화 시스템이라고 설명하면 간단하다. docker container로 application을 관리할 수 있다. 허나, 수많은 docker container들을 관리해야할 필요 또한 있을 것이다. 이 관리는, 단순히 관리 정리 뿐만 아니라 자동화 개념을 포함한다. AWS를 사용한다는 의미가 KUBERNETES도 사용하지 않고 그냥 AWS 그 자체로 컨테이너 관리 등 모든 것을 진행함이 아님에 주의하자. 구글 클라우드, 혹은 애저 등 다양한 클라우드 환경에서 동작할 수 있음에 주의하자. DOCKER 내부에도 이러한 관리 프로그램인 DOCKER SWARM이 존재한다. SWARM은 K8S보다 작업이 간단하다. 허나 K8S로 할 수 있는 것이 더욱 많.. 2024. 2. 3.