728x90 분류 전체보기502 [데브옵스를 위한 쿠버네티스 마스터] 리소스 로깅과 모니터링 - 쿠버네티스 모니터링 시스템과 아키텍처 쿠버네티스 모니터링 시스템과 아키텍처 모니터링 서비스 플랫폼 쿠버네티스를 지원하는 다양한 모니터링 플랫폼 쿠버네티스의 메트릭 수집 모니터링 아키텍처에서 코어메트릭 파이프라인 경량화 힙스터를 deprecated하고 모니터링 표준으로 메트릭서버(metrics-server) 도입 $ kubectl top node NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% gke-cluster-1-default-pool-f6cef6fa-hbbq 82m 8% 1092Mi 41% gke-cluster-1-default-pool-f6cef6fa-hmlx 67m 7% 935Mi 35% gke-cluster-1-default-pool-f6cef6fa-m8cn 96m 10% 1037Mi 39% $ kub.. 개발강의정리/DevOps 2021. 1. 19. [데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 오토 스케일링 HPA 오토 스케일링 HPA 포드 스케일링의 두 가지 방법 HPA: 포드 자체를 복제하여 처리할 수 있는 포드의 개수를 늘리는 방법 VPA: 리소스를 증가시켜 포드의 사용 가능한 리소스를 늘리는 방법 CA: 번외로 클러스터 자체를 늘리는 방법(노드 추가) HPA(Horizontal Pod Autoscaler) 쿠버네티스에는 기본 오토스케일링 기능 내장 CPU 사용률을 모니터링하여 실행된 포드의 개수를 늘리거나 줄임 VPA와 CA는 어떻게!? 공식 쿠버네티스에서 제공하지는 않으나 클라우드 서비스에서 제공 클러스터 자동 확장 처리(CA) https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-autoscaler 수직형 pod 자동 확장(VPA) https.. 개발강의정리/DevOps 2021. 1. 19. [데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 멀티플 스케줄러 멀티플 스케줄러 멀티 스케줄러의 필요성 기본 스케줄러가 사용자의 필요에 맞지 않으면 사용자 고유의 스케줄러를 구현 가능 기본 스케줄러와 함께 여러 스케줄러를 동시에 실행 가능 각 포드에 사용할 스케줄러를 지정하는 방식도 가능 스케줄러의 사용 옵션 https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/ 스케줄러를 실행하는 yaml 파일이 너무 크니 복붙으로 해결 https://Kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ 이미지의 경우 에러가 발생 다음 이미지를 사용 k8s.gcr.io/kube-scheduler-amd64:v1... 개발강의정리/DevOps 2021. 1. 19. [데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 수동 스케줄링 수동 스케줄링: 원하는 포드를 원하는 노드에 포드 메뉴얼 스케줄링 특수한 환경의 경우 특정 노드에서 실행되도록 선호하도록 포드를 제한 일반적으로 스케줄러는 자동으로 합리적인 배치를 수행하므로 이러한 제한은 필요하지 않음 더 많은 제어가 필요할 수 있는 몇 가지 케이스 SSD가 있는 노드에서 포드가 실행하기 위한 경우 블록체인이나 딥러닝 시스템을 위해 GPU 서비스가 필요한 경우 서비스의 성능을 극대화하기 위해 하나의 노드에 필요한 포드를 모두 배치 nodeName 필드를 사용한 매뉴얼 스케쥴링 포드를 강제로 원하는 node를 스케줄링 할 수 있음 spec 아래에 nodeName: work1과 같이 노드 이름 설정 apiVersion: v1 kind: Pod metadata: name: http-go sp.. 개발강의정리/DevOps 2021. 1. 19. [데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 스태틱 포드 스태틱 포드 스태틱 포드의 필요성 스태틱 포드: kubelet이 직접 실행하는 포드 각각의 노드에서 kubelet에 의해 실행 포드들을 삭제할때 apiserver를 통해서 실행되지 않은 스태택 포드(static pod)는 삭제 불가 즉, 노드의 필요에 의해 사용하고자 하는 포드는 스태틱 포드로 세팅 다음 명령어 들을 사용하여 실행하고자 하는 static pod의 위치를 설정 가능 $ sudo systemctl status kubelet kubelet.service - kubelet: The Kubernetes Node Agent Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled) Drop-In: /etc.. 개발강의정리/DevOps 2021. 1. 19. [데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 데몬셋 데몬셋, 노드당 포드 하나씩 데몬셋 레플리케이션컨트롤러와 레플리카셋은 무작위 노드에 포드를 생성 데몬셋은 각 하나의 노드에 하나의 포드만을 구성 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. 이전 1 ··· 7 8 9 10 11 12 13 ··· 42 다음 💲 추천 글 728x90