본문으로 건너뛰기

주요 개념

Kubernetes Engine 서비스의 주요 개념은 다음과 같습니다.

클러스터

클러스터는 Kubernetes Engine의 기본 리소스로, 컨테이너 애플리케이션을 포함한 모든 Kubernetes 객체가 클러스터에서 실행됩니다. Kubernetes Engine에서 제공하는 클러스터는 고가용성이 보장된 형태로, 카카오클라우드가 관리하는 VPC에 배포되어 관리되는 제어 영역(Control Plane)과 사용자의 VPC에 배포되어 사용자가 직접 관리할 수 있는 노드로 구성되어 있습니다. Kubernetes Engine의 클러스터 아키텍처는 다음과 같습니다.

이미지. 클러스터 아키텍처 클러스터 아키텍처

제어 영역

제어 영역은 클러스터를 관리하는 마스터 노드로 클러스터의 통합 엔드포인트 역할을 합니다. 클러스터와의 모든 상호작용은 제어 영역에 있는 Kubernetes API 서버에서 API를 호출하여 이루어집니다. HTTP, gRPC 프로토콜 혹은 Kubernetes 커맨드 라인 도구(kubectl)에서 명령어를 실행하거나, 콘솔 UI를 활용해 Kubernetes API 서버와 통신하여 클러스터를 관리할 수 있습니다. 클러스터의 제어 영역은 카카오클라우드가 관리하는 VPC에 배포되어 관리되며, 사용자에게는 엔드포인트만 노출됩니다.

노드

컨테이너 애플리케이션이 실행되는 서버를 노드 혹은 워커 노드라고 합니다. 클러스터는 하나 이상의 노드로 구성되며, 이 노드는 Virtual Machine 서비스에서 제공되는 VM 인스턴스입니다. Kubernetes Engine 서비스에서 클러스터를 생성할 때 사용자는 직접 노드 풀을 만들 수 있습니다. 이때 생성된 노드 풀의 조건에 따라 노드가 자동으로 생성되며, 개별 노드는 사용자가 지정한 VPC의 특정 서브넷에서 실행됩니다.

노드는 컨테이너 애플리케이션을 실행하는데 필요한 리소스와 서비스를 지원하며, 클러스터의 워커 노드 역할을 수행하는 데 필요한 쿠버네티스 노드 에이전트(kubelet)가 포함됩니다. 쿠버네티스 노드 에이전트(kubelet)는 제어 영역과 통신하여 제어 영역이 노드에 컨테이너 스케줄링을 할 수 있도록 합니다.

노드 풀

노드 풀은 동일한 인스턴스 유형을 가지는 노드 그룹이며, Kubernetes Engine에서는 노드를 노드 풀 단위로 관리합니다. 클러스터를 만들 때 생성하는 노드 풀이 최초의 노드 풀이 됩니다. 이후 다른 인스턴스 유형을 가지는 추가 노드 풀을 클러스터에 추가할 수 있습니다. 노드 풀의 각 노드에는 노드 풀의 이름을 값으로 가지는 kakaoi.io/kke-nodepool이라는 Kubernetes 노드 레이블이 설정되어 있습니다.

  • 노드 풀 설정에서 노드 수를 조절하여 클러스터에서의 노드 풀 크기를 조절할 수 있으며, 노드 풀에서 특정 노드만 삭제하는 것은 불가능합니다.
  • 초기 노드 풀 생성 시 클러스터에 설정된 최신 Kubernetes 버전을 선택합니다. 이후 사용자는 각 노드 풀을 독립적으로 업데이트하고 관리할 수 있습니다.

CNI

Kubernetes Engine에서 사용할 수 있는 CNI (Container Network Interface)를 지원합니다. CNI는 Kubernetes 네트워크 통신을 담당하는 표준 인터페이스로, 클러스터에서 실행 중인 노드와 파드 네트워크의 구성 및 통신을 관리합니다. 카카오클라우드의 Kubernetes Engine은 CalicoCilium CNI 플러그인을 지원하며, 클러스터 생성 시 선택한 CNI 플러그인이 클러스터와 함께 설치됩니다. CNI 플러그인을 직접 선택할 수 있어 네트워크를 사용자의 서비스 환경에 맞게 더욱 효율적으로 이용할 수 있습니다.

안내

클러스터에서 사용하는 CNI는 최초 생성 이후 변경할 수 없습니다.

IAM 역할 관리

Kubernetes Engine의 IAM 역할 관리는 역할 기반 액세스 제어(Role-Based Access Control, RBAC)를 따르며, IAM의 프로젝트 역할과 연계하여 클러스터 리소스를 관리합니다. 따라서 프로젝트 내 권한을 가진 사용자는 프로젝트와 프로젝트 내 클러스터 리소스를 관리할 수 있습니다. 제품 내 모든 리소스는 프로젝트 하위로 생성되어 관리됩니다. 프로젝트 권한은 프로젝트 관리자(Admin), 프로젝트 멤버(Member), 프로젝트 리더(Reader) 로 구분되며, 프로젝트 권한이 있는 사용자는 하위의 모든 리소스를 생성하고 관리할 수 있습니다.

IAM 권한프로젝트 관리자(Admin)프로젝트 멤버(Member)프로젝트 리더(Reader)
프로젝트 멤버 관리  ✓                                        
클러스터 생성  
클러스터 삭제  
클러스터 설정  
클러스터 조회  
노드 풀 추가  
노드 풀 삭제  
노드 풀 설정  
노드 풀 조회  
노드 삭제  
노드 조회  

Kubernetes RBAC

Kubernetes는 클러스터 내에서 세분화된 역할을 만들 수 있는 RBAC 지원 기능을 지원하며, Kubernetes Engine에서도 이 기능을 사용할 수 있습니다. Kubernetes RBAC에 대한 자세한 설명은 Kubernetes 레퍼런스에서 확인하시기 바랍니다.

리소스 상태 정보

Kubernetes Engine에서 상태를 확인할 수 있는 리소스는 클러스터, 노드 풀, 노드입니다. 리소스별 상태 정보는 다음과 같습니다.

클러스터 생명주기 및 상태

이미지. 클러스터 생명주기 클러스터의 생명주기

클러스터 상태설명
Provisioned클러스터 프로비저닝 완료
Pending클러스터 프로비저닝 준비 중
Provisioning클러스터 프로비저닝 중
Deleting클러스터 삭제 중
Failed사용자의 개입이 필요한 실패 상태

노드 풀 생명주기 및 상태

이미지. 클러스터 생명주기 노드 풀 생명주기

노드 풀 상태설명
Running노드 풀 정상 실행 중 (노드 상태와는 무관)
Running (Scheduling Disable)노드 풀의 모든 노드가 스케줄링 차단된 상태
Updating노드 풀 설정 변경 중
ScalingUp노드 개수 확장 중
ScalingDown노드 개수 축소 중
Deleting노드 풀 삭제 중
Failed사용자의 개입이 필요한 실패 상태

노드 생명주기 및 상태

이미지. 클러스터 생명주기 노드 생명주기

노드 상태설명
Running노드가 준비되어 실행 중
Running (Scheduling Disable)해당 노드로 신규 스케줄링 차단된 상태 (이미 할당되어 실행 중인 파드와는 무관)
Provisioned노드 프로비저닝 완료
Deleted노드 삭제 완료
Pending노드 프로비저닝 준비 중
Provisioning노드 프로비저닝 중
Deleting노드 삭제 중
Failed사용자의 개입이 필요한 실패 상태

클러스터/노드 풀 생성 시 자동 생성 리소스

Kubernetes Engine에서 클러스터 혹은 노드 풀 생성 시 리소스는 자동 생성됩니다. 클러스터 삭제 시 리소스도 같이 삭제됩니다.

클러스터/노드 풀 생성 시 자동 생성 리소스
유형설명
인스턴스노드로 사용되는 VM 인스턴스
볼륨노드로 사용되는 VM 인스턴스에서 사용하거나 NFS Client Provisioner로 생성한 모든 볼륨
보안 그룹노드에 적용되는 보안 그룹
주의

자동 생성된 리소스(인스턴스, 볼륨, 보안 그룹)는 이름 변경, 삭제 등의 설정 정보를 변경할 수 없습니다. 관련 리소스의 정보가 변경되면 Kubernetes Engine 서비스가 정상적으로 제공되기 어려우니, 주의하시기 바랍니다.

지원 정보

Kubernetes Engine 서비스에서는 최신 Kubernetes 버전을 안정화 및 테스트 후 업데이트를 제공합니다.

지원 Kubernetes 버전

Kubernetes Engine은 최신 Kubernetes 버전을 안정화 및 테스트 후 제공합니다. 최신 버전 출시 시 클러스터 업데이트를 참고하여 업데이트하시기 바랍니다.

Kubernetes 버전Kubernetes Engine 지원 시작일클러스터 신규 생성생성된 클러스터 사용
1.28       2024년 5월 28일        가능        가능
1.272024년 3월 18일가능가능
1.262023년 8월 16일가능가능
1.252023년 8월 16일불가능가능
1.242023년 2월 1일불가능가능
1.232022년 7월 7일불가능가능
1.222022년 7월 7일불가능가능

지원 노드 이미지

Kubernetes Engine에서 제공하는 워커 노드 이미지는 Ubuntu 기반이며, Kubernetes 버전에 최적화된 OS 이미지를 제공합니다. 최신 노드 이미지 출시 시 노드 업데이트를 참고하여 노드 이미지를 업데이트하시기 바랍니다.

지원 인스턴스

Kubernetes Engine에서 노드로 사용할 수 있는 인스턴스는 Virtual Machine 서비스에서 제공하는 인스턴스 유형과 동일합니다. 인스턴스 유형에 대한 자세한 설명은 인스턴스 유형을 참고하시기 바랍니다.