본문으로 건너뛰기

Kubespray Control Plane HA endpoint 구성

kube-apiserver HA endpoint

LoadBalancer(LB)에 따른 endpoint

typekube_control_planenot kube_control_planeexternal
Local LB(default)https://0.0.0.0:pohttps://localhost:llbpohttps://kcp[0].access_ip:po
Local LB(default) + cbiphttps://cbip:po
https://localhost:llbpo
https://localhost:llbpohttps://kcp[0].access_ip:po
Local LB + 사용자 정의 네트워크https://0.0.0.0:pohttps://localhost:llbpohttps://user_defined
External LBhttps://0.0.0.0:pohttps://lb:lbpohttps://lb:lbpo
LB 없음https://0.0.0.0:pohttps://kcp[0].access_ip:pohttps://kcp[0].access_ip:po
  • kcp: kube_control_plane
  • cbip: kube_apiserver_bind_address(role)
  • po: kube_apiserver_port
  • llbpo: loadbalancer_apiserver_port
  • lb: apiserver_loadbalancer_domain_name
  • lbpo: loadbalancer_apiserver.port
정보

Local LB + 사용자 정의 네트워크는 External LB 등 사용자가 정의한 네트워크를 통해 kube-apiserver에 접근 하는경우입니다. Kubespray는 특정 사례가 아니라면 이 경우는 사용하지 않는다고 간주합니다.

Local LB

kube_control_plane이 아닌 각 Node에는 Local LB가 설치되고, Local LB는 kube-apiserver에 대한 요청을 분산시킵니다. loadbalancer_apiserver를 설정하지 않았다면, nginx를 사용한 Local LB가 기본으로 활성화됩니다.

  • group_vars
    • all
      • all.yml
        • loadbalancer_apiserver_localhost: true
        • loadbalancer_apiserver_type: nginx|haproxy
        • loadbalancer_apiserver_port: 6443

사용자 정의 네트워크

사용자가 구성한 네트워크가 있는 경우 외부에 노출되는 IP 또는 도메인을 kube-apiserver 인증서의 Subject Alternative Name(SAN) 리스트에 추가해야 합니다.

  • group_vars
    • k8s_cluster
      • k8s-cluster.yml
        • supplementary_addresses_in_ssl_keys: [<ip|domain>]

클러스터가 이미 생성된 후에 변경하는 경우 아래 명령어를 사용하여 변경할 수 있습니다.

ansible-playbook -i <inventory> -b upgrade-cluster.yml \
--tags master

작업이 완료된 후에 kubeadm-config ConfigMap을 확인하여 SAN 리스트가 변경되었는지 확인합니다.

kubectl get configmap -n kube-system kubeadm-config -o jsonpath='{.data.ClusterConfiguration}'

External LB

  • group_vars
    • all
      • loadbalancer_apiserver_localhost: false
      • apiserver_loadbalancer_domain_name: <domain>
      • loadbalancer_apiserver.address: <ip>
      • loadbalancer_apiserver.port: 6443