본문 바로가기

공부기록

(43)
[k8s] Application Lifecycle Management Application Commands & Arguments docker image의 entrypoint의 argument는 spec.containers.args에 명시해준다. spec.containers.args는 Docker file의 CMD opiton을 overrride한다. Docker file의 ENTRYPOINT를 override하기 위해서는 spec.containers.commad를 사용한다. Configure Environment Variables in Applications 환경 변수를 설정하기 위해 pod-definition.yaml에서 spec.container.env property를 사용한다. 예시 apiVersion : v1 kind : Pod metadata : name : s..
[k8s] Rolling Updates and Rollbacks Rolling Updates and Rollbacks Deloyment Rollout and Versioning Deployment를 생성하면 rollout이 트리거되면서 새로운 버전의 deployment Revision1이 생성된다. 이후 컨테이너가 업데이트되면 새로운 rollout이 트리거되면서 새로운 버전의 deployment Revision2가 생성된다. 이것은 버전의 변화를 트랙하고, roll back 을 가능하게 한다. Rollout Command kubectl rollout status deployment/myapp-deployment - 히스토리 보기 kubectl rollout history deployment/myapp-deployment Deployment Strategy 1.Recr..
[k8s] Managing Application Logs Managing Application Logs 컨테이너 오케스트레이터를 사용하는 환경에서 로그를 수집할 때 주의해야할 점 중 하나는 특별한 상황을 제외하고는 로그를 로컬 디스크에 파일로 저장하지 않아야 한다. 전통적인 애플리케이션 운영환경에선 로그를 로컬 디스크에 저장하고 일정 시간 이상 저장하거나 일정 용량이 되면 오래된 로그를 삭제한다. -이런 방식은 지정된 장비에서 실행된다는 것을 가정하므로 문제 발생시 로그를 확인해야한다. 컨테이너 오케스트레이터를 사용하는 시스템이면 컨테이너가 상황에 따라 클러스터 안의 여러 노드를 옮겨다니기 때문에 로그를 일일히 확인하는 것이 어렵다. 따라서 어떤 클러스터의 노드 중 어떤 컨테이너가 실행되었는지를 확인해야 로그를 확인할 수 있다. 파드 로그 확인하기 kubect..
[k8s] Monitor Cluster Components Monitor Cluster Components Monitor 쿠버네티스에서 기본적인 시스템 메트릭인 CPU, Memory 부터 클러스터에 노드 수, 컨테이너 상태 등 많은 것을 모니터링 해야한다. 이런 것들을 모니터링하고 metric을 저장하고 분석하기 위한 솔루션이 필요한데 쿠버네티스는 이 모든것들을 제공하지는 않기 때문에 Prometheus, Metrics-Server, ELK, Datadog, Dynatrace같은 오픈소스 솔루션들이 필요하다. Heapster vs Metric Server Heapster는 kubenetes를 모니터링하기 위한 오리지널 프로젝트였지만 현재는 사용되지 않는다. Metric server는 쿠버네티스 모니터링 아키텍처에서 core metric pipeline을 효율적으..
[k8s] Kubernetes Monitoring Architecture Kubernetes Monitoring Architecture : 클러스터의 상태와 클러스터 안에 실행 중인 파드들을 모니터링 하는 방법에 대해 알아보자. system metrics service metrics core metric pipeline monitoring pipeline system metrics 노드나 컨테이너의 CPU, Memory utilization 같은 시스템 관련 메트릭 1.core metrics 쿠버네티스 내부 컴포넌트들이 사용하는 메트릭 현재 클러스터 안이나 내장 오토스케일링에서 사용할 수 있는 자원이 얼마인지 파악 kubectl top command에서 보여주는 cpu/memory 사용량, pod/container의 disk 사용량 등 2.non-core metrics k8s..
[k8s] Multiple Schedulers Multiple Schedulers node에 pod를 스케줄링하기 전에 custom condition을 체크하는 자체적인 스케줄링 알고리즘을 만들고 싶을 경우 default scheduler에 스케줄 프로그램을 deploy하거나 추가적인 scheduler를 쿠버네티스 클러스터에 추가할 수 있음 애플리케이션 마다 다른 스케줄러를 이용할 수 있다. 예를들어, 다른 app은 default를 사용하게하고, 특정 app은 custom scheduler를 사용할 수 있다. pod를 생성할 때 어떤 스케줄러를 사용할지 정의할 수 있다. Deploy Additional Scheduler kube-scheuler binary를 다운로드 받은 후 옵션과 함께 서비스로 실행한다. additional scheduler를 d..
[k8s] static pod Static pod 스태틱 파드란? kube-apiserver를 통하지 않고 kubelet이 직접 실행하는 파드 kubelet이 직접 관리하고, 이상이 생기면 재시작 지정한 디렉터리에서 yaml파일들을 kubelet이 읽고 파드를 생성하고, 계속 파드가 유지되도록 관리함 파드만 생성할 수 있고, replica나 deployment는 생성 못함 kubelet은 오직 pod level에서만 작동 kubelet이 실행중인 노드에서만 실행되고 다른 노드에서는 실행되지 않음 kube-apiserver는 조회는 할 수 있지만 스태틱파드에 어떤 명령을 실행할 수는 없음 kubectl get pods 명령어로 static pod도 조회 가능 kbuelet이 pod를 생성하면 kube-apiserver가 mirror o..
[elasticsearch] elasticsearch 10000개 이상 데이터 조회 python es에서 데이터를 10000개 이상 조회하려면 scroll id를 사용하거나 elasticsearch helpers의 scan 을 사용해야한다. helpers.scan elasticsearch.helpers.scan(conn, scroll='10m', index=index, doc_type='_doc', size=10000, query=query) es.scroll def scroll_API(index, body): result = [] _KEEP_ALIVE_LIMIT='30s' # Initialize the scroll page = es.search(index=index ,body=body ,scroll=_KEEP_ALIVE_LIMIT ,size=10000 ,track_total_hits=True ) ..

반응형