Tech-Blog: K8S와 Cloud-Native 기술 탐구

  • LXD 설치 및 설정 가이드: Ubuntu에서의 활용법

    컨테이너 기술이 일반화되면서 Docker는 사실상 기본 선택지가 됐지만, Docker만이 유일한 해답은 아닙니다. LXD는 시스템 컨테이너 기반의 가상화 도구로, Docker와는 다른 목적에 최적화돼 있습니다. 이 글에서는 Docker와 LXD를 간략하게 비교 상황에 따라 Docker가 아닌 LXD를 사용하는 방법에 대해 이야기 해보겠습니다. 1. LXD란? LXD는 LXC(Linux Containers)를 기반으로 한 고수준 시스템 컨테이너 관리자입니다. 컨테이너 내부에서 init 시스템이 포함된 Read more

  • Rook-Ceph Cluster Network 분리 가이드

    Kubernetes에서 Rook-Ceph를 설치하면 보통 하나의 네트워크만 사용합니다. 하지만 OSD 간 통신량이 많아지면 Public 트래픽과 섞여 성능이 떨어질 수 있습니다. 이럴 땐 Cluster Network를 따로 만들어서 Ceph 내부 트래픽만 분리해주는 게 좋습니다. 이 글에서는 Helm 차트로 Rook-Ceph을 배포할 때, Multus와 macvlan을 이용해 Cluster Network를 분리하는 방법을 쉽게 설명합니다. 이 글을 작성하게 된 이유는 기존 환경에서 osd간 Read more

  • Airgap 환경에서도 GPU Operator를? Precompiled NVIDIA 드라이버 만들기

    쿠버네티스에서 GPU를 잘 쓰기 위해선 NVIDIA GPU Operator를 많이 쓰죠. 그런데 이게 온라인 환경을 기본 전제로 움직이다 보니, 에어갭(air-gapped) 환경에선 설치가 꽤 까다롭습니다. 특히, GPU Operator가 노드에 올릴 커널 모듈이 필요한데, 이걸 빌드하려면 해당 노드에 커널 헤더랑 컴파일 툴들이 다 있어야 해요. 온라인이면 apt로 깔면 되지만, 오프라인이면 얘기가 달라지죠. 그래서 준비했습니다. 드라이버를 미리 빌드해서, 오프라인에서도 Read more

  • 🔧 Ceph OSD 재등록 시 ceph failed to fetch mon config 오류 해결 방법

    노드 드레인 후 OSD를 제거하고 동일 ID로 다시 등록하는 과정에서 다음과 같은 오류가 발생 이 문제는 OSD 인증키(keyring) 불일치로 인해 MON과 통신이 실패하면서 발생했습니다. 아래는 실제 운영 환경에서 문제를 해결한 방법입니다. 🧭 문제 발생 상황 로그에서 ceph-mon과의 인증 실패가 확인됐고, 원인은 기존 OSD keyring 값과 현재 key 값이 다르기 때문이었습니다. 🛠 해결 방법 1. 기존 Read more

  • 🛠️ dialog – CLI로 Installer 만들기

    CLI 환경에서도 대화형 UI를 만들 수 있다면 사용자 경험이 훨씬 나아집니다. dialog는 터미널에서 메시지, 입력창, 메뉴 등을 띄울 수 있게 해주는 유틸리티로, 간단한 설치 도우미부터 설정 마법사까지 다양하게 활용할 수 있습니다. 간단하게 예시 화면 보여드릴게요. 아래는 dialog를 활용한 간단한 설치 스크립트 예시입니다. 이 스크립트는 사용자의 이름과 원하는 포트를 입력받아 설정 파일을 생성하는 형태입니다. ✅ 설치 Read more

  • 네트워크 인터페이스 설정으로 Kubernetes 안정성 높이기

    Kubernetes를 멀티 인터페이스 환경에서 설치할 땐 꼭 네트워크 인터페이스를 나눠서 설정해야 합니다. 그렇지 않으면 kubelet이나 CNI가 엉뚱한 IP를 선택해 통신 장애나 설치 실패로 이어질 수 있어요. 이번 글에서는 다음을 기준으로 정리할게요! ✅ 왜 인터페이스를 나눠야 할까? 클러스터가 여러 NIC(네트워크 인터페이스 카드)를 갖고 있다면, 다음 세 가지 네트워크가 각각 다를 수 있어요 ✅통신 Flow #1 – Read more