CKA 공부 42일차

Configure High Availability

  • k8s의 고가용성에 대해 알아보자.

  • 마스터노드가 죽는다면 어떤 일이 일어날까? 애플리케이션은 여전히 구동할 것이다.

  • 파드가 죽는다면 레플리카가 파드를 다시 살려주겠지만 마스터 노드는 그렇지 않다.

  • 일단 마스터노드가 죽으면 kube-apiserver도 사용을 못하니 큰일이다.

  • 이를 위해 2대의 마스터 노드를 운용하면 이런 이슈를 방지할 수 있다.

  • 이렇게 마스터 노드를 여러대 운용한다는 것은 마스터 노드에 있는 모든 오브젝트들을 복제본으로 가진다는 뜻이다.

  • 마스터노드 안에는 ETCD, kube-apiserver, controller manager, scheduler와 같은 오브젝트들이 존재한다.

  • 마스터노드가 2대 운용되면 이러한 컴포넌트들이 2번 실행되게 되는 것일까?

  • 마스터노드에 kube-apisverver 각각 존재할텐데, 각각의 노드 ipd와 6443 포트로 마스터노드의 kube-apiserver에 접근이 가능할 것이다.

  • 이를 위해 일반적으로는 LB를 달아서 트래픽을 분리해주는게 일반적이다.

  • Controller Manager와 Scheduler의 경우는 어떨까?

  • Controller Manager는 레플리카를 주시하고 있다가 파드가 죽거나 생성되는 일에 관여하게 될 것이다.

  • 만약 이러한 동작이 마스터노드에서 Parallel하게 동작한다면 실제로 필요한 것 보다 더 많은 중복 액션이 실행되게 될 것이다.

  • 이를 위해 이러한 오브젝트들은 Active와 Standby라는 두 개의 상태로 동작하게 된다.

  • 어떤 마스터 노드는 Active 상태를, 어떤 마스터 노드는 Standby 상태가 되는데 이러한 Leader Election Process를 갖는 것이 상당히 흥미롭다.

  • Controller Manager의 경우 기본적으로 Leader Election Process가 True이다.

  • 이러한 동작 과정은 마스터 노드의 요청이 Fail나면 다른 마스터 노드가 권한을 얻어 리더가 되는 방식이다.

  • ETCD는 어떨까

  • ETCD는 우선 두 가지 전략으로 구성될 수 있는데, 첫 번째는 마스터 노드에 내장되어있는 방식이고 다른 하나는 마스터 노드와 별개의 서버로 동작하게 되는 방식이다.

  • 마스터노드와 함께 동작하는 ETCD를 Stacked Topology라 부르고, 따로 동작하는 ETCD를 External ETCD Topology라 부른다.

  • kube-apiserver의 옵션에 ETCD 서버의 호스트를 입력해줄 수 있다.

  • ETCD는 분산 시스템이며 kube-apiserver과 다른 오브젝트들 모두 ETCD 서버에 접근할 수 있다.





© 2022. by minkuk

Powered by minkuk