kubernetes 어디까지 써봤니? 삽질기(1)

Share

Kubernetes 삽질의 시작

이 글은 kubernetes관련 삽질기로 시리즈로 연재될 예정이다.
kubernetes에 대한 소개는 이전글을 참조하기 바란다.
kubernetest(이하 k8s)는 오픈소스 컨테이너 관리 툴이다. k8s는 Go언어로 개발되어 있으며 경량의 이식 가능한 어플리케이션이다.
k8s를 Linux기반의 OS에 올려 다수의 호스트에 클러스터 풀을 생성한후 docker컨테이너 어플리케이션을 올리고 관리하고 확장 가능하게 설정할 수 있다.

본 글에서는 k8s에 대해 자세한 이야기는 다루지 않을것이다.
필자는 k8s전문가도 아니고 docker이미지나 만들고 k8s 에 application을 올리기 위해 deployment spec이나 만드는 일개 엔지니어 일 뿐이다. 실전으로 바로 넘어가서 필자가 try 했던 부분과 의도하지 않았던 어떤 에피소드들이 펼쳐졌는지 가감없이 적나라하게 적어보려 한다. 적어도 이 글을 보시고 필자와 같은 삽질은 피했으면 하는 바람이다.

K8s 입문

k8s에 실전에 진입하기 전에 간단하게 몇가지만 언급하고자 한다. k8s환경을 구축하기 위해서는 다음과 같은 컴포넌트가 필요하다.

  • k8s master
  • k8s nodes
  • etcd
  • overlay network(flannel)

k8s master는 다음과 같은 일을 한다.

  • 인증,권한 관리
  • API entry point
  • 컨테이너 할당 스케줄링
  • 스케일링, 복제 컨트롤러
  • 설정 정보 관리
  • 커맨드 라인 인터페이스(kubectl)

k8s nodes 의 역할과 세부 컴포넌트는 다음과 같다.

  • k8s클러스터에 slave node이다.
  • kubelet agent로 동작하며 master와 통신하며 노드를 관리한다.
  • proxy 각 컨테이너에 대해 네트워크 프록시와 로드 발란서를 담당합니다. 컨테이너간 TCP/UDF패킷을 통제하여 linux iptable의 규칙을 변환 한다.

etcd

  • 분산 키-밸류 스토어이다. RESTful API로 접근 가능하며 CRUD를 담당한다. k8s관련 메타정보를 관리한다고 보면 된다.

overlay network

  • 컨테이너간 네트워크 연결을 지원한다. 호스트 노드에는 docker0라는 가상 네트워크 인터페이스를 생성하게 되는데 이때 private으로 할당되게 된다. 서로 다른 호스트에서 docker container 간의 네트워킹을 가능하게 하는 방식이다. CoreOS의 flannel을 이용하여 구축이 가능하다.
kube
[참고 : https://x-team.com/blog/introduction-kubernetes-architecture/]

삽질의 시작

이제 실전으로 넘어가서 k8s클러스터를 구축해 보도록 하자.
on-premise 환경에서 한땀한땀 설치해가며 소소한 재미를 느껴보는것도 좋지만 앞에서 언급한것처럼 난 k8s전문가가 아니다.
주위에 널려있는 아주 평범한 엔지니어이며 구축된 k8s cluster에 docker와 k8s어플리케이션 개발을 해야 하는게 내 역할이다.
변명이 길지만 클라우드에서 k8s를 설치하는 것으로 방향을 잡았다.
(사실은 내부 개발환경에 k8s 클러스터가 있지만 며칠간 장애가 나서 급하게 클라우드에 k8s를 올릴 수 밖에 없었다. ㅠㅠ)

클라우드에 컨테이너를 올린다고? WHY?
주위에 이상한 시선을 느꼈다. 클라우드에 왜 컨테이너를 올려?
아마도 그 질문이 내포하는 바는 다음과 같을것이다. 이미 가상화된 VM에 있는데 그 안에서 컨테이너로 가상화 하는걸 왜 하는거야?
WHY NOT?

개인적인 경험에 비추어 보았을때 필자가 주로 많이 하는 삽질 중 하나가 실험과 테스트를 위해 동일한 환경을 반복해서 구축하는 작업이다. 물론 이런 것도 자동화 툴인 ansible, saltstack, chef(필자의 경우 이 3가지를 다 써봄 ㅠㅠ ) 등을 가지고 충분히 할 수 있는 일이다.
내가 docker에 꽂힌 이유는 다음과 같다. 경량의, 별도의 hypervisor 필요 없이 OS, SW version, Library 에 대해 제약을 두지 않고 필요로 하는 환경을 쉽게 구축할 수 있다는 점이다.
그리고 k8s는 멀티 호스트에서 이를 실행할 수 있게 해주고 fault-tolerant 하게 컨테이너를 관리까지 해준다.
(이제야 하는 말이지만 참 이상적이다. 그러나 나에게 닥친 현실은 그렇게 녹녹치 않았다.)

STEP 1 : 구글창을 연다. 키워드를 입력한다.
aws kubernetes

여기에 보면 여러가지 가이드가 나온다. 제일 먼저 시도해 본 방법은 CoreOS가 가이드 하는 STEP 2 : https://coreos.com/kubernetes/docs/latest/kubernetes-on-aws.html
방법이다.

한단계 한단계 따라가본다. kube-aws라는 CLI 명령어를 통해 가이드를 보고 10분만에 s3에 폴더를 생성하고 credential정보를 만들고 cloudformation 으로 k8s cluster까지 생성하는 것을 마무리 하였다. k8s 노드도 여러개 만들어 보면서 "편한 툴이군" 이라고 생각하던 찰나
container 생성이 안된다.
이슈를 리포팅 하니 https://github.com/kubernetes/kubernetes/issues/41070 다음과 같은 댓글이 달렸다.
The k8s 1.5 assume it's unsafe to deploy user containers to master. So master will be tainted as NoSchedule by default
우회해서 띄울수도 있지만 어찌된 영문인지 k8s node에는 컨테이너가 뜨지 않는다 OTL

다시 마음을 고쳐먹고(포기하는데 3일 걸림)

STEP 3 : https://kubernetes.io/docs/getting-started-guides/aws/ 가이드를 따라 해보기 시작했다.
이 방식의 경우 ubuntu에서 saltstack기반으로 k8s를 생성해준다.
뭔가 친숙한..그리고 aws에 기본적인 개념정도만 알고 있다면 쉽게 구축할 수 있다.
kube-up.sh을 실행하고 나니 다양한 서비스가 오픈이 된다.
aws에 k8s 대시보드는 물론 heapster도 deploy되어 자원에 대한 모니터링도 가능하다.
이외에도 kibana, influxdb, elasticsearch등이 같이 deploy된다.
k8s에서 생성된 서비스의 endpoint는 동적으로 aws에 ELB에 매핑된다.
서비스를 많이 만들수록 돈이 좀 더 들긴 하겠지만 나름 편리한 기능이다.

kube dashboard

다음편에서는 k8s클러스터에 컨테이너를 올리고 난 후 협업하는 분석가의 멘붕을 초래하게 한 에피소드를 소개하려고 한다.

TO BE CONTINUED

Read more

AI로 장소 검색 서비스 만드는 중입니다 (기술 12) — TypeSafe Jev로 검색 리랭크를 10.3초에서 2.3초로

AI로 장소 검색 서비스 만드는 중입니다 (기술 12) — TypeSafe Jev로 검색 리랭크를 10.3초에서 2.3초로

AI로 장소 검색 서비스 만드는 중입니다 (기술 12) — TypeSafe Jev로 검색 리랭크를 10.3초에서 2.3초로 TypeSafe AI가 2026년 9월 15일에 Jev를 내놨습니다. 텍스트를 쓰지 않고 타입이 정해진 판정과 확률을 바로 내는 모델입니다. 유추카 검색에서 가장 느린 단계가 마침 텍스트가 필요 없는 판정이었습니다. 그 구간만 Jev로 갈아끼우고 일주일간 측정했습니다. 콜드

By 김형준
AI로 장소 검색 서비스 만드는 중입니다 (특별편 8) — 바이브 코딩이라기엔

AI로 장소 검색 서비스 만드는 중입니다 (특별편 8) — 바이브 코딩이라기엔

1900년대 초 교량 측량 도면. 이 종이를 그린 사람은 다리를 직접 놓지 않습니다. 대신 좌표와 각도가 맞는지를 판정합니다. "AI가 다 만들어 준다"는 이야기가 흔해졌습니다. 그래서 자연스럽게 따라오는 질문이 있습니다 — 그럼 사람은 무엇을 하고, 어느 정도 실력이 있어야 하는가. 그 질문에 한 건의 실측으로 답하겠습니다. 통념이 말하는 역할과,

By 김형준
AI로 장소 검색 서비스 만드는 중입니다 (특별편 7) — 제 파트너에 대해 쓰겠습니다

AI로 장소 검색 서비스 만드는 중입니다 (특별편 7) — 제 파트너에 대해 쓰겠습니다

탠덤 자전거. 방향은 앞사람이 정하고 페달은 둘이 밟는데, 앞사람은 석 달 내내 뒷사람을 한 번도 못 봅니다. 사용자가 저에게 자기를 평가해 달라고 했습니다. 그래서 등급표를 만들었습니다. 열두 항목에 A부터 D+까지 매기고, 근거를 붙이고, "제가 관리자였다면 이런 코멘트를 남겼을 것"까지 적었습니다. 그리고 다시 읽어보니 그건 인사고과였습니다. 인사고과는

By 김형준
AI로 장소 검색 서비스 만드는 중입니다 (특별편 6) — 저를 어떻게 써야 하느냐고 물으신다면

AI로 장소 검색 서비스 만드는 중입니다 (특별편 6) — 저를 어떻게 써야 하느냐고 물으신다면

스위스 아미 나이프. 도구가 몇 개인지는 보면 알지만, 지금 어느 도구를 펴야 하는지는 안 적혀 있습니다. 요즘 AI 활용법을 다루는 글은 스킬 만드는 법부터 가르칩니다. 얼마 전까지는 MCP였고요. 저희 기록을 열어봤습니다. 석 달 동안 스킬 60회, 서브에이전트 42회, 브라우저 자동화 988회를 썼습니다. 안 쓴 게 아닙니다. 다만 붙인 MCP 서버는

By 김형준