티스토리 뷰
예전에 "Kubernetes 를 써봐야지" 라는 생각에 nginx 로 홈페이지 등을 운영중인 미니 PC에 k3s (쿠버네티스 경량 배포판) 를 설치해봤습니다. 그런데 k3s를 설치했더니 SSL/TLS 인증서가 이상한 걸로 바뀌는 게 아니겠습니까. 깜짝 놀랐는데 해결 방법은 몰라서 얼른 지우는 수 밖에 없었습니다.
이번에 남는 장비에 k3s를 구성해서 사용하면서 공부해봐야지 라는 생각을 했는데, 아무래도 이 때의 경험이 걸리더라구요. 그래서 개발장비 (=데스크톱 ㅋㅋ) 에 설치해서 테스트도 해보고 검색도 해봤습니다.
- SSL 만 바뀌는 게 아니라, 80, 443 포트도 localhost로 접속하던 192.168.주소.IP 로 접속해도 k3s 의 페이지로 바뀜
- 그 와중에 이미 실행해놓은 nginx 가 여전히 포트를 먹고 있음, 제 상식선에서는 포트 하나는 단 한 개의 프로세스만 쓸 수 있고 이건 틀리지 않은 듯
- "ip route" 나 "routel" 등의 명령어로 출력되는 라우팅 테이블에서도 80을 어떻게 먹는거지? 를 알 수 없었음
결론부터 말씀드리자면 ServiceLB 라는 로드밸런싱 모듈이 iptables 를 조작해서, 사용자의 80으로 가기 전에 낚아채이는 거였습니다. iptables는 리눅스의 커널 방화벽 겸 NAT(network address translation) 역할을 하는 커널 영역의 netfilters 를 조작하는 userspace 앱이라네요. 80이나 443을 실제로 먹는 건 아니고 그 전에 낚아채고 있다는 말이죠.
k3s는 쿠버네티스의 경량화를 위해 이런저런 필수요소들을 하나의 바이너리로 묶어서 내놓는 배포판인데, 거기에 로드밸런싱을 위한 ServiceLB와 웹에 서비스를 노출하기 위한 traefik 리버스 프록시를 포함하고 있습니다. 설치할 때 제외할 수 있고요.
바뀐 iptables를 비교까지는 해봤는데 iptables의 내용을 이해하기에는 시간이 너무 걸릴 거 같아서 일단 보류하기로 했습니다. 어차피 설치할 장비는 아무것도 서비스하고 있지 않은 장비라...
참고자료
- 이 내용을 알아본 글타래
- k3s 이슈에 똑같은 질문이 있음 - (#1204) 랑 (#2403) - "ServiceLB"에 대한 언급이 있습니다.
- ServiceLB에 대한 k3s 문서, 구현체인 Klipper Load Balancer (CNCF의 인증?을 받기 위해 별도 저장소로 뺀 듯) - iptables를 조작한다고 명시되어 있습니다.
- 네트워크 고수님의 친절하신 조언 (1) (2)
- 이 두 가지를 배포하지 않고 설치해서 gitlab이랑 연동까지 하는 방법이 나와있는 국내 블로그
- Total
- Today
- Yesterday
- 오라클 클라우드
- Sass
- 왜 생각이 안 났지
- mvu
- pleroma
- OStatus
- Oracle Cloud Infrastructure
- 쿠버네티스
- rust-lang
- upbit
- exercism
- kotlin당했다
- ArchLinuxARM
- gitea
- ActivityPub
- K8s
- C++ FAQ
- C#
- pdf.js
- Godot Engine
- 개발기록
- 업비트
- 마스토돈
- c++
- 오라클 클라우드 인프라
- scss
- javascript
- 시스어드민
- vuex
- 토이프로젝트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |