[kubernetes] controlPlaneEndpoint 설정하기


Kubernetes는 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 관리하는 오픈 소스 플랫폼이며, 다양한 환경에서 일관된 애플리케이션 실행을 가능하게 해주는 컨테이너 오케스트레이션 도구입니다.

 

Kubernetes에서 controlPlaneEndpoint 설정은 고가용성(HA)을 위한 필수 구성 요소입니다. 이 설정을 통해 클러스터 내 여러 master 노드를 로드밸런서나 고정 IP를 통해 단일 접점으로 묶어 관리할 수 있습니다. controlPlaneEndpoint를 사용하면, 클러스터의 API 서버에 대한 요청을 단일 엔드포인트로 전달하고, 그 뒤에서 로드밸런서가 요청을 여러 master 노드로 분산 처리하게 됩니다.

 

 

controlPlaneEndpoint에 대해 더 알아보고 설정하는 방법을 알아보도록 하겠습니다.

 

 


controlPlaneEndpoint 란?

 

[ 기능 ]

controlPlaneEndpoint는 클러스터의 API 서버를 외부에서 접근할 수 있는 단일 접점을 제공합니다.
이를 통해 클라이언트(예: kubectl)는 master 노드의 IP 주소가 변경되더라도 항상 동일한 엔드포인트를 사용하여 API 서버에 접근할 수 있습니다.

 

 

[ 필요성 ]

여러 master 노드를 사용하는 경우, API 서버에 대한 접근을 로드밸런서가 담당하도록 하여 고가용성 및 장애 대응을 구현할 수 있습니다. 만약 하나의 master 노드가 다운되더라도, 로드밸런서가 요청을 남은 master 노드로 자동으로 라우팅하여 서비스가 지속되도록 합니다.

 

단일 master 노드를 사용하는 경우에는 controlPlaneEndpoint 설정 없이 클러스터를 사용하여도 문제는 없습니다.

 

 


controlPlaneEndpoint 설정하기

 

kubeadm init 단계에서 설정하기

kubeadm init 단계에서 --control-plane-endpoint 옵션을 추가하여 직접 controlPlaneEndpoint를 설정할 수 있습니다.

# kubeadm init --control-plane-endpoint "10.0.0.11:6443"

 

 

kubeadm init 완료 후 설정하기

Kubernetes configmaps 설정 중 kubeadm-config 설정에 controlPlaneEndpoint 옵션을 추가합니다.

# kubectl edit configmaps -n kube-system kubeadm-config


ClusterConfiguration 섹션에 controlPlaneEndpoint: <IP 및 도메인> 값을 추가합니다.
추가 후 자동으로 적용되며 controlPlaneEndpoint를 통해 안정적으로 API 서버에 접근할 수 있습니다.

 

 


접근 확인

controlPlaneEndpoint가 설정된 로드밸런서나 고정 IP를 통해 Kubernetes API 서버에 접근할 수 있는지 확인하려면, 로컬 머신이나 클러스터의 다른 노드에서 kubectl 명령을 실행합니다.

### 예시
# kubectl get nodes --server https://<controlPlaneEndpoint>:6443
# kubectl get nodes --server https://10.0.0.11:6443
NAME         STATUS   ROLES           AGE   VERSION
k8s-cn-001   Ready    control-plane   12d   v1.31.2
k8s-cn-002   Ready    control-plane   60m   v1.31.2
k8s-cn-003   Ready    control-plane   54m   v1.31.2

 

정상적으로 설정한 controlPlaneEndpoint를 통해 API 서버에 접근하는 것을 확인하실 수 있습니다.

 

 


 

Kubernetes 클러스터에서 controlPlaneEndpoint를 설정하고 확인하는 방법을 알아봤습니다.

 

먼저, 클러스터의 고가용성을 위해 로드밸런서나 고정 IP를 통해 접근할 수 있는 controlPlaneEndpoint를 설정합니다. 이를 위해, kubeadm, kubelet, kubectl 패키지를 설치한 후, kubeadm init 명령어를 사용해 control plane을 초기화합니다. kubeadm init 단계에서 controlPlaneEndpoint 설정을 추가하거나 완료 후 configmaps 설정을 추가하여 controlPlaneEndpoint  설정을 추가할 수 있습니다.

 

마지막으로, kubectl get nodes 명령어에 --server 옵션을 추가하여 설정한 controlPlaneEndpoint를 통해 모든 master 노드가 정상적으로 응답하는지 확인합니다.

 

지금까지 Kubernetes 클러스터에서 controlPlaneEndpoint를 설정하고 확인하는 방법을 알아보는 시간을 가졌습니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Reference]
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta3/

 

 

 

+ Recent posts