2017년 8월 20일 일요일

kubernetes를 향한 모험

https://github.com/alexellis/faas#functions-as-a-service-openfaas

이게 시작이었다. AWS 람다는 처음 다뤘던 거라 생각만큼 잘 만져보지 못했고, Azure 펑션을 조금 쓰고 있다. 그래서 docker 위에 펑션을 올릴 수 있고, 그걸 kubernetes로도 굴릴 수 있다는 설명을 보았을 때 반가웠다.

docker는 swarm mode가 기본으로 들어갔던 것과 docker-compose가 yml 버전을 올린 것, docker-ce라고 패키지 이름이 바뀐 것 정도까지 따라갔다가 지금은 반쯤 포기한 상태다. docker 회사 자체에서 제공하는 docker cloud를 써봤는데 docker-compose랑은 또 다른 개념으로 service라는 걸 도입했고 그게 기존의 어떤 포맷과도 호환되지 않는다는 걸 깨달았을 때는 충격이 있었다.

그래서 kubernetes에 대해서 docker swarm mode를 대체하기 위한 수단으로 호감이 있다.

하지만 지금까지 kubernetes를 제대로 돌려본 적이 없다. 아니, 설치를 해서 실행되는 단계까지 간 적이 없다. 우분투를 기본적으로 쓰고 있는데 deb 저장소를 찾아서 깔면 adm이니 ctl이니 하는 것들이 뭔가 패키지끼리 충돌이 난다며 오류를 뿜어내고 그래서 도통 전체 구조를 실감한 적이 없었다.

찾다보니 https://kubernetes.io/docs/getting-started-guides/ubuntu/ 이게 나왔다. snap이라고 우분투에서 내놓은 컨테이너 기반 패키지 배포 방식을 통해 kubernetes을, 좀 더 정확히는 kubernetes을 대신 설치해주는 conjure-up이라는 프로그램을 쓰라는 거였다. 진행할 단계가 심히 단순했다. 이번에야말로 최신 기술들의 힘을 빌어 뭔가 해보는구나 싶었다.

하지만 역시나 이번에도 한번에 넘어가는 법이 없었다. 처음에는 snap으로 conjure-up을 설치할 수 없다고 그래서 이것저것 뒤져보니 왜인지 몰라도 zfs 모듈을 로딩하는 단계가 실패하고 있었다. 4.12는 우분투 패키지가 아니라 그런지 zfs 모듈이 없었다. 그냥 4.12를 지우고 4.10 우분투 패키지로 다시 돌아왔고, ᅟzfs 문제가 해결되면서 conjure-up 설치도 성공했다. 다음은 lxd가 bridge를 얹을 네트워크 장치를 찾을 수 없다면서 중간에 뱉어냈다. 아마도 br0을 수동으로 만들어서 쓰는 게 영향을 주는 것 같았다. 찾아보니 https://github.com/conjure-up/conjure-up/pull/934 관련되어 있을 것 같은 얘기가 보이긴 했지만, 어쩐 일인지 conjure-up을 beta와 edge로 바꿔 설치해봐도 차도가 없었다. 이것도 br0을 없애고 실제 이더넷 장치가 최상위 네트워크가 되게 해서 지나갔다.

여차저차 단계들을 지나고 conjure-up에서 kubernetes을 골라서 설치하는 단계까지 갔다. 하지만 생각지도 않게 디스크가 꽉 차서 중단되는 경우를 겪고, 그 뒤로는 이것저것 재시도를 하려다가 결국 snap 수준에서 싸그리 지우고 새로 시작하는 걸로 일단 설치까지는 마쳐졌다. 겨우 https://kubernetes.io/docs/getting-started-guides/ubuntu/local/ 에서 안내하는 설치 단계를 마친 거였다.

띄우고 보니 (ifconfig 목록 중에 conjureup0과 conjureup1 인터페이스가 2개 잡혀있었고, 최종적으로 성공한 설치본은 conjureup1 주소를 쓰고 있었다) 이번엔 /ui 주소에 접근했을 때 basic auth를 요구했다. 이것저것 뒤적거리다가 bin/kubectl.conjure-canonical-kubern-b54 config view 명령의 출력 끝부분에 users 라고 그럴듯한 부분이 있어서 거기 적힌 username과 password를 입력했더니 통과가 되었다.

그래서 일단 kubernetes dashboard라고 제목이 적힌 웹페이지까지는 들어가는 데 성공했다. 이제 여기서 이것저것 띄워보면 되겠지.