RKE로 쿠버네티스 클러스터를 구축하기 위해서 관련 문서를 살펴보다 보면, 이런 질문이 나옵니다.
"RKE 클러스터를 고가용성 형태로 구현시 필요로하는 최소 노드는 몇개일까요?"
처음에는 콘트롤 플레인 3 + 워커노드 2 해서 5라고 생각했습니다. 그런데 5가 원하는 답이 아니더라구요.
콘트롤 플레인과 etcd를 분리
제가 일반적으로 연습했던 환경은 콘트롤 플레인과 etcd가 한 노드에서 역할을 같이하는 형태였습니다. 그래서 이것을 3노드 이상, 홀수로 구성하면 고가용성이 구현된다고 알고 있습니다.
그런데, RKE 문서에서는 콘트롤 플레인과 etcd를 분리해서 생각하더라구요.
일반적으로 콘트롤 플레인 고가용성을 3노드로 생각하는 본질적인 이유는 etcd의 고가용성 최소노드 구성 때문입니다. 즉, etcd가 3인거죠.
콘트롤 플레인은 1개의 노드가 장애난 상태에서도, 1개만 있으면 읽기/쓰기 작업 모두할 수 있습니다. 그래서 etcd가 분리된 구성이라면 고가용성 최소 노드가 2가 되게 됩니다.
워커 노드도 위와 같은 방식으로 1노드가 장애나도 1개의 노드만 있어서 서비스가 지속 가능하니 고가용성 최소 노드는 2가 되는 것이구요.
그래서 etcd 3 + Control Plane 2 + Worker 2 해서 합이 7로 됩니다.
원론적으로는 맞으나, 현실적으로는?
원론적으로는 클러스터의 모든 정보를 보관하는 etcd가 분리하는 것이 좋을 것입니다.
그러나 현실적으로는 Control Plane과 etcd가 같은 노드에서 구현되는 형태가 많이 사용될 것 같습니다. 즉, Control Plane을 etcd 역할까지 포함한 형태로 3, 5, 7 형태로 구성할 것 같습니다.