반응형

Orchestration/Kubernates (k8s) 11

[Mac Os] Prometheus 모니터링 시스템 (Prometheus 설치, Grafana 설치 )

Prometheus 란? 1. 오픈소스 모니터링 / 알림 시스템 2. 다양한 지표(metric) 수집 및 저장 => 이를 기반으로한 경고 알림 (alerting) 및 대시보드 작성 지원함 3. 쿠버네티스, 노드, 프로메테우스 자체를 모니터링 할 수 있음 4. 유연성과 확장성이 높아 대규모 시스템에서도 사용할 수 있음 Prometheus 구성 요소 1. 프로메테우스는 시계열 (time series) 데이터를 저장함 2. 프로메테우스 서버는 다양한 export로 부터 각 대상의 메트릭을 pull하여 주기적으로 가져오는 모니터링 시스템 => 쿠버네티스 관련 메트릭 가져오기 - exporter => mongoDB 관련 메트릭 가져오기 - mongoDB exporter 3. Alert manager는 경고 및 알..

K8s 클러스터 모니터링

클러스터 환경에서의 문제 해결의 어려움 - 노드가 사용하는 리소스 확인 (CPU / 메모리 리소스 사용량 확인 가능) => % kubectl top - 여러 개의 마이크로서비스가 워크로드로서 실행되고, 클러스터 안에서 서로 연결되어 있는 경우가 대부분 일것 => 이 경우 문제의 원인을 찾아내는 것이 조금 더 복잡합니다. - 각 파드에서 사용하는 리소스에 문제가 발생할 경우 미리 경고를 준다거나, Liveness Probe를 통해 어플리케이션에서 발생하는 응답이 오류로 전달되는 경우 즉시 모니터링 할 수 있다면 좋을 것 클러스터 환경에서의 주요 이슈 쿠버네티스 환경 그 자체 => 제어판(control plane)의 주요 컴포넌트 상태가 비정상적인 경우 노드의 리소스 가용량 (CPU, 메모리 요청에 대한 비..

Kubernetes Controller 종류와 장단점

ReplicationController Deployment Statefulset DaemonSet Job CronJob ReplicationController Pod의 복제본 수를 유지하고 관리하는 컨트롤러 지정된 수의 Pod 본제본을 유지하고, Pod가 삭제되거나 장애가 발생한 경우새로운 Pod를 자동으로 생성한다. 장점 - 쉽게 구성이 가능하며, 안정적이고 예측가능한 작동이 가능하다. 단점 - 업그레이드나 롤백 작업과 같은 변경 사항이 발생할 때 수동으로 처리해야 하는 한계가 있다. Deployment ReplicationController 의 업그레이드된 버전으로, Rolling Update와 같은 전략을 통해 Pod를 업데이트할 수 있다. pod의 롤아웃을 관리하고 여러개의 ReplicationC..

[Mac OS] 인그레스 란? (Ingress 실습, Ingress 필요성, ingress controller)

인그레스 란? - 클러스터 내부의 서비스에 대한 외부 액세스를 제공하는 Kubernetes 오브젝트 임 => 즉, Kubernetes 클러스터 내에서 실행중인 서비스에 대한 외부 HTTP(S) 및 TCP 액세스를 관리함 제공 기능 - 클라우드에서 호스팅되는 어플리케이션을 위한 라우팅, 로드밸렁싱, SSL 종료와 같은 기능을 제공함 ( SSL (Secure Sockets Layer) = 데이터를 안전하게 전송하기 위한 프로토콜) => 일반적으로 인그레스 컨트롤러는 외부에서 들어오는 HTTPS 요청에 대해 SSL 인증서를 제공함 이를 사용해 요청을 수신하여 내부의 HTTP 서비스로 전달함 이때 SSL 인증서의 유효성을 검증하고 요청 전달하기 전 요청을 복호화 함 *** 이로써 클라이언트와 서버 간의 통신은 ..

볼륨 & 스테이트풀셋 (Persistence Volme)

Pod는 Stateless 하다 파드는 일시적이며, 언제나 삭제될 수 있음 파드 그 자체는 Stateless 하며 파드의 교체와 배치를 담당하는 것이 디플로이먼트임 Pod가 사라져도 데이터 남기기 파드 자체에 상태를 남겨야 하는 Stateful App => MYSQL, mongoDB, redis 와 같은 데이터베이스가 있을 수 있음 => 데이터 베이스 어플리케이션이 담긴 파드가 사라질때, 데이터가 같이 사라지면 안됨 Kubernetes 에도 영속적인 (Persistence) 데이터 저장을 위해 볼륨을 연결할 수 있음 Q. 볼륨과 퍼시스턴스 볼륨(Persistence Volume)은 어떤 차이가 있나요? (AWS EC2에도 비슷한 개념이 있습니다. EBS와 인스턴스 스토어 볼륨의 차이점과 연결해서 설명해주..

kubernetes 치트 시트

리소스 YAML 적용 kubectl apply -f 리소스 조회 kubectl get # 목록 조회 kubectl get all # 현재 네임스페이스에서 모든 리소스 조회 kubectl describe # 상세 조회 리소스 삭제 kubectl delete kubectl delete -f 파드 로그 조회 kubectl logs 클러스터 삭제 후 다시 생성 클러스터에 문제가 생겼거나, 초기화하고 처음부터 다시 시작하고 싶을 때 이용합니다. minikube delete # 삭제 minikube start # 다시 생성 참고링크 https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/ kubectl 치트 시트 이 페이지는 일반적으로 사용하는 kubectl 커맨드..

[Mac OS] 파드 외부 노출 시키기 (k8s, kubernetes, pod)

파드 외부로 노출 시키기 - 클러스터 안에 위치한 pod는 고유한 IP를 가지고 있지만, 직접 내부로 접속하는것이 아님 - 파드 서비스를 외부로 노출시키기 위해선 어떻게 해야 하는가? 서비스 리소스를 사용하면 파드에서 실행 중인 애플리케이션을 클러스터 외부에서 접근할 수 있다. 또한 서비스를 사용하여 클러스터 내부에서 사용할 수 있는 서비스만 게시할 수 있다. 쿠버네티스에서 서비스는 파드의 집합에 접근할 수 있는 정책을 정의하는 추상적 개념입니다. 서비스 리소스가 정의된 YAML 파일에 selector라는 것을 이용해 서비스할 대상 타겟을 설정할 수 있습니다. 파드 외부 노출 참고 링크 https://kubernetes.io/ko/docs/concepts/services-networking/ 서비스, 로..

[Mac OS] Deployment 란? (디플로이먼트, Deployment)

Deployment (디플로이먼트) 파드를 업데이트 하기 위한 선언적 명세 Deployment 리소스를 통한 설정 가능한 기능 - 레플리카셋, 즉 복제본 구성을 이용하여 파드를 원하는 개수만큼 실행시킬 수 있음 - Control Plane 을 이용하여 파드를 업데이트 할 수 있음 - 파드를 롤백할 수 있음 *복습* 다양한 배포 전략 어플리케이션 복제본에 대한 새버전 업데이트 배포 전략 1. 재생성 (Recreate) : 이전 버전을 삭제하고 새 버전 생성 2. 블루/그린 배포 : 한번에 이전 버전에서 새 버전으로 연결을 전환 3. 롤링 배포 : 이전 버전을 Scale down 하고, 새 버전을 Scale up 하는 방식으로 단계별로 교체 (롤아웃 이라고도 함) 4. 카나리 배포 : 새 버전이 잘 작동한닫..

[Mac OS] 파드 란?(Pods, k8s, kubernetes)

파드란? 파드 (pods)는 쿠버네티스의 배포 가능한 가장 작은 컴퓨팅 유닛 하나의 논리적인 호스트 ** 파드의 포함 요소 (도커 컨테이너 처럼 파드 내에서 다음 요소들은 격리 됨) 1. 하나 이상의 어플리케이션 컨테이너 2. IP 주소 3. 볼륨과 같은 공유 스토리지 워크로드란? 쿠버네티스에서는 "쿠버네티스 상에서 작동되는 어플리케이션"을 의미함 클라우드 분야에서는 "어떤 어플리케이션을 실행할 대 필요한 IT 리소스의 집합"을 의미함 - YAML 파일 생성 및 파드 생성 (simple-pod.yaml) apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - conta..

[Mac OS] 쿠버네티스 설치 (minikube 설치, minikube 실습, cozserver)

minikube 란? - 쿠버네티스 로컬환경 실행을 위한 쿠버네티스 로컬 클러스터 환경 minikube 설치 참고 링크 https://minikube.sigs.k8s.io/docs/start/ minikube start minikube is local Kubernetes minikube.sigs.k8s.io **** 이미지 기반의 디플로이먼트 생성 및 배포 실습 ( cozserver:1.0 ) 1. minikube 설치 - 필자는 macOS M1 환경에서 설치를 진행하므로 아래 스펙으로 설치 % brew install minikube // minikube 설치 2. cluster 시작 % minikube start // 관리자 액세스 권한이 있는 터미널에서 실행 - doker가 실행중이여야함 => ope..

쿠버네티스란? (kubernetes 란, k8s 란, 컨테이너 오케스트레이션)

쿠버네티스란? (kubernetes, k8s) - 오픈소스로 만들어진 컨테이너 오케스트레이션 도구 => 컨테이너 오케스트레이션 도구 : 수십~수백 개의 컨테이너를 잘 관리하기 위한 툴 - 컨테이너화된 어플리케이션을 자동으로 배포, 스케일링 하는 등의 관리 기능 제공 => 각기 다른 환경 (온프레미스 서버, VM, 클라우드)에 대응 가능 컨테이너가 늘어나게 되는 이유 ? - 아키텍처가 모놀리식에서 마이크로 서비스로 바뀜 - 확장성을 고려한 스케일링 까지 더 할 경우에도 컨테이너 증가 쿠버네티스를 사용하지 말아야 하는 경우 ? 여러 단계 (Tier)로 나뉘어지지않은 모놀리식 아키텍처 => 모놀리식 아키텍처는 마이크로 서비스 분해 전략을 세우는 것이 우선 적은 수의 컨테이너 컨트롤 시 => docker-com..

반응형