본문 바로가기

Programming

(111)
DAY 180. 애플리케이션 배포 설정 스케줄링 컨테이너를 새롭게 생성할 때 어느 서버에 생성할 것인지 결정하는 것 컨테이너를 생성하기 전에 특정 목적에 부합하는 Node를 선택하는 작업 여러 개의 Node를 사용하는 경우 해당된다. nodeSelector Node의 Label을 이용해서 선택하는 방법 모든 Node에는 기본적으로 설정되어 있는 라벨이 있고 이를 이용해서 Node를 특징 별로 분류해서 선택할 수 있다. 필요한 경우 추가할 수 있다. yaml파일에 작성할 때는 사용할 Node의 기준이 되는 라벨을 지정하면 된다. kubectl get nodes --show-labels ▶ Node Label 삭제 Label 뒤에 -(대시)를 입력하면 삭제됨 kubectl label nodes Node이름 삭제할Label명- 컨트롤러 클러스터의 ..
DAY 179. 쿠버네티스(Kubernetes) - HPA 더보기 [시작하기에 앞서] 웹 서버가 감당할 수 없는만큼 사용자 양이 크게 늘어났을 경우 처리 방법 1. Scale-up : 서버 자체 성능을 향상 시킨다. - 서버를 더 많은 숫자의 사용자를 감당할 수 있도록 스케일 업 한다. - 그러나 하드웨어에는 물리적으로 한계가 있다. 2. Scale-out : 동일한 서버를 여러 개를 운영한다. - 2대 이상 증설하여 서버를 운영하는 것을 스케일 아웃 이라고 한다. - 사용자들이 보내는 요청, 즉 트래픽을 균일하게 분배해주는 로드 밸런서가 필요하다. ▷ 로드 밸런싱 : 로드 밸런서가 모든 요청을 받아서 적절히 서버에 분배해주는 부하분산 역할을 하는 것이 서비스 객체이다. ▷ ReplicaSet : 서버의 갯수가 일정히 유지되도록 한다. 서비스가 운영되면서 사용자..
Day 178. 쿠버네티스(Kubernetes) - Service Object Service Pod 집합에서 실행 중이 애플리케이션을 네트워크 서비스로 노출하는 추상적인 방법 Pods에 접근하기 위한 규칙을 정의 하나의 애플리케이션에 하나의 Pod만 사용하지 않고 Pod의 집합을 사용하는 경우 각 Pod는 고유의 IP 주소를 가지기 때문에 접근이 까다롭다. Deployment를 사용하는 경우 Pod는 동적으로 생성/소멸 될 수 있기 때문에 배포 중 동작되는 Pod의 IP 주소는 변경될 수 있다. 더보기 도커는 -p 옵션을 통해서 사용하는 호스트의 포트를 통해서 컨테이너의 포트로 포트 포워딩 시켜서 포트를 노출 시켰었다. -> 컨테이너 1개를 직접 노출했다. 쿠버네티스에서는 그렇게 할 수 없다. 그래서 Pod의 IP를 직접 확인하고, Pod를 하나 더 만들어서 내부에서 IP로만 직접..
Day 177. 쿠버네티스(Kubernetes) - Deployment 사용 Deployment ReplicaSet과 Pod의 배포 관리, 선언적 업데이트를 제공한다. ReplicaSet의 상위 오브젝트이다. 쿠버네티스에서 공식적으로 Deployment를 사용해서 애플리케이션 배포를 권장한다. 더보기 - Pod의 개수를 유동적으로 조절할 수 있다. 하지만, 코드를 수정하고 배포했는데 코드가 잘못된 경우 이전 버전으로 배포해야 하는 경우는 코드를 원래대로 수정하고 이미지로 만들어서 업데이트해야 한다. - 실제로 운영 환경에서는 ReplicSet만 가지고 배포하지 않는다. 대신, Deployment 오브젝트를 정의해서 배포하게 된다. - Deployment를 생성하면 ReplicaSet과 그 안에서 관리하는 Pod도 자동으로 생성이 된다. - Deployment는 애플리케이션의 업데..
DAY 176. 쿠버네티스(Kubenetest) - Replica Set Replica Set 동일한 Pod를 여러 개 만들어 놓고 지정된 개수가 적절하게 유지될 수 있도록 만들어주는 객체이다. 주어진 시간에 실행되는 안정적인 복제 Pod 세트를 유지한다. 지정된 수의 동일한 Pod의 가용성을 보장하는데 사용된다. 실제 실무에서는 하나의 Pod만 가지고 서비스 하지 않는다. 운영 환경에서 Pod만 단독으로 사용하는 경우는 거의 없다. Service 객체가 필요하다. - 스케일 아웃 - 스케일 업 - 로드 밸런서 (cf. 로드 밸런서 (부하 분산) : 네트워크 로드 밸런서, 애플리케이션 로드 밸런서) 더보기 웹 서버가 하나의 Pod라고 생각했을 때, 스케일 아웃으로 증설한 Pod가 3개로 유지되도록 하는게 Replica Set이다. 에러가 발생해서 Pod가 정상적으로 구동되지 ..
DAY 175. 쿠버네티스(Kubernetes) - Yaml 파일 YAML : YAML Ain't Markup Language - 데이터 중심으로 표기하겠다는 문서 타입 - 마크업 언어를 사용하는 것보다 이해하기 쉽고 수월하게 작성할 수 있다. - 설정 값들의 깊이에 따라서 들여쓰기 등을 통해서 계층 구조를 쉽게 파악할 수 있도록 되어 있다. - 여러 개의 값은 - (마이너스) 로 구분한다. - Pod를 만들 때 필요한 설정들을 작성 쿠버네티스 오브젝트 생성하고 관리할 때 명령어보다 Yaml 파일 사용을 권장한다. 개발자가 명령어를 외울 필요가 없다. 공백 두 개로 들여쓰기를 표현한다. (Tab 안됨) 들여쓰기 기준으로 계층적 구조를 가진다 # 기호를 주석으로 사용한다 대소문자를 구분한다. ▶ Pod를 생성할 때, 쿠버네티스에서 Yaml 파일의 기본 구조 apiVers..
DAY 174. 쿠버네티스(Kubernetes) - Pod 사용하기 Pod Kubernetes에서 컨테이너를 만들고 관리할 수 있는 가장 작은 배포 가능 단위 쿠버네티스의 오브젝트 종류 중 하나 컨테이너를 실행하기 위한 환경 1개의 포드는 1개 이상의 컨테이너가 존재할 수 있다. 일반적으로 1개의 컨테이너를 생성해서 사용한다. - 쿠버네티스에서는 하나의 애플리케이션을 배포하기 위한 가장 작은 단위를 Pod라고 부른다. - Pod는 하나의 애플리케이션을 나타내기 위한 컨테이너 그룹이다. - Pod 하나는 하나의 완전한 애플리케이션이라고 생각하면 된다. - 하나의 Pod 안에는 하나의 컨테이너, 혹은 여러 개의 컨테이너가 존재할 수 있다. - 하나의 애플리케이션을 여러 개의 컨테이너가 필요하다면 추상적으로 하나의 단위로 컨테이너를 묶는 것을 Pod라고 한다. - Pod !=..
DAY 173. 쿠버네티스(Kubernetes) 설치 쿠버네티스 설치 사용 환경과 목적에 따라 설치 방법이 다양하고 복잡하다. 어떤 용도로 어떤 환경에서 사용할 것인지 먼저 선택한 뒤 설치한다. 쿠버네티스가 도커 컨테이너를 효율적으로 관리한다. (쿠버네티스는 도커 안에 내장되어있는 것이 아니다.) 클라우드 환경에서도 사용할 수 있도록 서비스를 제공한다. ▶ 용도에 따른 분류 용도 설치 프로그램 개발 용도 Minikube Docker Desktop 내장 쿠버네티스 서비스 테스트 및 운영 용도 Kops Kubespray Kubeadm EKS, GKE 등 환경 설치 프로그램 자체 서버 환경 on-premise 환경(SW나 솔루션 등을 회사에서 직접 서버실을 만들고 자체적으로 서버 환경을 구축한 것) 자체적으로 구축한 서버에 쿠버네티스를 설치하여 사용하는 환경 모..