Tailscale 위에 쿠버네티스 클러스터 구축하기

태그 쿠버네티스 분류 일반

VPN 위에 쿠버네티스 클러스터를 구축할 때 주의할 점들을 공유합니다.


chevron_right

목차


서론

쿠버네티스(K8s) 클러스터를 구성하려면 네트워크 설정이 중요하다. 특히 VPN 위에 클러스터를 구축할 때는 몇 가지 주의할 점이 있다. 이번 글에서는 Tailscale을 사용해 쿠버네티스 클러스터를 구축하는 방법과 주의할 점들을 공유한다.

왜 Tailscale을 사용했는가

Tailscale은 개인 사용 수준으로는 무료로 사용할 수 있고, 보안과 방화벽 설정 등에 유리하다. 나는 K8s 구축에 “월 유지비 1$ 미만으로 마참내 안죽는 on-premise 인프라를 만들었다.”라는 글을 참고해 구성했는데, 여기서 Tailscale을 사용했기에 선택했다.

주의할 점

기기 이름 말고 IP 주소를 사용하자

Tailscale을 사용하면 DNS를 통해 기기 이름으로 접근할 수 있으나, DNS 설정이 복잡해질 수 있기 때문에 IP 주소를 사용하자.

node-ip를 고정하자

노드 IP를 지정하지 않으면 Tailscale이 아닌 다른 네트워크 인터페이스를 사용할 수 있어 연결이 실패할 수 있다. 따라서 kubelet에 --node-ip argument를 주어 Tailscale 내의 IP 주소를 지정하자. 나는 /etc/default/kubelet 파일에 KUBELET_EXTRA_ARGS=--node-ip=[tailscale ip]를 추가했다.

기기 성능에 주의하자

cilium connectivity test를 실행할 때, RPI4에서 실패하는 경우를 보았다. 이때 top 명령어로 확인해보니 tailscaled 프로세스가 대부분의 CPU를 사용했다. 노드 성능을 고려하자.

Tailscale 포트를 열어두자

Tailscale은 굳이 포트를 열어두지 않아도 동작하지만, 좋은 성능을 위해 41641 포트를 열어두거나 포워딩해두자. tailscale status 명령어를 사용하면 직접 연결되었는지, 또는 relay를 사용하고 있는지 확인할 수 있다. 좋은 네트워크 성능을 위해서는 직접 연결이 필요하다. 포트만 열어두면 알아서 인식하므로 별도의 설정은 필요하지 않다. K8s를 위한 포트는 포워딩해둘 필요가 없는 것이, VPN을 통해 연결되기 때문이다. Tailscale만 구성해 두면, SSH 포트조차 닫아두어도 되고, 보안 상으로도 좋다.


chevron_left
이전 글
한국투자증권 API, Kotlin에서 사용해보기
article
현재 글
Tailscale 위에 쿠버네티스 클러스터 구축하기
인용하기
BibTeX
@misc{devngho202520250816k8sheadache,
  author       = {Yu, Dongho},
  title        = {Tailscale 위에 쿠버네티스 클러스터 구축하기},
  howpublished = {\url{https://ngho.dev/posts/20250816-k8s-headache}},
  year         = {2025},
  month        = {aug},
  note         = {Accessed: 2025-08-16}
}

APA 유동호. (2025년 8월 16일). Tailscale 위에 쿠버네티스 클러스터 구축하기. devngho 블로그. https://ngho.dev/posts/20250816-k8s-headache

Chicago 유동호. “Tailscale 위에 쿠버네티스 클러스터 구축하기.” devngho 블로그 (blog). 2025년 8월 16일. https://ngho.dev/posts/20250816-k8s-headache.

MLA 유동호. “Tailscale 위에 쿠버네티스 클러스터 구축하기.” devngho 블로그, 2025년 8월 16일, https://ngho.dev/posts/20250816-k8s-headache.