#Kubernetes
글 18편 · 학습 노트 1편 포함
-
회사마다 클러스터를 하나씩 통째로 띄운다
kind 로 만드는 멀티테넌시
한 줄로 회사를 하나 만들면, 그 회사 전용 쿠버네티스 클러스터가 통째로 하나 생긴다. 네임스페이스가 아니라 클러스터다. 서버 한 대 위에 kind 클러스터가 회사 수만큼 뜬다. 왜 네임스페이스가 아닌가 보통 멀티테넌시(여러 고객이 한 시스템을 나눠 쓰는 구조)는 네임스페이스로 가...
-
kubectl 없이 클러스터를 보는 화면을 띄웠다
쿠버네티스 대시보드 설치와 토큰 발급
한 줄로 쿠버네티스 클러스터를 웹 화면으로 보고 조작하는 공식 관리 도구다. kubectl 로 하던 일을 브라우저에서 클릭으로 한다. 무엇을 대신해주나 평소 클러스터 상태를 보려면 이렇게 친다. kubectl get pods -n monitoring kubectl describe ...
-
Prometheus 는 한 덩어리로 깔린다
메모리 때문에 보관 기간을 깎은 이유
한 줄로 Prometheus 를 단독으로 깔지 않는다. kube-prometheus-stack 이라는 묶음 차트로 Grafana·Alertmanager·수집기까지 6개 컴포넌트가 한 번에 들어온다. 그래서 진짜 문제는 설치가 아니라 자원 배분이다. 서버 한 대에 클러스터가 여러 개...
-
Istio 를 깔아두고 트래픽은 안 보냈다
서비스 메시를 넣되 아직 태우지 않은 이유
한 줄로 Istio 를 설치는 하는데, 실제 트래픽은 Istio 를 통과하지 않는다. Fabric 배포 스크립트 주석이 그걸 명시하고 있다. # Orderer/Peer의 istio.port 설정 (Kind 클러스터에서는 Istio 대신 직접 포트 사용) 이 글은 왜 이런 상태가 됐...
-
포트 3개를 1개로 줄이자 무한 리다이렉트가 났다
Ingress 로 클러스터 입구를 하나로 모으기
한 줄로 회사 하나가 쓸 수 있는 포트가 10개뿐이라, 관측 도구 3종을 포트 하나에 몰아넣었다. 그 대가로 경로 재작성(rewrite)이 필요해졌다. 이 글은 왜 그게 필요한지에 대한 이야기다. 포트가 왜 모자라나 앞 글에서 봤듯, 이 시스템은 회사마다 쿠버네티스 클러스터를 통째...
-
대시보드를 파일로 심었더니 로그인 루프에 빠졌다
Grafana 를 코드로 관리하기
한 줄로 Grafana 에 API 를 한 번도 호출하지 않고 대시보드를 등록한다. JSON 파일을 ConfigMap 으로 만들고 라벨 하나(grafana_dashboard=1) 를 붙이면 끝이다. 나머지는 Grafana 옆에 붙은 보조 컨테이너가 알아서 한다. 왜 손으로 만들면 안...
-
레지스트리 이름이 둘이라 이미지를 못 받았다
사설 레지스트리(registry:2)를 클러스터에 붙이기
한 줄로 폐쇄망(인터넷이 끊긴 망)에서 이미지를 공급하려고 띄운 사설 레지스트리다. 이미지 이름은 registry:2. Docker 가 공식 배포하는 레지스트리 서버다. 그리고 이 레지스트리가 담고 있는 이미지 목록에 registry:2 자신이 들어 있다. 이 글은 그게 왜 필요한...
-
블록 탐색기 하나 때문에 전용 DB 를 띄웠다
PostgreSQL 을 클러스터 안에 두기
한 줄로 Fabric Explorer(블록 탐색기) 하나만 쓰는 전용 DB 다. 애플리케이션 DB 가 아니다. 이 시스템의 본체 DB 는 따로 있고, 이건 탐색기가 화면을 그리려고 쌓아두는 사본이다. 왜 블록체인에 DB 가 또 필요한가 Fabric Explorer 는 블록·트랜잭션...
-
CouchDB 를 고른 대가는 파드 두 배였다
Fabric 상태 DB 를 LevelDB 대신 CouchDB 로
한 줄로 Hyperledger Fabric 피어가 현재 상태를 저장하는 DB 다. 기본값이 아니다. 일부러 골랐고, 그 대가로 피어 수만큼 DB 가 늘어난다. 블록체인인데 DB 가 왜 필요한가 헷갈리기 쉬운 지점이라 먼저 푼다. 블록체인은 거래 기록(원장) 을 이어붙인 사슬이다. ...
-
1초 살고 사라지는 컨테이너가 하는 일
busybox 를 초기화 작업에 쓰는 법
한 줄로 Besu 노드가 뜨기 직전에 잠깐 떠서 폴더 주인을 바꾸고 사라지는 컨테이너다. 하는 일은 명령 한 줄이다. chown -R 1000:1000 /data 이 한 줄 때문에 이미지 하나가 필요하다. 초기화 컨테이너란 쿠버네티스에는 초기화 컨테이너(init container)...
-
Fabric 채널 조인이 조용히 실패했다
kubectl hlf 20단계로 Hyperledger Fabric 을 올린 기록
한 줄로 회사를 만들 때 Fabric 은 안 생긴다. 빈 클러스터에 오퍼레이터만 깔릴 뿐이고, 네트워크는 따로 요청해야 만들어진다. 그 과정이 스크립트 1,178줄, 20단계다. 두 단계로 나뉜다 회사 생성 글에서 클러스터까지는 봤다. 그때 깔리는 건 hlf-operator 뿐이다...
-
Besu 검증자 2개가 함정이었다
Helm 5번으로 Hyperledger Besu 네트워크를 올리기
한 줄로 Besu 는 Helm 차트 5번으로 깔린다. Fabric 이 kubectl hlf 20단계였던 것과 대비된다. 그리고 검증자를 4개 요청해도 합의에 참여하는 건 2개뿐이다. 에러 없이. Fabric 과 무엇이 다른가 Fabric 글과 나란히 놓으면 차이가 뚜렷하다. F...
-
디플로이먼트와 서비스
쿠버네티스 기본 오브젝트
디플로이먼트(Deployment) 란? 파드(Pod)를 관리해주는 것 앞에서 파드를 직접 매니페스트로 만들어 띄웠다. 그런데 파드만 쓰면 불편한 점이 있다. 서버를 3개 띄우려면 매니페스트 파일을 3개 만들어야 한다 파드가 죽으면 아무도 다시 살려주지 않는다 새로운 버전으로 바꾸려...
-
kubectl exec 은 왜 멈추는가
셸 스크립트에 타임아웃과 재시도 넣기
문제: 스크립트가 멈춘다 Fabric 네트워크 기동 = bash 스크립트가 kubectl을 순서대로 호출 증상 — 스크립트가 간헐적으로 멈춤. 에러가 아니라 그냥 정지 환경 — 폐쇄망 + kind 다중 클러스터. 네트워크 계층이 순탄하지 않음 원인 구조: kubectl은 기본적으로...
-
클러스터를 지웠는데 디스크가 안 줄어든다
익명 볼륨과 삭제 순서
문제: 지웠는데 공간이 안 돌아온다 폐쇄망 서버 한 대 위에 기업별 kind 클러스터가 여러 개 뜨는 구조 클러스터를 만들고 지우는 일이 잦다 — 그때마다 삭제 스크립트가 돈다 증상: 클러스터를 삭제해도 디스크 사용량이 줄지 않는다 에러는 없었다. 스크립트는 정상 종료하고, kin...
-
오퍼레이터 버그를 CRD 패치로 우회했다
오픈소스를 포크하지 않고 고치기
문제: 체인코드 상태가 FAILED에서 안 나온다 구조: 체인코드 배포 시 Kubernetes에 FabricChaincode 커스텀 리소스 생성 hlf-operator가 이 리소스를 보고 실제 체인코드 pod 기동 증상: 배포는 실제로 성공 kubectl get fabricchai...
-
포트 할당 함수를 네 번 고쳤다
매번 다른 이유로
배경: 기업 하나에 클러스터 하나 폐쇄망에서 여러 기업이 각자 블록체인 네트워크를 쓰는 구조 격리 단위는 기업 1개 = kind 클러스터 1개 — 한 서버 위에 클러스터가 여러 개 뜬다 클러스터마다 호스트 포트가 필요하다(API 서버, Ingress, 대시보드, RPC…) 그래서 ...
학습 노트
책·강의를 따라 적은 정리 1편. 2026 이전에 쓴 것이다.