목록전체 글 (197)
카이도스(Kaidos)의 Tech Blog
Kubernetes etcd vs Sidecar etcd, KVStoreMesh, Global Service까지 한 번에 이해하기작성 기준이 글은 Cilium 1.16 ~ 1.19 계열 기준으로 정리했다.ClusterMesh는 버전에 따라 기본값, 인증서 처리 방식, 일부 내부 구현이 달라질 수 있으므로 실제 운영 환경에서는 사용 중인 버전 문서를 함께 확인하는 것을 권장한다.ClusterMesh를 처음 보면 보통 여기서 헷갈린다.Kubernetes도 etcd를 쓰는데 왜 ClusterMesh에도 etcd가 있는가KVStoreMesh를 켜면 정확히 뭐가 달라지는가Global Service는 실제로 어떤 식으로 동작하는가결론부터 말하면 아래처럼 이해하면 된다.Kubernetes etcdKubernetes ..
폐쇄망 베어메탈 IDC 환경에서 수백 대 규모의 멀티클러스터·멀티테넌트 Kubernetes를 설계·구축·운영하면서 경험한 네트워크 아키텍처를 정리했습니다.이 환경에서는 퍼블릭 클라우드의 관리형 네트워크 기능을 사용할 수 없기 때문에, Kubernetes 네트워크 스택을 직접 설계해야 했습니다. kube-proxy를 완전히 제거하고 Cilium eBPF 기반 데이터패스를 사용했으며, Cisco EVPN/VXLAN 기반 데이터센터 패브릭 위에 BGP ECMP와 Cilium Cluster Mesh를 결합해 멀티클러스터 환경에서도 페타바이트 단위 데이터 처리와 수십~수백 Gbps 트래픽을 안정적으로 처리할 수 있는 구조를 구성했습니다.퍼블릭 클라우드 환경에서는 상대적으로 보기 어려운 베어메탈 네트워크 아키텍처인..
들어가며..HTTP 상태 코드는 서버가 요청을 어떻게 처리했는지를 세 자리 숫자로 알려주는 약속이다.크게 1xx(정보) / 2xx(성공) / 3xx(리다이렉션) / 4xx(클라이언트 오류) / 5xx(서버 오류)로 나뉘며, 이 글에서는 실무에서 자주 마주치는 코드만 골라 정리한다.2xx — 성공요청이 정상적으로 처리됐을 때 반환된다.200 OK 가장 기본적인 성공 응답이다. GET 요청으로 데이터를 잘 받아왔거나, POST 요청이 성공적으로 처리됐을 때 사용한다. 특별한 사정이 없다면 성공 응답은 대부분 200이다.201 Created 새로운 리소스가 생성됐을 때 반환한다. 회원가입, 게시글 작성처럼 POST 요청으로 무언가를 만들어낸 직후에 적합하다. 응답 헤더의 Location 필드에 새로 생성된 리..
Blackbox Exporter란?Blackbox Exporter는 Prometheus 생태계에서 엔드포인트(Endpoint) 를 “블랙박스(blackbox)” 방식으로 점검하기 위한 Exporter입니다. 다른 exporter들이 서버/애플리케이션 내부 메트릭을 수집하는 것과 달리, Blackbox Exporter는 대상의 내부 구조를 몰라도 실제 요청(Probe) 을 보내 가용성과 응답 시간을 측정합니다.HTTP 요청, ICMP(ping), DNS 쿼리 등을 통해 “사용자 입장에서 접속이 되는지”를 확인하며, 어디에 배치하느냐에 따라 클러스터 내부 관점(내부 DNS/Service/Ingress) 또는 외부 사용자 관점(인터넷/외부망)으로도 모니터링할 수 있습니다.핵심 개념Blackbox Exporte..
들어가며Artifact Repository로 Nexus를 운영하다 보면 단순히 설치하고 끝이 아닙니다. 실제 운영 환경에서는 어떤 요청이 많은지, 어디서 병목이 발생하는지 모니터링하고 최적화해야 합니다. 이 글에서는 Prometheus와 Grafana를 활용한 Nexus 모니터링 구성과 실질적인 성능 최적화 전략을 공유합니다.1. 모니터링 구성: Prometheus + Grafana모니터링 메트릭 수집Prometheus로 Nexus 메트릭 수집Grafana로 시각화 대시보드 구성로그 분석을 통한 요청 패턴 파악주요 모니터링 항목- HTTP 메소드별 집계 (GET, PUT, DELETE, HEAD)- 요청 타입별 집계 (다운로드, 조회, 업로드, 삭제)- 사용자/빌드서버 IP별 요청 빈도- 응답 시간 및 ..
안녕하세요. 오늘은 Cilium L2 Announcement(L2announce) 동작 원리를 정리하고, 소스 IP 보존이 필요한 서비스(특히 Ingress-NGINX) 를 배포할 때 어떤 방식으로 구성해야 장애를 예방할 수 있는지 실제 사례 기반으로 공유드립니다.참고로 트래픽 분산(ECMP) 이 목적이라면 L2 Announcement보다는 BGP 구성이 더 적합한 경우가 많습니다.본 글은 분산보다는 Failover(리더 전환) 와 소스 IP 보존 관점에서 L2 Announcement를 다룹니다.사전정보: 제가 현재 근무하는곳의 인프라 환경은 아래와 같습니다.모든 서버는 베어메탈(물리 서버)멀티 클러스터 / 멀티 테넌트 환경으로 클러스터당 수십~수백 대 규모워커 노드 소유권이 팀별로 달라(각 개발팀이 구..
안녕하세요. 항상 그렇듯이 바쁘다는 핑계로 포스팅이 늦어졌네요. 😅오늘은 Cilium을 사용하는 Kubernetes 환경에서 리부팅 수준의 복구를 커널 단에서 수행하는 방법을 정리해봤습니다.배경Kubernetes 클러스터를 운영하다 보면, Cilium이 네트워크 레벨에서 꼬이거나 비정상적인 상태에 빠져 Pod 간 통신 불가, 네임스페이스 단절, BPF 맵 손상 등의 문제가 발생할 수 있습니다.이 경우 단순히 Cilium Pod를 재시작하는 것만으로는 복구되지 않아, 결국 노드 리부팅이 필요한 상황까지 이어지기도 합니다.하지만 대규모 조직(예: 인프라팀, 네트워크팀, DevOps팀이 분리된 대기업 환경)에서는물리 서버 접근이나 재부팅 권한이 DevOps팀에 없는 경우가 많습니다.이럴 때는 리부팅과 동일한..
RKE2 기반 Kubernetes 클러스터를 구축한 지도 어느덧 1년이 넘었네요. 😊그동안 버전 업데이트, CNI 교체, Ingress 변경, 네트워크 구성(BGP 도입 등)까지 다양한 테스트를 진행해왔습니다.처음에는 소규모~중규모 환경에 맞춘 구성이었지만,이제는 중대규모 환경까지도 충분히 대응 가능한 구조로 확장 테스트를 마친 상태입니다.이번 구성의 주요 변화는 아래와 같습니다.Ingress: NGINX → Cilium IngressCNI: 기본 CNI → Cilium (kube-proxy 제거, eBPF 기반)IP 광고 방식: ARP 기반 → BGP Control Plane 기반 (FRR+ECMP 연동)Ingress부터 LoadBalancer 트래픽까지 Cilium 네트워크로 통일했고,기존 L2 A..
안녕하세요.이직 후 정신없이 지내느라 블로깅이 뜸했네요 😅최근 Kubernetes 클러스터 네트워크 구성 중, BGP를 활용한 라우터 서버 구축이 필요해져서 관련 내용을 블로그에 정리해봤습니다.소규모 환경에서는 ARP로도 충분할 수 있지만, 중~대규모 환경에서는 FRR + ECMP + BGP 조합이 효과적이라 필요성을 느끼게 되었고, 마땅한 레퍼런스가 부족해 직접 구성해보았습니다.회사 내에서 BGP 도입을 고려 중이라면 참고하시면 도움이 될 것 같아요.물론 가능하면 L4 장비 쓰시는 걸 추천드립니다 😉-> 참고로 모든 IP 대역은 이해하시기 편하게 모두 공개해두었습니다.(개인 테스트 대역이기 때문에.. ㅎㅎ)사전 정보구성 요소정보FRR-1172.16.60.11FRR-2172.16.60.12FRR AS..
집에서도 PROXMOX 셋팅 후 그위에서 여러 테스트를 하고있습니다.추가로 외부에서도 집에있는 서버에 붙어서 작업을 하고싶어서 VPN 셋팅을 진행하게 되었네요.원래는 유료로 공인IP를 받을까했지만, ddns 통해 무료로 가능한 방법이 있어서 진행하였고 해당 내용 공유드립니다.! 1. DuckDNS에서 DDNS 도메인 등록 https://www.duckdns.org/ 접속 후 로그인 (Google, Github 등으로)원하는 서브도메인 등록 (예: pjhvpn.duckdns.org)발급받은 토큰(Token) 확인 (이후 스크립트에 사용)# 토큰191c.... 2. 공유기 NAT (포트포워딩) 설정 공유기 접속 후, NAT → 포트포워딩 설정WireGuard 포트포워딩 입력:항목값이름VPN프로토콜UDP외부 ..