728x90 2021/0192 [데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 데몬셋 데몬셋, 노드당 포드 하나씩 데몬셋 레플리케이션컨트롤러와 레플리카셋은 무작위 노드에 포드를 생성 데몬셋은 각 하나의 노드에 하나의 포드만을 구성 kube-proxy가 데몬셋으로 만든 쿠버네티스에서 기본적으로 활동중인 포드 데몬셋 예제 https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#writing-a-daemonset-spec kubectl apply -f https://k8s.io/examples/controllers/daemonset.yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: fluentd-elasticsearch namespace: kube-system labels: .. 개발강의정리/DevOps 2021. 1. 19. [데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 시스템 리소스 요구사항과 제한 설정 시스템 리소스 요구사항과 제한 설정 컨테이너에서 리소스 요구사항 CPU와 메모리는 집합적으로 컴퓨팅 리소스 또는 리소스로 부름 CPU 및 메모리 는 각각 자원 유형을 지니며 자원 유형에는 기본 단위를 사용 리소스 요청 설정 방법 spec.containers[].resources.requests.cpu spec.containers[].resources.requests.memory 리소스 제한 설정 방법 spec.containers[].resources.limits.cpu spec.containers[].resources.limits.memory CPU는 코어 단위로 지정되며 메모리는 바이트 단위로 지정 자원 유형 단위 CPU m(millicpu) Memory Ti, Gi, Mi, Ki, T, G, M, K.. 개발강의정리/DevOps 2021. 1. 19. [데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - Init 컨테이너 Init 컨테이너 init 컨테이너의 특징 포드 컨테이너 실행 전에 초기화 역할을 하는 컨테이너 완전히 초기화가 진행된 다음에야 주 컨테이너를 실행 Init 컨테이너가 실패하면, 성공할때까지 포드를 반복해서 재시작 restartPolicy에 Never를 하면 재시작하지 않음 이 yaml은 mydb와 myservice가 탐지될 때까지 init 컨테이너가 멈추지 않고 돌아감 https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#init-containers-in-use pod-init-container.yaml apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp spec.. 개발강의정리/DevOps 2021. 1. 19. [데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 한 포드에 멀티 컨테이너 한 포드에 멀티 컨테이너 하나의 포드에 다수의 컨테이너를 사용 하나의 포드를 사용하는 경우 같은 네트워크 인터페이스와 IPC, 볼륨 등을 공유 이 포드는 효율적으로 통신하여 데이터의 지역성을 보장하고 여러 개의 응용프로그램이 결합된 형태로 하나의 포드를 구성할 수 있음 $ kubectl exec -it two-containers -- cat /usr/share/nginx/html/index.html Defaulting container name to nginx- container. Use 'kubectl describe pod/two-containers - n default' to see all of the containers in this pod. Hello from the debian containe.. 개발강의정리/DevOps 2021. 1. 19. [데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 초기 명령어 및 아규먼트 전달과 실행 초기 명령어 및 아규먼트 전달과 실행 초기 실행시 명령어와 아규먼트를 전달 Pod을 생성할 때 spec.containers.command와 args에 실행하기 원하는 인자를 전달하면 컨테이너가 부팅된 뒤 실행 https://kubernetes.io/ko/docs/tasks/inject-data-application/define-command-argument-container/#%ED%8C%8C%EB%93%9C%EB%A5%BC-%EC%83%9D%EC%84%B1%ED%95%A0-%EB%95%8C-%EC%BB%A4%EB%A7%A8%EB%93%9C%EC%99%80-%EC%9D%B8%EC%9E%90%EB%A5%BC-%EC%A0%95%EC%9D%98%ED%95%98%EA%B8%B0 pod-command-args.y.. 개발강의정리/DevOps 2021. 1. 19. [데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 애플리케이션 변수 관리 애플리케이션 변수 관리 도커 컨테이너의 환경 설정 쿠버네티스의 환경 변수는 YAML 파일이나 다른 리소스로 전달 하드 코딩된 환경 변수는 여러 환경에 데이터를 정의하거나 유지, 관리가 어려움 ConfigMap은 외부에 컨테이너 설정을 저장할 수 있음 환경변수를 포드에 저장하는 방법 https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/#define-an-environment-variable-for-a-container envars.yaml apiVersion: v1 kind: Pod metadata: name: envar-demo labels: purpose: demonstrate-enva.. 개발강의정리/DevOps 2021. 1. 19. [데브옵스를 위한 쿠버네티스 마스터] VisualStudio Code 설치와 활용 VS Code 설치와 활용 사용한 운영체제는 Ubuntu 20.04버전이며 쿠버네티스 환경은 ~ 버전이다 VirtualBox에 Kubernetes가 설치된 상태로 진행 여기서는 VirtualBox Kubernetes 환경에서 진행하지만 클라우드 환경이나 로컬 쿠버네티스도 충분히 사용 가능함 다만 애저 클라우드 환경에 경우에는 프로비저닝 할 수 있는 추가 툴을 설치해야 함 1. 우분투에 VS Code 설치 우분투에 VS Code를 설치하는 가장 간단한 방법은 snap을 사용해서 설치하는 것 물론 visual studio 사이트를 직접 방문해 deb 파일을 받고 dpkg로 설치하는 방법도 있음 여기서는 snap을 사용해 설치함 $ sudo snap install --classic code # or code-.. 개발강의정리/DevOps 2021. 1. 19. [CQRS 아는 척하기] CQRS 구현 형태 https://www.youtube.com/watch?v=H1IF3BUeFb8&list=PLwouWTPuIjUgr29uSrSkVo8PRmem6HRDE&index=4 CQRS(Command Query Responsibility Segregation) 구현 형태 명령과 쿼리 모델이 한 프로세스에 있는지 다른 프로세스에 있는지 같은 DB를 사용하는지 다른 DB를 사용하는지 구현: 같은 프로세스, 같은 DB 가장 단순 명령/쿼리 동일 데이터 보장 구현: 같은 프로세스, 같은 DB, 다른 테이블 명령과 쿼리가 코드 수준에서 분리 되고 데이터 수준에서도 분리되는 방식 단 데이터가 같은 DB에 있는 형태 쿼리 전용 테이블 사용 예: 최근 조회수 많은 글 목록을 별도 테이블로 따로 저장 쿼리 모델은 이 테이블을 이용해.. Programming 2021. 1. 5. [CQRS 아는 척하기] CQRS의 기본 개념 https://www.youtube.com/watch?v=xf0kXMTFJm8&list=PLwouWTPuIjUgr29uSrSkVo8PRmem6HRDE&index=5 CQRS(Command Query Responsibility Segregation) Command Query (명령과 쿼리) 명령 시스템 데이터 변경 기능 예 주문취소, 배송완료 쿼리 시스템 데이터 조회 기능 예 주문 목록 Responsibility Segregation (책임 분리) 책임 구성 요소의 역할 구성 요소 (모델) 클래스, 함수 모듈/패키지 웹서버/DB 분리 역할에 따라 구성 요소 나누기 CQRS 란? 명령(시스템 데이터 변경) 역할을 수행하는 구성 요소와 쿼리(시스템 데이터 조회) 역할을 수행하는 구성 요소를 나누는 것이 CQR.. Programming 2021. 1. 5. [Apache kafka 조금 아는 척하기] 카프카 컨슈머 https://www.youtube.com/watch?v=xqrIDHbGjOY&list=PLwouWTPuIjUgr29uSrSkVo8PRmem6HRDE&index=1 컨슈머 토픽 파티션에서 레코드 조회 Properties prop = new Properties(); prop.put("bootstrap.servers","localhost:9092") prop.put("group.id","group1"); // group.id 지정 prop.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); prop.put("value.serializer", "org.apache.kafka.common.serialization.Str.. 개발강의정리/DevOps 2021. 1. 5. [Apache kafka 조금 아는 척하기] 카프카 프로듀서 https://www.youtube.com/watch?v=geMtm17ofPY&list=PLwouWTPuIjUgr29uSrSkVo8PRmem6HRDE&index=2 프로듀서 토픽에 메시지 전송 토픽, 키, 값 프로듀서를 사용해서 메시지를 보내는 코드 // Properties를 통해서 ack, batch사이즈 등의 설정 함 Properties prop = new Properties(); prop.put("bootstrap.servers", "kafka01:9092,kafka01:9092,kafka01:9092"); prop.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); prop.put("value.serial.. 개발강의정리/DevOps 2021. 1. 5. [Apache kafka 조금 아는 척하기] 카프카란? https://www.youtube.com/watch?v=0Ssx7jJJADI&list=PLwouWTPuIjUgr29uSrSkVo8PRmem6HRDE&index=3&t=4s 카프카란? https://kafka.apache.org 고성능 분산 이벤트 스트리밍 플랫폼 Fortune 100개 기업 기준으로 80%이상이 kafka 를 사용하고 있음 제조, 은행, 통신 등 다양한 업종에서 높은 비율로 사용중 국내에서도 큰 회사들은 많이 사용하고 있음 기본구조 카프카 클러스터 메세지를 저장하는 저장소 하나의 여러개의 브로커(각각의 서버)로 구성이 됨 브로커들이 메세지를 나눠서 저장, 이중화 처리, 장애가 나면 대체 함 데이터를 이동하는데 필요한 핵심 역할을 맡음 주키퍼 클러스터(앙상블) 카프카 클러스터 관리 카프카.. 개발강의정리/DevOps 2021. 1. 5. 이전 1 2 3 4 5 6 ··· 8 다음 💲 추천 글 728x90