본문 바로가기

Kubernetes

Cloud provider Managed K8s Service

Managed K8s란 여러 클라우드 제공업체에서 실시하는 서비스 중 하나로 업체에서 Control Plane을 관리하고 사용자에게 Worker Node만 제공하는 것으로 관리 포인트를 업체가 상당 수 담당하여 application, service 배포에 대한 관리만 하도록 지원하는 상품


EKS의 Managed K8s Service 배포 과정

EKS VPC라는 분리된 가상 네트워크에서 Control Plane이 동작하고, 유저는 유저를 위한 VPC에 배포된 Worker Node에 application, service 배포

Kubectl을 통한 명령어는 aws eks update-kubeconfig --region us-west-2 --name eks-devstack로 생성한 config를 등록해 Control Plane의 kube api server 접근

 

Provision의 대상은 Serverless container거나 VM 위에 노드로 배포

 

EKS Anywhere에서 Tinkerbell, vsphere 등으로 BM, VM을 Provisioning 하고 Cluster API를 통해 K8s Cluster를 Provision

 


SDS의 경우

Control Plane을 위한 노드에 Namespace로 분리된 여러 Control Plane 구성 요소들을 올려서 관리

 

기반이 되는 솔루션으로 Cluster API 사용

ControlPlane provider, Infrastructure provider는 Cluster API에 포함된 기능

ControlPlane provider는 Target Cluster의 M에 해당하는 Control Plane을 provision

Infrastructure provider는 Target CLuster의 LB와 Worker node를 provision

 

SDS는 Control Plane의 관리 주체를 옮기기 위해 LB와 Control Plane Provision을 위한 Custom controller 제작

각 LB와 Control Plane 구성요소를 Management Cluster로 옮겨서 Cluster workflow에 Control Plane End point를 연결


Cluster API?

K8S의 Operator와 CRD 기능을 활용해서 Cluster를 정의하고 Machine이라 정의한 노드 구성 요소를 관리하는 솔루션

MCC에서도 해당 솔루션을 사용하여 Cluster 구성

 

다양한 환경에서 Cluster 배포를 지원

# 오픈스택에서 필요한 환경 변수
# The list of nameservers for OpenStack Subnet being created.
# Set this value when you need create a new network/subnet while the access through DNS is required.
export OPENSTACK_DNS_NAMESERVERS=<dns nameserver>
# FailureDomain is the failure domain the machine will be created in.
export OPENSTACK_FAILURE_DOMAIN=<availability zone name>
# The flavor reference for the flavor for your server instance.
export OPENSTACK_CONTROL_PLANE_MACHINE_FLAVOR=<flavor>
# The flavor reference for the flavor for your server instance.
export OPENSTACK_NODE_MACHINE_FLAVOR=<flavor>
# The name of the image to use for your server instance. If the RootVolume is specified, this will be ignored and use rootVolume directly.
export OPENSTACK_IMAGE_NAME=<image name>
# The SSH key pair name
export OPENSTACK_SSH_KEY_NAME=<ssh key pair name>
# The external network
export OPENSTACK_EXTERNAL_NETWORK_ID=<external network ID>

 

현재 실험적 기능으로 Managed Cluster Operating에 대해 소개

Operating a managed Cluster - The Cluster API Book (k8s.io)

'Kubernetes' 카테고리의 다른 글

Kubernetes EFK  (0) 2024.05.23
Kubernetes Prometheus  (0) 2024.05.23
Kubesphere Federation  (0) 2024.05.23
Kubekey를 사용한 Kubernetes, Kubesphere 배포  (0) 2024.05.23
Managed K8s & On premise K8s  (0) 2024.05.23