DevOps (9) 썸네일형 리스트형 [Kubernetes] CKA 합격 후기 - 1번 실패하고 재시험으로 합격 CKA(Certified Kubernetes Administrator) 자격증을 준비했고, 첫 시험에서는 아쉽게 불합격했지만 재시험 기회를 사용해서 최종 합격했다. Kubernetes를 이전부터 직접 다뤄본 경험이 있어서 기본적인 개념을 이해하는 데에는 큰 어려움이 없었다. 다만 CKA는 단순히 Kubernetes 개념을 알고 있는 것보다 실제 시험 환경에서 문제를 빠르게 해결하는 능력이 중요했기 때문에 시험 문제 풀이에 익숙해지는 것을 중심으로 공부했다.공부 기간전체적으로는 약 1개월 정도 공부했다. 다만 실제로 1개월 내내 매일 공부한 것은 아니고, 기존에 Kubernetes를 다뤄본 경험이 있었기 때문에 개념을 처음부터 공부하는 방식보다는 강의를 통해 부족한 부분을 확인하고 문제 풀이에 익숙해지는 .. [Kubernetes] Control Plane - Kube Api Server 한 줄 요약: 쿠버네티스에서 무언가를 바꾸는 유일한 방법은 API 서버에 HTTP 요청을 보내는 것이다. 위 그림의 핵심위 아키텍처 그림을 보면 스케줄러와 컨트롤러 매니저, 그리고 워커 노드의 kubelet 사이에는 직접 연결된 선이 없다. 모든 선은 가운데의 kube-api-server 상자를 거친다. etcd로 들어가는 선도 오직 API 서버에서만 나온다. api-server 를 통하는 것은 쿠버네티스 설계의 핵심 그 자체다. 쿠버네티스는 컴포넌트들이 서로를 호출하며 협업하는 시스템이 아니다. 모든 컴포넌트는 오직 API 서버만 바라보고, 서로의 존재조차 모른다. 스케줄러는 kubelet에게 "이 파드 좀 띄워줘"라고 말하지 않는다. 그냥 API 서버에 있는 파드 객체에 nodeName: node-.. [Kubernetes] Service Service는 프로세스가 아니라 규칙(rule) 이다.어딘가에 트래픽을 받아 넘겨주는 프록시 서버가 떠 있는 게 아니라, 모든 노드의 커널에 심어진 패킷 변환 규칙의 집합이다. 이 한 문장을 이해하면 Service의 거의 모든 동작이 설명된다.Service가 왜 필요한가Pod는 일회용(ephemeral) 이다. 재시작되면 새 IP를 받고, 스케일 아웃되면 개수가 바뀌고, 노드가 죽으면 다른 노드에서 태어난다. 그래서 Pod IP를 직접 부르는 구조는 성립할 수 없다.문제Service가 없다면Service가 있다면Pod 재생성 시 IP 변경호출하는 쪽 설정을 매번 수정ClusterIP는 Service 수명 동안 불변Pod가 N개클라이언트가 직접 분배 로직 구현커널 레벨에서 자동 분산Pod 위치를 모름IP.. [AWS] AWS SAA-C03 합격 후기 SAA-C03 자격증 시험 합격 후기토요일 오전 8시에 시험을 보고 12시간 정도 뒤에 바로 결과가 나왔다. 결과는 다행히 합격이었다. 720점 부터 합격인데 765점으로 아슬아슬하게 합격했다.시험은 집에서 온라인 비대면으로 치뤘다. 비대면으로 응시해서 외국인 분이 웹캠 확인 하면서 이것저것 영어로 물어보고 요구하는데 그게 AWS 자격증 시험 중에서 가장 어렵고 고달픈 시간이었다. 시험 시간은 120분 정도 주어지며 다 푸는데에는 80분 정도 걸린 것 같다.시험 준비AWS 자격증 공부를 할 때 보통 udemy 강의를 많이 듣는다고 알고 있었다. 그래서 마찬가지로 udemy 강의 통해서 공부를 하려고 하던 때에 인프런 JSCODE 님이 SAA-C03 자격증 벼락치기 강의를 냈다는 메일을 받았다. JSCOD.. [Nginx] Nginx 이벤트 루프와 epoll 기반 I/O 다중화 NGINX 한 대가 초당 수만 건의 요청을 처리하면서도 메모리를 수백 MB 이상 잡아먹지 않는다. 스레드 기반 서버라면 스택만으로 수 GB가 사라지는 상황에서도 NGINX는 그러지 않는다. 이것이 가능한 이유는 하나다. I/O를 기다리지 않기 때문이다. Apache가 연결마다 스레드를 할당하는 구조적 한계를 드러내던 자리에서, NGINX는 OS 커널의 이벤트 알림 메커니즘을 활용해 단 몇 개의 프로세스로 수만 개의 연결을 동시에 관리한다. 이 글에서는 그 원리를 이벤트 루프(Event Loop)와 I/O 다중화(epoll/kqueue)를 중심으로 OS 레벨까지 파헤쳐본다.문제의 시작 - C10K2000년대 초, 웹 트래픽이 폭발적으로 증가하면서 하나의 서버로 동시 접속자 1만 명(10,000 Connec.. [Kubernetes] Kubernetes 아키텍처 - kubectl 명령 이후의 동작 이 글은 Kubernetes를 처음 접하는 사람들이 "도대체 내가 입력한 명령이 어디로 가는 거지?" 라는 궁금증을 해소할 수 있도록, 아키텍처 전체를 순서대로 뜯어보는 글이다.Kubernetes란 무엇인가?컨테이너를 혼자 쓰면 어떤 문제가 생길까?Docker를 처음 배우면 docker run 명령 하나로 컨테이너를 실행하는 것이 마법처럼 느껴진다. 하지만 실제 서비스를 운영하다 보면 금방 한계에 부딪힌다.컨테이너가 죽으면? → 직접 다시 실행해야 한다트래픽이 갑자기 몰리면? → 수동으로 컨테이너를 늘려야 한다서버가 10대, 100대면? → 어느 서버에서 무엇이 실행되는지 파악하기 어렵다배포 중 서비스를 중단하지 않으려면? → 복잡한 스크립트를 직접 작성해야 한다이 문제들을 해결하기 위해 등장한 것이 컨.. [Docker] Docker Compose로 Grafana / Prometheus / Loki 로컬 테스트 환경 구성하기 애플리케이션 개발과 운영에서 모니터링은 필수적인 요소이다. 하지만 Grafana, Prometheus, Loki와 같은 강력한 모니터링 도구들을 처음부터 완벽하게 구축하는 것은 결코 쉬운 일이 아니다. 특히 로컬 개발 환경이나 소규모 테스트 환경에서는 복잡한 설정보다는 빠르고 쉽게 동작하는 모니터링 스택이 필요하다.위 환경을 AWS EC2 (Amazon Linux) 환경에서 Docker Compose를 활용하여 Grafana, Prometheus, Loki 스택을 구축하고, 나아가 Spring Boot 애플리케이션의 메트릭과 로그를 연동하는 방법을 알아보자.목표AWS EC2 (Amazon Linux 2023) 인스턴스 위에서Docker Compose를 사용하여Grafana, Prometheus, Loki.. Docker Docker는 전통적인 하이퍼바이저 기반 가상머신(VM)과 달리, 리눅스 커널이 제공하는 다양한 기능을 조합해 호스트 커널을 공유하면서도 독립된 프로세스 환경을 제공하는 경량 컨테이너 플랫폼이다. OS 수준의 가상화(OS-level virtualization)라고 부르며, 프로세스 격리와 자원 제어만으로 빠르고 효율적인 애플리케이션 배포·운영을 가능케 한다.컨테이너 vs VM 가상머신 (VM) 컨테이너(Docker) 커널각 VM마다 별도 커널과 OS호스트 커널을 공유가동 시간수십 초 이상 (부팅 필요)수 밀리초~수 초 (프로세스로 실행)오버헤드메모리·디스크·CPU 오버헤드 큼최소한의 사용자 공간 레이어만 추가격리 수준꽉 막힌 격리네임스페이스·Cgroups 기반 격리컨테이너는 결국 “독립된 프로세스”이.. 이전 1 2 다음