K3s는 kubernetes를 경량화한 제품입니다.
아시다시피 쿠버네티스는 정말 많은 기능을 제공하고 다양한 케이스를 지원합니다.
하지만 때때로 그 많은 기능이 부담스러울 때가 있습니다.
모든 사람에게 iPhone Pro Max 256G가 필요하지 않은 것 처럼 말이죠.
K3s를 개발한 Rancher에서는 두 가지 방법으로 오리지널 쿠버네티스를 경량화 했습니다.
- 더 적은 메모리를 사용하는 구조 사용
- 쿠버네티스 클러스터 구성요소를 하나의 프로세스로 묶어서 중복으로 사용되는 부분을 제거합니다.
- 더 작은 크기의 바이너리 사용
- 써드파티 스토리지 드라이버와 클라우드 프로바이더 관련 요소를 제거하여 용량을 줄입니다.
그리고 아래에 나와있는 것들을 한번에 제공한다고 나와있고 교체도 가능하다고 합니다.
- Containerd & runc
- Flannel for CNI
- CoreDNS
- Metrics Server
- Traefik for ingress
- Klipper-lb as an embedded service load balancer provider
- Kube-router netpol controller for network policy
- Helm-controller to allow for CRD-driven deployment of helm manifests
- Kine as a datastore shim that allows etcd to be replaced with other databases
- Local-path-provisioner for provisioning volumes using local storage
- Host utilities such as iptables/nftables, ebtables, ethtool, & socat
위 그림은 K3s의 아키텍처인데 etcd 대신 Kine를 사용하는 것 말고는 똑같습니다.
제약에 걸리지 않는다면 K3s로 클러스터를 구성해 서비스를 제공하는 것도 나쁘지 않아 보이는데
과연 진짜 괜찮을지 다음 포스팅에서 K3s 클러스터를 올려보고 하나씩 확인해보겠습니다.
감사합니다.