본문 바로가기

전체 글

(24)
[Docker] Dockerfile cache 및 작성 Tip Kubernetes에서 보통 컨테이너 런타임으로 Docker를 사용한다. 그 말은 즉, 이미지를 빌드 하는 영역은 Docker를 통해 진행이 되는데 이 때 사용되는 Dockerfile 작성 Tip을 알아본다. 1. Cache에 관하여 기본적으로 Docker를 사용하는 사람들이 Dockerfile 각 명령어 한 줄 마다 layer가 쌓이고 캐싱이 된다라는 것 까지만 알고 있고, Dockerfile best practice 공식 Document에 보면 정확히 어떤 기준으로 캐싱을 사용하는지 아는 것이 중요하다고 나와있음에도 불구하고 이를 잘 모르는 경우가 많다. Dockerfile 명령어 마다 캐싱을 사용하는 기준이 다른데, 핵심은 ADD와 COPY 명령어를 제외한 모든 명령어는 Dockerfile에 기재된..
[kafka] consumer 동작 원리 및 tuning configuration(logstash) kafka consumer의 동작 원리 와 tuning configuration을 logstash kafka input plugin을 통해 알아본다. 우선, kafka의 목적을 정확히 이해해야 한다. Kafka는 버퍼의 기능이 있는데, push 방식이 아닌 consumer의 역량에 맞게 데이터를 가져가는 pull 방식을 취하고 있다. 무슨 뜻이냐면, request가 kafka broker에서 시작되는게 아니고 consumer에서 시작된다는 뜻이다. 데이터를 가지고오는 request를 poll이라고 하고, 보통 for 루프 안에 이 poll을 넣어 consumer의 로직을 구현한다. 이를 수도코드로 표현하면 이해하기가 더 쉬운데, for { data := consumer.poll() // data는 배열,..
로그 수집 - Service Discovery에 관하여(filebeat autodiscovery) 보통 filebeat를 활용해서 kubernetes 클러스터에 배포된 application의 로그를 읽으려고하면 filebeat을 daemonset으로 띄우고 난 뒤 /var/log/containers에 있는 로그를 수집한다. ( 주의해야한다. filebeat에서 input을 docker 혹은 container로 해야 데이터를 수집한다. 그냥 input을 log(file인가?)로 하고 해당 경로를 하드코딩해서 넣거나 와일드카드로 넣어도 작동하지가 않는다. 그 파일이 링크로 연결되어있는 파일이기 때문인 것 같다. ) 그런데 이렇게 설정해두면 실제 운영환경에서 문제가 생긴다. 1. container는 죽었다 살았다 하면서 계속 그 유니크 값이 달라지는데, 그렇기 때문에 하드 코딩을해서 input에 넣을 수가..
APM 수집 - Service Discovery에 관하여(metricbeat autodiscovery) 모니터링 업무 중 Kubernetes 환경에서 동작하는 application의 APM을 수집하기 위해 고민했던 포인트와 해결 방법을 기록한다. 일단, VM 환경과 Kubernetes 환경이 어떻게 다른지부터 이해하고 가야한다. 사실 방금 위 문장을 읽었을때 이상하다고 느꼈다면, 어느 정도 이해도가 있다고 판단되기 때문에 이 부분은 넘어가도 될 것 같긴하다. 먼저 VM 환경에서 생각해보자. (엄밀히 말하면 오픈스택 환경이라고 표현하는 것이 맞겠다.) APM을 수집하기 위해서 prometheus에서 제공하는 라이브러리를 각 application에 import하고, /metrics라는 API를 열었다. 그 다음으로는 주기적으로 이를 scraping하는 기능이 필요한데, 사실 자체 구축하는 것도 좋긴 하지만 해..
라우팅 테이블과 네트워크 인터페이스 보호되어 있는 글입니다.